ReliableSessionBindingElement Classe

Definizione

Rappresenta l'elemento di associazione che può produrre i canali di invio e ricezione necessari per una sessione affidabile tra endpoint.

public ref class ReliableSessionBindingElement sealed : System::ServiceModel::Channels::BindingElement
public ref class ReliableSessionBindingElement sealed : System::ServiceModel::Channels::BindingElement, System::ServiceModel::Description::IPolicyExportExtension
public sealed class ReliableSessionBindingElement : System.ServiceModel.Channels.BindingElement
public sealed class ReliableSessionBindingElement : System.ServiceModel.Channels.BindingElement, System.ServiceModel.Description.IPolicyExportExtension
type ReliableSessionBindingElement = class
    inherit BindingElement
type ReliableSessionBindingElement = class
    inherit BindingElement
    interface IPolicyExportExtension
Public NotInheritable Class ReliableSessionBindingElement
Inherits BindingElement
Public NotInheritable Class ReliableSessionBindingElement
Inherits BindingElement
Implements IPolicyExportExtension
Ereditarietà
ReliableSessionBindingElement
Implementazioni

Esempio

La classe ReliableSessionBindingElement può essere aggiunta a qualsiasi associazione personalizzata. A tal scopo è necessario utilizzare gli elementi di configurazione seguenti.

<bindings>  
    <customBinding>  
        <binding configurationName="ReliabilityHTTP">  
            <reliableSession/>  
        </binding>  
    </customBinding>  
</bindings>  

Il codice di esempio riportato di seguito illustra come utilizzare la classe ReliableSessionBindingElement nel codice.

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

Fornisce le sessioni e il recapito dei messaggi ordinato (facoltativo). Questa sessione implementata può attraversare intermediari SOAP e di trasporto.

Ogni elemento di associazione rappresenta una fase di elaborazione durante l'invio o la ricezione di messaggi. In fase di esecuzione gli elementi di associazione creano le channel factory e i listener necessari per compilare stack di canali in uscita e in ingresso richiesti per l'invio e la ricezione di messaggi. La classe ReliableSessionBindingElement fornisce un livello facoltativo nello stack che può stabilire una sessione affidabile tra endpoint e configurare il comportamento di questa sessione.

La classe ReliableSessionBindingElement viene fornita nelle associazioni standard riportate nella tabella seguente.

Binding Impostazione predefinita
NetTcpBinding Off
WSHttpBinding Off
WSDualHttpBinding On (obbligatorio)

Costruttori

ReliableSessionBindingElement()

Inizializza una nuova istanza della classe ReliableSessionBindingElement.

ReliableSessionBindingElement(Boolean)

Inizializza una nuova istanza della classe ReliableSessionBindingElement che specifica se l'ordine di recapito dei messaggi deve rispettare l'ordine di invio.

Proprietà

AcknowledgementInterval

Ottiene o imposta l'intervallo di attesa prima che un acknowledgment venga inviato da una destinazione all'origine del messaggio su canali attendibili creati dalla factory.

FlowControlEnabled

Ottiene o imposta un valore che indica se per la sessione affidabile è abilitato il controllo di flusso.

InactivityTimeout

Ottiene o imposta l'intervallo di tempo massimo per cui un servizio può rimanere inattivo prima di essere chiuso.

MaxPendingChannels

Ottiene o imposta il numero massimo di canali che possono essere in sospeso durante la sessione affidabile.

MaxRetryCount

Ottiene o imposta il numero massimo di tentativi di trasferimento di un messaggio durante la sessione affidabile.

MaxTransferWindowSize

Ottiene o imposta il numero massimo di messaggi che possono essere presenti nel buffer di invio o nel buffer di ricezione.

Ordered

Ottiene o imposta un valore che indica se il recapito dei messaggi deve rispettare l'ordine in cui i messaggi vengono inviati.

ReliableMessagingVersion

Ottiene o imposta la versione di WS-ReliableMessaging specificata dall'elemento di associazione.

Metodi

BuildChannelFactory<TChannel>(BindingContext)

Restituisce una factory che crea un canale di un tipo specificato che supporta una sessione affidabile.

BuildChannelListener<TChannel>(BindingContext)

Restituisce un listener che accetta un canale di un tipo specificato che supporta una sessione affidabile.

BuildChannelListener<TChannel>(BindingContext)

Inizializza un listener del canale per accettare canali di un tipo specificato dal contesto dell'associazione.

(Ereditato da BindingElement)
CanBuildChannelFactory<TChannel>(BindingContext)

Restituisce un valore che indica se la channel factory può essere creata per il canale e il contesto forniti che possono supportare una sessione affidabile.

CanBuildChannelListener<TChannel>(BindingContext)

Restituisce un valore che indica se il listener del canale può essere compilato per il canale e il contesto forniti che possono supportare una sessione affidabile.

CanBuildChannelListener<TChannel>(BindingContext)

Restituisce un valore che indica se l'elemento di associazione può compilare un listener per un tipo di canale specifico.

(Ereditato da BindingElement)
Clone()

Crea una copia dell'elemento di associazione della sessione affidabile 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>(BindingContext)

Ottiene una proprietà del tipo specificato dal relativo contesto di associazione.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IPolicyExportExtension.ExportPolicy(MetadataExporter, PolicyConversionContext)

Esegue il mapping delle informazioni contenute nell'elemento di associazione della sessione affidabile negli elementi WSDL che consentono a un endpoint remoto di accedere al servizio con una sessione affidabile.

Si applica a