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.

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

Esempio

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. Un'associazione contiene una raccolta di elementi di associazione che corrispondono a canali del protocollo, canali di trasporto e codificatori di messaggi. 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. In un'associazione, normalmente sono presenti sei livelli di elementi di associazione. Sono obbligatori solo gli elementi di associazione, di trasporto e di codifica in fondo allo stack. Poiché per ogni associazione è necessaria una codifica, se non è specificata una codifica, Windows Communication Foundation (WCF) aggiunge una codifica predefinita. L'impostazione predefinita è il testo/XML per i trasporti HTTP e HTTPS e binario per gli altri trasporti.

Nella tabella seguente viene fornito un riepilogo delle opzioni per ogni livello.

Livello Opzioni Obbligatoria
Flusso transazioni TransactionFlowBindingElement No
Affidabilità ReliableSessionBindingElement No
Security Simmetrico, asimmetrico, livello di trasporto No
Cambio di forma CompositeDuplexBindingElement No
Aggiornamenti del trasporto Flusso SSL, flusso di Windows, resolver Peer No
Codifica Testo, binario, MTOM, personalizzata
Trasporto TCP, named pipe, HTTP, HTTPS, MSMQ, personalizzato

Ogni elemento di associazione fornisce la specifica per la compilazione di una channel factory nel client e di un listener del canale nel servizio. Quando, ad esempio, viene creato lo stack della channel factory, nello stack esiste una channel factory per ogni elemento di associazione nell'associazione. Lo stesso tipo di mapping si applica ai listener del canale nello stack nel servizio. La coerenza nel client e nel servizio è fondamentale per stabilire la connessione basata sul canale tra questi endpoint. 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.

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. Se non viene specificato alcun nome o spazio dei nomi, WCF aggiunge un valore predefinito. Il nome predefinito è e lo spazio dei nomi predefinito è nullhttp://tempuri.org/. Questo nome utente dell'associazione è diverso dalla specifica del nome del protocollo definita dalla proprietà Scheme. Se si desidera aggiungere più associazioni HTTP, ad esempio, è possibile scegliere come denominarle e impostare tutti gli schemi su "http." Nessuna applicazione o invio del computer basato su Scheme. Quindi si evita il problema comune di non essere in grado di registrare gestori aggiuntivi per i protocolli conosciuti. È inoltre possibile utilizzare facilmente più versioni di un'associazione side-by-side, assegnando a ogni versione un nome diverso.

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. 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. Le proprietà utilizzate per ottenere e impostare i timeout e le operazioni con valori predefiniti pertinenti sono riepilogate nella tabella seguente.

Proprietà timeout Valore predefinito
OpenTimeout 1 minuto
CloseTimeout 1 minuto
SendTimeout 1 minuto
ReceiveTimeout 10 minuti

Quando si crea un'associazione tramite l'eredità da Binding, è necessario eseguire l'override di CreateBindingElements.

È inoltre possibile definire elementi di associazione personali e inserirli tra i livelli definiti nella tabella precedente. Per altre informazioni, vedere la classe CustomBinding.

Costruttori

Binding()

Inizializza una nuova istanza della classe Binding con il nome e lo spazio dei nomi predefiniti.

Binding(String, String)

Inizializza una nuova istanza della classe Binding dall'associazione specificata del servizio.

Proprietà

CloseTimeout

Ottiene o imposta l'intervallo di tempo fornito per la chiusura di una connessione prima che il trasporto generi un'eccezione.

MessageVersion

Ottiene la versione del messaggio utilizzata dai client e dai servizi configurati con l'associazione.

Name

Ottiene o imposta il nome dell'associazione.

Namespace

Ottiene o imposta lo spazio dei nomi XML dell'associazione.

OpenTimeout

Ottiene o imposta l'intervallo di tempo fornito per l'apertura di una connessione prima che il trasporto generi un'eccezione.

ReceiveTimeout

Ottiene o imposta l'intervallo di tempo durante il quale una connessione rimane inattiva, senza ricevere messaggi dell'applicazione, prima di essere rilasciata.

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.

SendTimeout

Ottiene o imposta l'intervallo di tempo fornito per il completamento di un'operazione di scrittura prima che il trasporto generi un'eccezione.

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.

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.

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.

BuildChannelListener<TChannel>(Object[])

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.

BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.

BuildChannelListener<TChannel>(Uri, Object[])

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.

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.

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.

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.

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.

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.

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.

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.

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.

CreateBindingElements()

In caso di override in una classe derivata, crea una raccolta che contiene gli elementi di associazione che fanno parte dell'associazione corrente.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

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

Se presente, restituisce un oggetto tipizzato richiesto dal livello appropriato nello stack dell'associazione.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ShouldSerializeName()

Indica se il nome dell'associazione deve essere serializzato.

ShouldSerializeNamespace()

Indica se lo spazio dei nomi dell'associazione deve essere serializzato.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a