<reliableSession><reliableSession>

Definiert die Einstellung für WS-Reliable Messaging.Defines setting for WS-Reliable Messaging. Wenn dieses Element einer benutzerdefinierten Bindung hinzugefügt wird, kann der resultierende Kanal ExactlyOnce-Zustellungszusicherungen unterstützen.When this element is added to a custom binding, the resulting channel can support exactly-once delivery assurances.

<system.serviceModel><system.serviceModel>
<bindings><bindings>
<customBinding><customBinding>
<binding><binding>
<ReliableSession ><reliableSession>

SyntaxSyntax

<reliableSession acknowledgementInterval="TimeSpan"  
        flowControlEnabled="Boolean"   
    inactivityTimeout="TimeSpan"  
    maxPendingChannels="Integer"  
    maxRetryCount="Integer"   
        maxTransferWindowSize="Integer"  
    reliableMessagingVersion="Default/WSReliableMessagingFebruary2005/WSReliableMessaging11"  
    ordered="Boolean" />  

Attribute und ElementeAttributes and Elements

In den folgenden Abschnitten werden Attribute sowie untergeordnete und übergeordnete Elemente beschrieben.The following sections describe attributes, child elements, and parent elements.

AttributeAttributes

AttributAttribute BeschreibungDescription
acknowledgementIntervalacknowledgementInterval Eine TimeSpan, die angibt, wie lange der Kanal maximal wartet, bis eine Bestätigung für die bis zu diesem Zeitpunkt erhaltenen Nachrichten gesendet wird.A TimeSpan that contains the maximum time interval the channel is going to wait to send an acknowledgment for messages received up to that point. Der Standardwert ist 00:00:0.2.The default is 00:00:0.2.
flowControlEnabledflowControlEnabled Eine boolescher Wert, der angibt, ob die erweiterte Flusssteuerung, eine Microsoft-spezifische Implementierung der Flusssteuerung für WS-Reliable Messaging, aktiviert ist.A Boolean value that indicates whether advanced flow control, a Microsoft-specific implementation of flow control for WS-Reliable messaging, is activated. Die Standardeinstellung ist true.The default is true.
inactivityTimeoutinactivityTimeout Eine TimeSpan, die die maximale Dauer angibt, die der Kanal dem anderen Kommunikationsteilnehmer für das ausbleibende Senden von Nachrichten einräumt, bevor im Kanal ein Fehler ausgelöst wird.A TimeSpan that specifies the maximum duration that the channel is going to allow the other communication party not to send any messages, before faulting the channel. Der Standardwert ist 00:10:00.The default is 00:10:00.

Aktivität auf einem Kanal wird als Empfang einer Anwendungs- oder Infrastrukturnachricht definiert.Activity on a channel is defined as receiving an application or infrastructure messages. Diese Eigenschaft steuert die maximale Menge an Zeit, um eine inaktive Sitzung am Leben zu erhalten.This property controls the maximum amount of time to keep an inactive session alive. Bei längeren Zeiten ohne Aktivität wird die Sitzung durch die Infrastruktur beendet, und im Kanal wird ein Fehler ausgelöst.If longer time passes with no activity, the session is aborted by the infrastructure and the channel faults. Hinweis: es ist nicht notwendig, für die Anwendung zum Senden von Nachrichten an die Verbindung aufrechtzuerhalten.Note: It is not necessary for the application to periodically send messages to keep the connection alive.
maxPendingChannelsmaxPendingChannels Eine ganze Zahl, die die maximale Anzahl an Kanälen angibt, die im Listener warten können, um akzeptiert zu werden.An integer that specifies the maximum number of channels that can wait on the listener to be accepted. Dieser Wert sollte zwischen 1 und einschließlich 16384 liegen.This value should be between 1 to 16384 inclusive. Der Standard ist 4.The default is 4.

Kanäle sind ausstehend, wenn sie darauf warten, akzeptiert zu werden.Channels are pending when they are waiting to be accepted. Wenn dieser Grenzwert einmal erreicht ist, werden keine Kanäle erstellt.Once that limit is reached, no channels are created. Sie werden dagegen in den ausstehenden Modus versetzt, bis diese Zahl sinkt (durch das Akzeptieren ausstehender Kanäle).Rather, they are put in pending mode until this number goes down (by accepting pending channels). Dieser Grenzwert wird pro Factory festgelegt.This is a per-factory limit.

Wenn der Schwellenwert erreicht wird und eine Remoteanwendung versucht, eine neue zuverlässige Sitzung herzustellen, wird die Anforderung abgelehnt und der Öffnungsvorgang, der dies angefordert hat, schlägt fehl.When the threshold is reached and a remote application tries to establish a new reliable session, the request is denied and the open operation that prompted this faults. Dieser Grenzwert gilt nicht für die Anzahl an ausstehenden ausgehenden Kanälen.This limit does not apply to the number of pending outgoing channels.
maxRetryCountmaxRetryCount Eine ganze Zahl, die angibt, wie oft ein zuverlässiger Kanal maximal versucht, eine Nachricht, für die keine Bestätigung empfangen wurde, erneut zu übertragen (durch Aufrufen von Send im zugrunde liegenden Kanal).An integer that specifies the maximum number of times a reliable channel attempts to retransmit a message it has not received an acknowledgment for, by calling Send on its underlying channel.

Dieser Wert muss größer als null sein.This value should be greater than zero. Der Standard ist 8.The default is 8.

Dieser Wert sollte eine ganze Zahl größer null sein.This value should be an integer greater than zero. Wenn nach der letzten Übertragung keine Bestätigung empfangen wurde, tritt ein Fehler im Kanal auf.If an acknowledgment is not received after the last retransmission, the channel faults.

Eine Nachricht wird als übertragen betrachtet, wenn die Zustellung vom Empfänger bestätigt wurde.A message is considered to be transferred if its delivery at the recipient has been acknowledged by the recipient.

Wenn die Bestätigung nicht innerhalb einer bestimmten Zeit eingegangen ist, überträgt die Infrastruktur die Nachricht automatisch neu.If an acknowledgment has not been received within a certain amount of time for a message that has been transmitted, the infrastructure automatically retransmits the message. Die Infrastruktur versucht die Nachricht maximal so oft erneut zu senden, wie durch diese Eigenschaft festgelegt.The infrastructure tries to resend the message for at most the number of times specified by this property. Wenn nach der letzten Übertragung keine Bestätigung empfangen wurde, tritt ein Fehler im Kanal auf.If an acknowledgment is not received after the last retransmission, the channel faults.

Die Infrastruktur verwendet einen exponentiellen Backoff-Algorithmus um den Zeitpunkt für die Neuübertragung zu ermitteln. Dabei wird eine berechnete durchschnittliche Round Trip Time zugrunde gelegt.The infrastructure uses an exponential back-off algorithm to determine when to retransmit, based on a computed average round-trip time. Der Zeitpunkt liegt zunächst 1 Sekunde vor der Neuübertragung. Bei jedem erneuten Versuch wird die Verzögerung verdoppelt. Zwischen dem ersten Übertragungsversuch und dem letzten Übertragungsversuch liegen somit ca. 8,5 Minuten.The time initially starts at 1 second before retransmission and doubling the delay with every attempt, which results in approximately 8.5 minutes passing between the first transmission attempt and the last retransmission attempt. Der Zeitpunkt für den ersten Neuübertragungsversuch wird gemäß der berechneten Round Trip Time angepasst, und die daraus resultierende Zeitspanne für die Übertragungsversuche variiert entsprechend.The time for the first retransmission attempt is adjusted according to the calculated round-trip time and the resulting stretch of time that those attempts take varies accordingly. Dadurch können die Zeitpunkte für die Neuübertragung dynamisch an die unterschiedlichen Netzwerkbedingungen angepasst werden.This allows the retransmission time to dynamically adapt to varying network conditions.
maxTransferWindowSizemaxTransferWindowSize Eine ganze Zahl, die die maximale Größe des Puffers angibt.An integer that specifies the maximum size of the buffer. Gültige Werte reichen von 1 bis 4096 einschließlich.Valid values are from 1 to 4096 inclusive.

Auf dem Client definiert dieses Attribut die maximale Größe des Puffers, in dem ein zuverlässiger Kanal die noch nicht vom Empfänger bestätigten Nachrichten speichert.On the client, this attribute defines the maximum size of the buffer used by a reliable channel to hold messages not yet acknowledged by the receiver. Die Einheit dieses Kontingents ist eine Nachricht.The unit of the quota is a message. Ist der Puffer voll, werden weitere SEND-Vorgänge blockiert.If the buffer is full, further SEND operations are blocked.

Beim Empfänger definiert dieses Attribut die maximale Größe des Puffers, in dem ein Kanal eingehende Nachrichten speichert, die noch nicht an die Anwendung zugestellt wurden.On the receiver, this attribute defines the maximum size of the buffer used by the channel to store incoming messages not yet dispatched to the application. Ist der Puffer voll, werden weitere Nachrichten vom Empfänger automatisch verworfen und müssen vom Client erneut übertragen werden.If the buffer is full, further messages are silently dropped by the receiver and require retransmission by the client.
orderedordered Ein boolescher Wert, der angibt, ob Nachrichten auf jeden Fall in der Reihenfolge ihres Versands eintreffen.A Boolean that specifies whether messages are guaranteed to arrive in the order they were sent. Lautet diese Einstellung false, können Nachrichten außerhalb der Reihenfolge eintreffen.If this setting is false, messages can arrive out of order. Die Standardeinstellung ist true.The default is true.
reliableMessagingVersionreliableMessagingVersion Ein gültiger Wert von ReliableMessagingVersion, der die zu verwendende WS-ReliableMessaging-Version angibt.A valid value from ReliableMessagingVersion that specifies the WS-ReliableMessaging version to be used.

