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 usati 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 vengono compilati, in modo coerente, in una channel factory nel client e in un listener di canale nel servizio. Un'associazione contiene una raccolta di elementi di associazione che corrispondono a canali di protocollo, canali di trasporto e codificatori di messaggi. Possono essere presenti un numero qualsiasi di elementi di associazione per i canali del protocollo, ma uno e un solo elemento di associazione per ogni codificatore di trasporto e messaggio. In un'associazione sono in genere presenti sei livelli di elementi di associazione. Sono necessari solo gli elementi di associazione di trasporto e codifica nella parte inferiore dello stack. Poiché per ogni associazione è necessaria una codifica, se non viene specificata una codifica, Windows Communication Foundation (WCF) aggiunge automaticamente una codifica predefinita. Il valore predefinito è Text/XML per i trasporti HTTP e HTTPS e Binary per altri trasporti.
La tabella seguente riepiloga le opzioni per ogni livello.
| Strato | Options | Obbligatorio |
|---|---|---|
| Flusso delle transazioni | TransactionFlowBindingElement | No |
| Affidabilità | ReliableSessionBindingElement | No |
| sicurezza | Symmetric, Asymmetric, Transport-Level | No |
| Modifica forma | CompositeDuplexBindingElement | No |
| Aggiornamenti del trasporto | Flusso SSL, flusso di Windows, resolver peer | No |
| Codifica | Testo, Binario, MTOM, Personalizzato | Sì |
| Trasporto | TCP, Named Pipes, 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 lo stack della channel factory viene costruito, ad esempio, è presente una channel factory nello stack per ogni elemento di associazione nell'associazione. Lo stesso tipo di mapping si applica ai listener di canale nello stack nel servizio. La coerenza nel client e nel servizio è fondamentale per stabilire la connessione basata su 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 questi canali possono quindi inviare e ricevere i messaggi usati per comunicare.
Ogni istanza di un oggetto Binding ha un Name oggetto e Namespace che insieme lo identificano in modo univoco nei metadati del servizio. Se non viene specificato alcun nome o spazio dei nomi, WCF aggiunge automaticamente i valori predefiniti. Il nome predefinito è null e lo spazio dei nomi predefinito è http://tempuri.org/. Questo nome utente per l'associazione è distinto dalla specifica del nome del protocollo, specificato dalla Scheme proprietà . Se si desidera aggiungere altre associazioni HTTP, ad esempio, è possibile denominarle qualsiasi elemento desiderato e impostare tutti i relativi schemi su "http". Non esiste un'applicazione o un invio del computer intrinseco basato su Scheme. Quindi si evita il problema comune di non essere in grado di registrare gestori aggiuntivi per protocolli noti. È anche possibile usare facilmente più versioni di un binding side-by-side assegnando a ogni versione un nome diverso.
La Binding classe implementa l'interfaccia IDefaultCommunicationTimeouts per attenuare gli attacchi Denial of Service (DOS) che si basano sull'associazione delle risorse per intervalli di tempo prolungati. L'implementazione specifica i valori di 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 di messaggi. Le proprietà usate per ottenere e impostare questi timeout e le relative operazioni di valori predefiniti sono riepilogate nella tabella seguente.
| Timeout, proprietà | Valore predefinito |
|---|---|
| OpenTimeout | 1 minuto |
| CloseTimeout | 1 minuto |
| SendTimeout | 1 minuto |
| ReceiveTimeout | 10 minuti |
Quando si crea un'associazione ereditando da Binding, è necessario eseguire l'override di CreateBindingElements.
Inoltre, è possibile definire elementi di associazione personalizzati e inserirli tra uno dei livelli definiti nella tabella precedente. Per altre informazioni, vedere la classe CustomBinding.
Costruttori
| Nome | Descrizione |
|---|---|
| Binding() |
Inizializza una nuova istanza della Binding classe con un nome e uno spazio dei nomi predefiniti. |
| Binding(String, String) |
Inizializza una nuova istanza della Binding classe da un'associazione specificata del servizio. |
Proprietà
| Nome | Descrizione |
|---|---|
| CloseTimeout |
Ottiene o imposta l'intervallo di tempo specificato 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 specificato per l'apertura di una connessione prima che il trasporto generi un'eccezione. |
| ReceiveTimeout |
Ottiene o imposta l'intervallo di tempo in cui una connessione può rimanere inattiva, durante la quale non vengono ricevuti messaggi dell'applicazione, prima che venga eliminata. |
| Scheme |
Se implementato in una classe derivata, imposta lo schema URI che specifica il trasporto utilizzato dalle factory del canale e del listener compilate dalle associazioni. |
| SendTimeout |
Ottiene o imposta l'intervallo di tempo specificato per il completamento di un'operazione di scrittura prima che il trasporto generi un'eccezione. |
Metodi
| Nome | Descrizione |
|---|---|
| BuildChannelFactory<TChannel>(BindingParameterCollection) |
Compila lo stack channel factory nel client che crea un tipo di canale specificato e che soddisfa le funzionalità specificate da una raccolta di parametri di associazione. |
| BuildChannelFactory<TChannel>(Object[]) |
Compila lo stack channel factory nel client che crea un tipo di canale specificato 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 di canale specificato e che soddisfa le funzionalità specificate da una raccolta di parametri di associazione. |
| BuildChannelListener<TChannel>(Object[]) |
Compila il listener del canale nel servizio che accetta un tipo di canale specificato e che soddisfa le funzionalità specificate. |
| BuildChannelListener<TChannel>(Uri, BindingParameterCollection) |
Compila il listener del canale nel servizio che accetta un tipo di canale specificato e che soddisfa le funzionalità specificate. |
| BuildChannelListener<TChannel>(Uri, Object[]) |
Compila il listener del canale nel servizio che accetta un tipo di canale specificato e che soddisfa le funzionalità specificate. |
| BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection) |
Compila il listener del canale nel servizio che accetta un tipo di canale specificato e che soddisfa le funzionalità specificate. |
| BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection) |
Compila il listener del canale nel servizio che accetta un tipo di canale specificato e che soddisfa le funzionalità specificate. |
| BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[]) |
Compila il listener del canale nel servizio che accetta un tipo di canale specificato e che soddisfa le funzionalità specificate. |
| BuildChannelListener<TChannel>(Uri, String, Object[]) |
Compila il listener del canale nel servizio che accetta un tipo di canale specificato e che soddisfa le funzionalità specificate. |
| CanBuildChannelFactory<TChannel>(BindingParameterCollection) |
Restituisce un valore che indica se l'associazione corrente può compilare uno stack channel factory nel client che soddisfa la raccolta di parametri di associazione specificati. |
| CanBuildChannelFactory<TChannel>(Object[]) |
Restituisce un valore che indica se l'associazione corrente può compilare uno stack 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 di listener del canale nel servizio che soddisfa la raccolta di parametri di associazione specificati. |
| CanBuildChannelListener<TChannel>(Object[]) |
Restituisce un valore che indica se l'associazione corrente può compilare uno stack di listener del canale nel servizio che soddisfa i criteri specificati in una matrice di oggetti. |
| CreateBindingElements() |
Quando sottoposto a override in una classe derivata, crea una raccolta contenente 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) |
Restituisce un oggetto tipizzato richiesto, se presente, dal livello appropriato nello stack di binding. |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ShouldSerializeName() |
Restituisce un valore che indica se il nome dell'associazione deve essere serializzato. |
| ShouldSerializeNamespace() |
Restituisce un valore che indica se lo spazio dei nomi dell'associazione deve essere serializzato. |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |