Questa documentazione è stata archiviata e non viene gestita.

Classe Binding

Aggiornamento: novembre 2007

Contiene gli elementi di associazione che specificano i protocolli, i trasporti e i codificatori di messaggi utilizzati per la comunicazione tra client e servizi.

Spazio dei nomi:  System.ServiceModel.Channels
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

public abstract class Binding : IDefaultCommunicationTimeouts
public abstract class Binding implements IDefaultCommunicationTimeouts
public abstract class Binding implements IDefaultCommunicationTimeouts

Rappresenta un insieme 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 un insieme 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. Dato che per ogni associazione è necessaria una codifica, se non ne viene specificata nessuna, Windows Communication Foundation (WCF) ne aggiunge una 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

Protezione

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, personalizzato

Trasporto

TCP, named pipe, HTTP, HTTPS, MSMQ, personalizzato

Ogni elemento di associazione fornisce la specifica per la creazione 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 è specificato nessun nome o spazio dei nomi, WCF aggiunge automaticamente valori predefiniti. Il nome predefinito è null e lo spazio dei nomi predefinito è 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 ulteriori informazioni, vedere la classe CustomBinding.

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();
}


Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Windows Vista, Windows XP SP2, Windows Server 2003, Windows CE, Windows Mobile per Smartphone, Windows Mobile per Pocket PC

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0

.NET Compact Framework

Supportato in: 3.5
Mostra: