CustomBinding 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.
Definisce un'associazione da un elenco di elementi di associazione.
public ref class CustomBinding : System::ServiceModel::Channels::Binding
public class CustomBinding : System.ServiceModel.Channels.Binding
[System.Windows.Markup.ContentProperty("Elements")]
public class CustomBinding : System.ServiceModel.Channels.Binding
type CustomBinding = class
inherit Binding
[<System.Windows.Markup.ContentProperty("Elements")>]
type CustomBinding = class
inherit Binding
Public Class CustomBinding
Inherits Binding
- Ereditarietà
- Attributi
Esempio
Nell'esempio seguente viene illustrato come creare un oggetto CustomBinding utilizzando ReliableSessionBindingElement e HttpTransportBindingElement
Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
// Create a custom binding that contains two binding elements.
ReliableSessionBindingElement reliableSession = new ReliableSessionBindingElement();
reliableSession.Ordered = true;
HttpTransportBindingElement httpTransport = new HttpTransportBindingElement();
httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
CustomBinding binding = new CustomBinding(reliableSession, httpTransport);
// Add an endpoint using that binding.
serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, "");
// Add a MEX endpoint.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri("http://localhost:8001/servicemodelsamples");
serviceHost.Description.Behaviors.Add(smb);
// 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();
}
Dim baseAddress As New Uri("http://localhost:8000/servicemodelsamples/service")
' Create a ServiceHost for the CalculatorService type and provide the base address.
Using serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)
' Create a custom binding that contains two binding elements.
Dim reliableSession As New ReliableSessionBindingElement()
reliableSession.Ordered = True
Dim httpTransport As New HttpTransportBindingElement()
httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous
httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
Dim binding As New CustomBinding(reliableSession, httpTransport)
' Add an endpoint using that binding.
serviceHost.AddServiceEndpoint(GetType(ICalculator), binding, "")
' Add a MEX endpoint.
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
smb.HttpGetUrl = New Uri("http://localhost:8001/servicemodelsamples")
serviceHost.Description.Behaviors.Add(smb)
' 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()
End Using
Commenti
Usare un'associazione personalizzata quando una delle associazioni fornite dal sistema non soddisfa i requisiti del servizio. Un'associazione personalizzata potrebbe essere usata, ad esempio, per abilitare l'uso di un nuovo trasporto o di un nuovo codificatore a un endpoint del servizio.
Un'associazione personalizzata viene costruita usando uno dei CustomBinding da una raccolta di elementi di associazione in uno stack in un ordine specifico:
All'inizio si trova una classe TransactionFlowBindingElement facoltativa che consente la propagazione delle transazioni.
Quindi una classe ReliableSessionBindingElement facoltativa che fornisce una sessione e un meccanismo di ordinamento come definito nella specifica WS-ReliableMessaging. Questa nozione di sessione può attraversare SOAP e può trasportare intermediari.
Segue un elemento di associazione di sicurezza facoltativo che fornisce funzionalità di sicurezza quali, ad esempio, autorizzazione, autenticazione, protezione e riservatezza. Gli elementi di associazione di sicurezza seguenti sono forniti da Windows Communication Foundation (WCF):
Seguono i modelli di messaggio facoltativi specificati dagli elementi di associazione:
Quindi gli elementi di associazione di trasporto facoltativi di aggiornamenti/helper:
Segue quindi un elemento di associazione obbligatorio di codifica dei messaggi. È possibile usare un trasporto proprio o una delle associazioni di codifica del messaggio seguenti:
Segue infine un elemento di trasporto obbligatorio. È possibile usare il proprio trasporto o usare uno degli elementi di associazione di trasporto forniti da Windows Communication Foundation (WCF):
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, versioni di MSMQ, personalizzato | Sì |
È inoltre possibile definire elementi di associazione personalizzati e inserirli tra i livelli appena elencati.
Per una discussione su come usare un'associazione personalizzata per modificare un'associazione fornita dal sistema, vedere Procedura: Personalizzare un'associazione System-Provided.
Nota
Quando si chiama un servizio WCF compilato con .NET Framework 4.0 o versione successiva da un'applicazione client WCF compilata con .NET Framework 3.5 o versioni precedenti, il file di configurazione generato da svcutil.exe o l'aggiunta di un riferimento al servizio da Visual Studio conterrà l'attributo di validità nella configurazione dell'associazione. Questo attributo non viene riconosciuto dal runtime di .NET Framework 3.5 e l'applicazione genererà un ConfigurationErrorsException con il messaggio "Validità dell'attributo non riconosciuto". Per aggirare questo problema, rimuovere l'attributo di validità dalla configurazione di associazione.
Costruttori
CustomBinding() |
Inizializza una nuova istanza della classe CustomBinding. |
CustomBinding(Binding) |
Inizializza una nuova istanza della classe CustomBinding dai valori di un'associazione specificata. |
CustomBinding(BindingElement[]) |
Inizializza una nuova istanza della classe CustomBinding da una matrice di elementi di associazione. |
CustomBinding(IEnumerable<BindingElement>) |
Inizializza una nuova istanza della classe CustomBinding con gli elementi di associazione da un stack dei canali completo. |
CustomBinding(String) |
Inizializza una nuova istanza della classe CustomBinding. |
CustomBinding(String, String, BindingElement[]) |
Inizializza una nuova istanza della classe CustomBinding da una matrice di elementi di associazione con un nome e uno spazio dei nomi specificati. |
Proprietà
CloseTimeout |
Ottiene o imposta l'intervallo di tempo fornito per la chiusura di una connessione prima che il trasporto generi un'eccezione. (Ereditato da Binding) |
Elements |
Ottiene gli elementi di associazione dell'associazione personalizzata. |
MessageVersion |
Ottiene la versione del messaggio utilizzata dai client e dai servizi configurati con l'associazione. (Ereditato da Binding) |
Name |
Ottiene o imposta il nome dell'associazione. (Ereditato da Binding) |
Namespace |
Ottiene o imposta lo spazio dei nomi XML dell'associazione. (Ereditato da Binding) |
OpenTimeout |
Ottiene o imposta l'intervallo di tempo fornito per l'apertura di una connessione prima che il trasporto generi un'eccezione. (Ereditato da Binding) |
ReceiveTimeout |
Ottiene o imposta l'intervallo di tempo durante il quale una connessione rimane inattiva, senza ricevere messaggi dell'applicazione, prima di essere rilasciata. (Ereditato da Binding) |
Scheme |
Ottiene lo schema URI per il trasporto utilizzato dall'associazione personalizzata. |
SendTimeout |
Ottiene o imposta l'intervallo di tempo fornito per il completamento di un'operazione di scrittura prima che il trasporto generi un'eccezione. (Ereditato da Binding) |
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. (Ereditato da Binding) |
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. (Ereditato da Binding) |
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. (Ereditato da Binding) |
BuildChannelListener<TChannel>(Object[]) |
Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate. (Ereditato da Binding) |
BuildChannelListener<TChannel>(Uri, BindingParameterCollection) |
Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate. (Ereditato da Binding) |
BuildChannelListener<TChannel>(Uri, Object[]) |
Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate. (Ereditato da Binding) |
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. (Ereditato da Binding) |
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. (Ereditato da Binding) |
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. (Ereditato da Binding) |
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. (Ereditato da Binding) |
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. (Ereditato da Binding) |
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. (Ereditato da Binding) |
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. (Ereditato da Binding) |
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. (Ereditato da Binding) |
CreateBindingElements() |
Restituisce una raccolta generica degli elementi di associazione dell'associazione personalizzata. |
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. (Ereditato da Binding) |
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. (Ereditato da Binding) |
ShouldSerializeNamespace() |
Indica se lo spazio dei nomi dell'associazione deve essere serializzato. (Ereditato da Binding) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |