Binding Classe

Definizione

Contiene gli elementi di associazione che specificano i protocolli, i trasporti e i codificatori di messaggi utilizzati per la comunicazione tra client e servizi.Contains the binding elements that specify the protocols, transports, and message encoders used for communication between clients and services.

public ref class Binding abstract : System::ServiceModel::IDefaultCommunicationTimeouts
public abstract class Binding : System.ServiceModel.IDefaultCommunicationTimeouts
type Binding = class
    interface IDefaultCommunicationTimeouts
Public MustInherit Class Binding
Implements IDefaultCommunicationTimeouts
Ereditarietà
Binding
Derivato
Implementazioni

Esempi

BasicHttpBinding binding = new BasicHttpBinding();

binding.Name = "binding1";

Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
Uri address = new Uri("http://localhost:8000/servicemodelsamples/service/calc");

// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
    serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, address);

    // Open the ServiceHostBase to create listeners and start listening for messages.
    serviceHost.Open();

    // The service can now be accessed.
    Console.WriteLine("The service is ready.");
    Console.WriteLine("Press <ENTER> to terminate service.");
    Console.WriteLine();
    Console.ReadLine();
    // Close the ServiceHostBase to shutdown the service.
    serviceHost.Close();
}

Commenti

Rappresenta una raccolta di elementi di associazione, ognuno dei quali descrive un aspetto del modo in cui un endpoint comunica con altri endpoint e che sono costruiti in modo coerente in una channel factory nel client e in un listener del canale nel servizio.Represents a collection of binding elements, each of which describes an aspect of how an endpoint communicates with other endpoints and that are built, consistently, into a channel factory on the client and into a channel listener on the service. Un'associazione contiene una raccolta di elementi di associazione che corrispondono a canali del protocollo, canali di trasporto e codificatori di messaggi.A binding contains a collection of binding elements that correspond to protocol channels, transport channels, and message encoders. Per i canali del protocollo può esistere un numero qualsiasi di elementi di associazione, ma un unico elemento di associazione per ogni trasporto e codificatore di messaggi.There can be any number of binding elements for protocol channels but one and only one binding element for each the transport and message encoder. In un'associazione, normalmente sono presenti sei livelli di elementi di associazione.There are commonly six layers of binding elements in a binding. Sono obbligatori solo gli elementi di associazione, di trasporto e di codifica in fondo allo stack.Only the transport and encoding binding elements at the bottom of the stack are required. Poiché per ogni associazione è necessaria una codifica, se non si specifica una codifica, Windows Communication Foundation (WCF) aggiunge automaticamente una codifica predefinita.Because an encoding is required for each binding, if an encoding is not specified, Windows Communication Foundation (WCF) adds a default encoding for you. L'impostazione predefinita è il testo/XML per i trasporti HTTP e HTTPS e binario per gli altri trasporti.The default is Text/XML for the HTTP and HTTPS transports, and Binary for other transports.

Nella tabella seguente viene fornito un riepilogo delle opzioni per ogni livello.The following table summarizes the options for each layer.

LivelloLayer OpzioniOptions ObbligatorioRequired
Flusso transazioniTransaction Flow TransactionFlowBindingElement NoNo
AffidabilitàReliability ReliableSessionBindingElement NoNo
SicurezzaSecurity Simmetrico, asimmetrico, livello di trasportoSymmetric, Asymmetric, Transport-Level NoNo
Cambio di formaShape Change CompositeDuplexBindingElement NoNo
Aggiornamenti del trasportoTransport Upgrades Flusso SSL, flusso di Windows, resolver PeerSSL stream, Windows stream, Peer Resolver NoNo
CodificaEncoding Testo, binario, MTOM, personalizzataText, Binary, MTOM, Custom Yes
TrasportoTransport TCP, named pipe, HTTP, HTTPS, MSMQ, personalizzatoTCP, Named Pipes, HTTP, HTTPS, MSMQ, Custom Yes