Untergeordnete ElementeChild Elements

KeinerNone

Übergeordnete ElementeParent Elements

ElementElement BeschreibungDescription
<binding><binding> Definiert alle Bindungsmöglichkeiten der benutzerdefinierten Bindung.Defines all binding capabilities of the custom binding.

HinweiseRemarks

Zuverlässige Sitzungen bieten Funktionen für zuverlässiges Messaging.Reliable sessions provide features for reliable messaging and sessions. Beim zuverlässigen Messaging wird die Kommunikation bei Fehlern erneut gestartet, und es werden Zustellungszusicherungen, wie Prüfung der Nachrichtenreihenfolge beim Eingang, vorgenommen.Reliable messaging retries communication on failure and allows delivery assurances such as in-order arrival of messages to be specified. Die Sitzungen erhalten den Status von Clients im Verlauf der verschiedenen Aufrufe aufrecht.Sessions maintain state for clients between calls. Dieses Element stellt auch optional sortierte Nachrichtenübermittlung bereit.This element also optionally provides ordered message delivery. Diese implementierte Sitzung kann SOAP und Transportvermittler überqueren.This implemented session can cross SOAP and transport intermediaries.

Jedes Bindungselement stellt einen Verarbeitungsschritt beim Senden und Empfangen von Nachrichten dar.Each binding element represents a processing step when sending or receiving messages. Zur Laufzeit erstellen Bindungselemente die Kanalfactorys und die Listener, die notwendig sind, um ausgehende und eingehende Kanalstapel zum Senden und Empfangen von Nachrichten zu erstellen.At runtime, binding elements create the channel factories and listeners that are necessary to build outgoing and incoming channel stacks required to send and receive messages. Das reliableSession bietet eine optionale Ebene im Stapel, die eine zuverlässige Sitzung zwischen Endpunkten herstellen und das Sitzungsverhalten konfigurieren kann.The reliableSession provides an optional layer in the stack that can establish a reliable session between endpoints and configure the behavior of this session.

Weitere Informationen finden Sie unter zuverlässige Sitzungen.For more information, see Reliable Sessions.

BeispielExample

Im folgenden Beispiel wird gezeigt, wie eine benutzerdefinierte Bindung mit verschiedenen Transport- und Codierungselementen konfiguriert wird, insbesondere durch zuverlässige Sitzungen, die den Clientstatus aufrechterhalten und Zustellungszusicherungen anhand der Nachrichtenreihenfolge vorgeben.The following example demonstrates how to configure a custom binding with various transport and message encoding elements, especially enabling reliable sessions, which maintains client state and specifies in-order delivery assurances. Dieses Feature wird in den Anwendungskonfigurationsdateien für den Client und den Dienst konfiguriert.This feature is configured in the application configuration files for the client and service. Im Beispiel wird die Dienstkonfiguration gezeigt.The example show the service configuration.

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
  <system.serviceModel>  
    <services>  
      <service   
          name="Microsoft.ServiceModel.Samples.CalculatorService"  
          behaviorConfiguration="CalculatorServiceBehavior">  
        <!-- This endpoint is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc  -->  
        <!-- specify customBinding binding and a binding configuration to use -->  
        <endpoint address=""  
                  binding="customBinding"  
                  bindingConfiguration="Binding1"   
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />  
        <!-- The mex endpoint is exposed at http://localhost/servicemodelsamples/service.svc/mex -->  
        <endpoint address="mex"  
                  binding="mexHttpBinding"  
                  contract="IMetadataExchange" />  
      </service>  
    </services>  

    <!-- custom binding configuration - configures HTTP transport, reliable sessions -->  
    <bindings>  
      <customBinding>  
        <binding name="Binding1">  
          <reliableSession />  
          <security authenticationMode="SecureConversation"  
                     requireSecurityContextCancellation="true">  
          </security>  
          <compositeDuplex />  
          <oneWay />  
          <textMessageEncoding messageVersion="Soap12WSAddressing10" writeEncoding="utf-8" />  
          <httpTransport authenticationScheme="Anonymous" bypassProxyOnLocal="false"  
                        hostNameComparisonMode="StrongWildcard"   
                        proxyAuthenticationScheme="Anonymous" realm=""   
                        useDefaultWebProxy="true" />  
        </binding>  
      </customBinding>  
    </bindings>  

    <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->  
    <behaviors>  
      <serviceBehaviors>  
        <behavior name="CalculatorServiceBehavior">  
          <serviceMetadata httpGetEnabled="True"/>  
          <serviceDebug includeExceptionDetailInFaults="False" />  
        </behavior>  
      </serviceBehaviors>  
    </behaviors>  
  </system.serviceModel>  
</configuration>  

Siehe auchSee Also

ReliableSessionElement
CustomBinding
ReliableSessionBindingElement
Zuverlässige SitzungenReliable Sessions
BindungenBindings
Erweitern von BindungenExtending Bindings
Benutzerdefinierte BindungenCustom Bindings
<customBinding><customBinding>