Binding Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 | Sì |
Trasporto | TCP, named pipe, HTTP, HTTPS, MSMQ, personalizzato | Sì |
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 è null
http://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) |