Ogni elemento di associazione fornisce la specifica per la compilazione di una channel factory nel client e di un listener del canale nel servizio.Each binding element provides the specification for building a channel factory on the client and a channel listener on the service. Quando, ad esempio, viene creato lo stack della channel factory, nello stack esiste una channel factory per ogni elemento di associazione nell'associazione.When the channel factory stack is constructed, for example, there is one channel factory in the stack for each binding element in the binding. Lo stesso tipo di mapping si applica ai listener del canale nello stack nel servizio.The same sort of mapping applies to the channel listeners in the stack on the service. La coerenza nel client e nel servizio è fondamentale per stabilire la connessione basata sul canale tra questi endpoint.Consistency on the client and service is critical for establishing the channel-based connection between these endpoints. Ogni factory e listener, a sua volta, elabora l'invio e l'accettazione dei canali corrispondenti nello stack di canali che li connette e tali canali possono quindi inviare e ricevere i messaggi utilizzati per comunicare.Each factory and listener, in turn, processes the sending and accepting of the corresponding channels in the channel stack that connects them, and these channels can then send and receive the messages used to communicate.

Ogni istanza di un oggetto della classe Binding presenta le proprietà Name e Namespace che, quando utilizzate insieme, lo identificano in modo univoco nei metadati del servizio.Each instance of a Binding has a Name and Namespace that together uniquely identify it in the metadata of the service. Se non viene specificato alcun nome o spazio dei nomi, WCF aggiunge automaticamente i valori predefiniti.If no name or namespace is specified, WCF adds a default values for you. Il nome predefinito è null e lo spazio dei nomi predefinito è http://tempuri.org/.The default name is null and the default namespace is http://tempuri.org/. Questo nome utente dell'associazione è diverso dalla specifica del nome del protocollo definita dalla proprietà Scheme.This user name for the binding is distinct from the specification of the protocol name, which is specified by the Scheme property. Se si desidera aggiungere più associazioni HTTP, ad esempio, è possibile scegliere come denominarle e impostare tutti gli schemi su "http."If you want to add more HTTP bindings, for example, you can name them whatever you want and set all of their schemes to "http". Nessuna applicazione o invio del computer basato su Scheme.There is no inherent application or machine dispatch based on the Scheme. Quindi si evita il problema comune di non essere in grado di registrare gestori aggiuntivi per i protocolli conosciuti.So you avoid the common problem of being unable to register additional handlers for well-known protocols. È inoltre possibile utilizzare facilmente più versioni di un'associazione side-by-side, assegnando a ogni versione un nome diverso.You can also easily work with multiple versions of a binding side-by-side by giving each version a different name.

La classe Binding implementa l'interfaccia IDefaultCommunicationTimeouts per ridurre il rischio di attacchi di tipo Denial of Service (DoS) basati sul blocco di risorse per intervalli di tempo prolungati.The Binding class implements the IDefaultCommunicationTimeouts interface to mitigate Denial of Service (DOS) attacks that rely on tying up resources for extended intervals of time. L'implementazione specifica i valori dei timeout di comunicazione per l'apertura e la chiusura delle connessioni e per le operazioni di lettura e scrittura associate alla ricezione e all'invio dei messaggi.The implementation specifies the communication timeouts values for opening and closing connections and for the reading and writing operations associated with receiving and sending messages. Le proprietà utilizzate per ottenere e impostare i timeout e le operazioni con valori predefiniti pertinenti sono riepilogate nella tabella seguente.The properties used to get and set these timeouts and their default values operations are summarized in the following table.

Proprietà timeoutTimeout Property Valore predefinitoDefault Value
OpenTimeout 1 minuto1 minute
CloseTimeout 1 minuto1 minute
SendTimeout 1 minuto1 minute
ReceiveTimeout 10 minuti10 minutes

Quando si crea un'associazione tramite l'eredità da Binding, è necessario eseguire l'override di CreateBindingElements.When you create a binding by inheriting from Binding, you must override CreateBindingElements.

È inoltre possibile definire elementi di associazione personali e inserirli tra i livelli definiti nella tabella precedente.In addition, you can define your own binding elements and insert them between any of the defined layers in the preceding table. Per altre informazioni, vedere la classe CustomBinding.For more information, see the CustomBinding class.

Costruttori

Binding()

Inizializza una nuova istanza della classe Binding con il nome e lo spazio dei nomi predefiniti.Initializes a new instance of the Binding class with a default name and namespace.

Binding(String, String)

Inizializza una nuova istanza della classe Binding dall'associazione specificata del servizio.Initializes a new instance of the Binding class from a specified binding of the service.

Proprietà

CloseTimeout

Ottiene o imposta l'intervallo di tempo fornito per la chiusura di una connessione prima che il trasporto generi un'eccezione.Gets or sets the interval of time provided for a connection to close before the transport raises an exception.

MessageVersion

Ottiene la versione del messaggio utilizzata dai client e dai servizi configurati con l'associazione.Gets the message version used by clients and services configured with the binding.

Name

Ottiene o imposta il nome dell'associazione.Gets or sets the name of the binding.

Namespace

Ottiene o imposta lo spazio dei nomi XML dell'associazione.Gets or sets the XML namespace of the binding.

OpenTimeout

Ottiene o imposta l'intervallo di tempo fornito per l'apertura di una connessione prima che il trasporto generi un'eccezione.Gets or sets the interval of time provided for a connection to open before the transport raises an exception.

ReceiveTimeout

Ottiene o imposta l'intervallo di tempo durante il quale una connessione rimane inattiva, senza ricevere messaggi dell'applicazione, prima di essere rilasciata.Gets or sets the interval of time that a connection can remain inactive, during which no application messages are received, before it is dropped.

Scheme

In caso di implementazione in una classe derivata, imposta lo schema URI che specifica il trasporto utilizzato dalle channel factory e dalle listener factory create dalle associazioni.When implemented in a derived class, sets the URI scheme that specifies the transport used by the channel and listener factories that are built by the bindings.

SendTimeout

Ottiene o imposta l'intervallo di tempo fornito per il completamento di un'operazione di scrittura prima che il trasporto generi un'eccezione.Gets or sets the interval of time provided for a write operation to complete before the transport raises an exception.

Metodi

BuildChannelFactory<TChannel>(BindingParameterCollection)

Compila lo stack della channel factory nel client che crea un tipo specificato di canale e che soddisfa le funzionalità specificate da una raccolta di parametri di associazione.Builds the channel factory stack on the client that creates a specified type of channel and that satisfies the features specified by a collection of binding parameters.

BuildChannelFactory<TChannel>(Object[])

Compila lo stack della channel factory nel client che crea un tipo specificato di canale e che soddisfa le funzionalità specificate da una matrice di oggetti.Builds the channel factory stack on the client that creates a specified type of channel and that satisfies the features specified by an object array.

BuildChannelListener<TChannel>(BindingParameterCollection)

Compila il listener del canale nel servizio che accetta un tipo specificato di canale e che soddisfa le funzionalità specificate da una raccolta di parametri di associazione.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified by a collection of binding parameters.

BuildChannelListener<TChannel>(Object[])

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, Object[])

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, String, Object[])

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

CanBuildChannelFactory<TChannel>(BindingParameterCollection)

Restituisce un valore che indica se l'associazione corrente può compilare uno stack della channel factory nel client che soddisfa la raccolta dei parametri di associazione specificati.Returns a value that indicates whether the current binding can build a channel factory stack on the client that satisfies the collection of binding parameters specified.

CanBuildChannelFactory<TChannel>(Object[])

Restituisce un valore che indica se l'associazione corrente può compilare uno stack della channel factory nel client che soddisfa i requisiti specificati da una matrice di oggetti.Returns a value that indicates whether the current binding can build a channel factory stack on the client that satisfies the requirements specified by an object array.

CanBuildChannelListener<TChannel>(BindingParameterCollection)

Restituisce un valore che indica se l'associazione corrente può compilare uno stack del channel listener nel servizio che soddisfa la raccolta dei parametri di associazione specificati.Returns a value that indicates whether the current binding can build a channel listener stack on the service that satisfies the collection of binding parameters specified.

CanBuildChannelListener<TChannel>(Object[])

Restituisce un valore che indica se l'associazione corrente può compilare uno stack del channel listener nel servizio che soddisfa i criteri specificati in una matrice di oggetti.Returns a value that indicates whether the current binding can build a channel listener stack on the service that satisfies the criteria specified in an array of objects.

CreateBindingElements()

In caso di override in una classe derivata, crea una raccolta che contiene gli elementi di associazione che fanno parte dell'associazione corrente.When overridden in a derived class, creates a collection that contains the binding elements that are part of the current binding.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetProperty<T>(BindingParameterCollection)

Se presente, restituisce un oggetto tipizzato richiesto dal livello appropriato nello stack dell'associazione.Returns a typed object requested, if present, from the appropriate layer in the binding stack.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ShouldSerializeName()

Indica se il nome dell'associazione deve essere serializzato.Returns whether the name of the binding should be serialized.

ShouldSerializeNamespace()

Indica se lo spazio dei nomi dell'associazione deve essere serializzato.Returns whether the namespace of the binding should be serialized.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Si applica a