Zuverlässiges Messaging-Protokoll, Version 1.0Reliable Messaging Protocol version 1.0

Dieses Thema enthält Details zur Implementierung der Windows Communication Foundation (WCF) für die WS-Reliable Messaging-Version von Februar 2005 (Version 1.0)-Protokoll für die Interoperation mithilfe des HTTP-Transports erforderlich.This topic covers Windows Communication Foundation (WCF) implementation details for the WS-Reliable Messaging February 2005 (version 1.0) protocol necessary for interoperation using the HTTP transport. WCF folgt die WS-ReliableMessaging-Spezifikation mit den Einschränkungen und klarstellungen erläutert, die in diesem Thema.WCF follows the WS-Reliable Messaging specification with the constraints and clarifications explained in this topic. Beachten Sie, dass das zuverlässige WS-Messaging-Protokoll in der Version 1.0 ab WinFXWinFX implementiert ist.Note that the WS-ReliableMessaging version 1.0 protocol is implemented starting with the WinFXWinFX.

Die WS-Reliable Messaging-Version von Februar 2005 Protokoll wird in WCF von implementiert die ReliableSessionBindingElement.The WS-Reliable Messaging February 2005 protocol is implemented in WCF by the ReliableSessionBindingElement.

Der Einfachheit halber verwendet dieses Thema die folgenden Rollen:For convenience, the topic uses the following roles:

  • Initiator: der Client, der die Erstellung der zuverlässigen WS-Messaging-Sequenz initiiertInitiator: the client that initiates WS-Reliable Message sequence creation

  • Beantworter: der Dienst, der die Anforderungen des Initiators empfängtResponder: the service that receives the initiator's requests

In diesem Dokument werden die in der folgenden Tabelle aufgeführten Präfixe und Namespaces verwendet.This document uses the prefixes and namespaces in the following table.

PräfixPrefix NamespaceNamespace
wsrmwsrm http://schemas.xmlsoap.org/ws/2005/02/rm
netrmnetrm http://schemas.microsoft.com/ws/2006/05/rm
ss http://www.w3.org/2003/05/soap-envelope
wsawsa http://schemas.xmlsoap.org/ws/2005/08/addressing
wssewsse http://docs.oasis-open.org/wss/2004/01/oasis-200401-wssecurity-secext-1.0.xsd

MessagingMessaging

SequenzeinrichtungsnachrichtenSequence Establishment Messages

WCF implementiert CreateSequence und CreateSequenceResponse Nachrichten an eine zuverlässige nachrichtensequenz einzurichten.WCF implements CreateSequence and CreateSequenceResponse messages to establish a reliable message sequence. Es gelten die folgenden Einschränkungen:The following constraints apply:

  • B1101: Der Initiator WCF generiert das optionale Expires-Element im nicht die CreateSequence Nachricht oder in den Fällen bei der CreateSequence Nachricht enthält eine Offer -Element, das optionale Expires Element in der Offer Element.B1101: The WCF Initiator does not generate the optional Expires element in the CreateSequence message or, in the cases when the CreateSequence message contains an Offer element, the optional Expires element in the Offer element.

  • B1102: Beim Zugriff auf die CreateSequence Meldung, die WCFResponder sendet und empfängt sowohl Expires Elemente, wenn vorhanden, aber ihre Werte nicht verwendet.B1102: When accessing the CreateSequence message, the WCFResponder sends and receives both Expires elements if they exist, but does not use their values.

Zuverlässiges WS-Messaging führt den Offer-Mechanismus ein, um zwei umgekehrt korrelierende Sequenzen einzurichten, die eine Sitzung bilden.WS-Reliable Messaging introduces the Offer mechanism to establish the two converse correlated sequences that form a session.

  • R1103: Wenn CreateSequence ein Offer-Element enthält, muss der zuverlässige Messaging-Beantworter entweder die Sequenz akzeptieren und mit CreateSequenceResponse antworten (enthält ein wsrm:Accept-Element), wodurch die zwei umgekehrt korrelierenden Sequenzen gebildet werden, oder er muss die CreateSequence-Anforderung zurückweisen.R1103: If CreateSequence contains an Offer element, the Reliable Messaging Responder must either accept the sequence and respond with CreateSequenceResponse that contains a wsrm:Accept element, forming two correlated converse sequences or reject the CreateSequence request.

  • R1104: SequenceAcknowledgement und die in umgekehrter Sequenz fließenden Anwendungsnachrichten müssen an den ReplyTo-Endpunktverweis der CreateSequence gesendet werden.R1104: SequenceAcknowledgement and application messages flowing on converse sequence must be sent to the ReplyTo endpoint reference of the CreateSequence.

  • R1105: AcksTo- und ReplyTo-Endpunktverweise in der CreateSequence müssen Adresswerte aufweisen, die sich oktettweise entsprechen.R1105: AcksTo and ReplyTo endpoint references in the CreateSequence must have address values that match the octet-wise.

    Der WCF-Beantworter stellt sicher, dass der URI-Teil der AcksTo und ReplyTo EPRs identisch sind, vor dem Erstellen einer Sequenz.The WCF Responder verifies that the URI portion of the AcksTo and ReplyTo EPRs are identical before creating a sequence.

  • R1106: AcksTo- und ReplyTo-Endpunktverweise in der CreateSequence sollten den gleichen Satz von Verweisparametern aufweisen.R1106: AcksTo and ReplyTo Endpoint References in the CreateSequence should have the same set of reference parameters.

    WCF wird nicht erzwungen, sondern setzt voraus, [Verweisparameter] AcksTo und ReplyTo auf CreateSequence identisch sind und verwendet [Verweisparameter] aus ReplyTo -Endpunktverweis für Bestätigungen und Nachrichten umgekehrter Sequenz.WCF does not enforce but assumes that [reference parameters] of AcksTo and ReplyTo on CreateSequence are identical and uses [reference parameters] from ReplyTo endpoint reference for acknowledgements and converse sequence messages.

  • R1107: Wenn mithilfe des Offer-Mechanismus zwei umgekehrte Sequenzen eingerichtet sind, müssen SequenceAcknowledgement und die in umgekehrter Sequenz fließenden Anwendungsnachrichten an den ReplyTo-Endpunktverweis der CreateSequence gesendet werden.R1107: When two converse sequences are established using the Offer mechanism, SequenceAcknowledgement and application messages flowing on converse sequences must be sent to the ReplyTo endpoint reference of the CreateSequence.

  • R1108: Wenn mithilfe des Offer-Mechanismus zwei umgekehrte Sequenzen eingerichtet sind, muss die [address]-Eigenschaft des wsrm:AcksTo-Endpunktverweises, ein dem wsrm:Accept-Element von CreateSequenceResponse untergeordnetes Element, mit dem Ziel-URI von CreateSequence byteweise übereinstimmen.R1108: When two converse sequences are established using the Offer mechanism, the [address] property of the wsrm:AcksTo Endpoint Reference child element of the wsrm:Accept element of the CreateSequenceResponse must match byte-wise the destination URI of the CreateSequence.

  • R1109: Wenn mithilfe des Offer-Mechanismus zwei umgekehrte Sequenzen eingerichtet sind, müssen die vom Initiator gesendeten Nachrichten und die vom Beantworter gesendeten Bestätigungen der Nachrichten an den gleichen Endpunktverweis gesendet werden.R1109: When two converse sequences are established using the Offer mechanism, messages sent by initiator and acknowledgements to messages by responder must be sent to the same Endpoint Reference.

    WCF verwendet WS-Reliable Messaging, um zuverlässige Sitzungen zwischen dem Initiator und Beantworter einzurichten.WCF uses WS-Reliable Messaging to establish reliable sessions between the Initiator and Responder. WCF WS-ReliableMessaging-Implementierung bietet zuverlässige Sitzungen für unidirektionale, Anforderung-Antwort- und Vollduplex-Nachrichtenmuster.WCF's WS-Reliable Messaging implementation provides reliable session for one-way, request-reply and full duplex messaging patterns. Die WS-Reliable Messaging Offer Mechanismus auf CreateSequence / CreateSequenceResponse können Sie die zwei umgekehrt korrelierte Sequenzen zu erstellen, und bietet ein, die für alle Endpunkte Nachricht geeignet ist.The WS-Reliable Messaging Offer mechanism on CreateSequence/CreateSequenceResponse lets you establish two correlated converse sequences, and provides a session protocol that is suitable for all message endpoints. Da WCF eine Sicherheitsgarantie für solcher Sitzungen sowie End-to-End-Schutz bietet, ist es ratsam, um sicherzustellen, dass Nachrichten an den gleichen Teilnehmer am selben Ziel ankommen.Because WCF provides a security guarantee for such a session including end-to-end protection for session integrity, it is practical to ensure messages intended to the same party are arriving at the same destination. Dies lässt auch Piggyback-Übertragung von Sequenzbestätigungen auf Anwendungsnachrichten zu.This also allows piggy-backing of sequence acknowledgements on application messages. Daher gelten Einschränkungen R1104, R1105 und R1108 für WCF.Therefore, constraints R1104, R1105, and R1108 apply to WCF.

Ein Beispiel für eine CreateSequence-Nachricht.An example of a CreateSequence message.

<s:Envelope>  
  <s:Header>  
    <a:Action s:mustUnderstand="1">  
      http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence  
    </a:Action>  
    <a:ReplyTo>  
      <a:Address>          
         http://Business456.com/clientA        
      </a:Address>  
    </a:ReplyTo>  
    <a:MessageID>  
      urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36  
    </a:MessageID>  
    <a:To s:mustUnderstand="1">  
      http://Business456.com/clientA  
    </a:To>  
  </s:Header>  
  <s:Body>  
    <wsrm:CreateSequence>  
      <wsrm:AcksTo>  
       <wsa:Address>  
         http://Business456.com/clientA  
       </wsa:Address>  
     </wsrm:AcksTo>  
     <wsrm:Offer>  
      <wsrm:Identifier>  
        urn:uuid:0afb8d36-bf26-4776-b8cf-8c91fddb5496  
      </wsrm:Identifier>  
     </wsrm:Offer>  
   </wsrm:CreateSequence>  
  </s:Body>  
</s:Envelope>  

Ein Beispiel für eine CreateSequenceResponse-Nachricht.An example of a CreateSequenceResponse message.

<s:Envelope>  
  <s:Header>  
    <a:Action s:mustUnderstand="1">  
      http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequenceResponse  
    </a:Action>  
    <a:RelatesTo>  
      urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36  
    </a:RelatesTo>  
    <a:To s:mustUnderstand="1">  
      http://Business456.com/clientA  
    </a:To>  
  </s:Header>  
  <s:Body>  
   <wsrm:CreateSequenceResponse>  
    <Identifier>  
     urn:uuid:eea0a36c-b38a-43e8-8c76-2fabe2d76386  
    </Identifier>  
    <Accept>  
    <AcksTo>  
      <a:Address>  
        http://BusinessABC.com/serviceA  
      </a:Address>  
    </AcksTo>  
    </Accept>  
   </wsrm:CreateSequenceResponse>  
  </s:Body>  
</s:Envelope>  

SequenzSequence

Die folgende Liste enthält die Einschränkungen, die für Sequenzen gelten:The following is a list of constraints that apply to sequences:

Ein Beispiel für einen Sequenzheader.An example of a Sequence Header.

<wsrm:Sequence>  
  <wsrm:Identifier>  
    urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36  
  </wsrm:Identifier>  
  <wsrm:MessageNumber>  
    10  
  </wsrm:MessageNumber>  
  <wsrm:LastMessage/>  
 </wsrm:Sequence>  

AckRequested-HeaderAckRequested Header

WCF verwendet AckRequested -Header als Keep-alive-Mechanismus.WCF uses AckRequested Header as a keep-alive mechanism. WCF generiert nicht das optionale MessageNumber Element.WCF does not generate the optional MessageNumber element. Nach dem Empfang einer Nachricht mit einer AckRequested Header, enthält die MessageNumber -Element WCF ignoriert den MessageNumber Wert des Elements, wie im folgenden Beispiel gezeigt.Upon receiving a message with an AckRequested header that contains the MessageNumber element, WCF ignores the MessageNumber element’s value, as shown in the following example.

<wsrm:AckRequested>  
  <wsrm:Identifier>  
    urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36  
  </wsrm:Identifier>  
</wsrm:AckRequested>  

SequenceAcknowledgement-HeaderSequenceAcknowledgement Header

WCF verwendet den Piggyback-Mechanismus für WS-Reliable Messaging bereitgestellten sequenzbestätigungen.WCF uses piggy-back mechanism for sequence acknowledgements provided in WS-Reliable Messaging.

  • R1401: Wenn mithilfe des Offer-Mechanismus zwei umgekehrte Sequenzen erstellt werden, kann der SequenceAcknowledgement-Header in jede an den vorgesehenen Empfänger gesendete Anwendungsnachricht aufgenommen werden.R1401: When two converse sequences are established using the Offer mechanism, the SequenceAcknowledgement header may be included in any application message transmitted to the intended recipient.

  • B1402: Wenn WCF eine Bestätigung vor dem Empfangen von sequenznachrichten generieren muss (z. B. erfüllen einer AckRequested Nachricht), WCF generiert eine SequenceAcknowledgement Header mit dem Bereich 0-0, wie im folgenden Beispiel gezeigt.B1402: When WCF must generate an acknowledgement prior to receiving any sequence messages (for example, to satisfy an AckRequested message), WCF generates a SequenceAcknowledgement header that contains the range 0-0, as shown in the following example.

    <wsrm:SequenceAcknowledgement>  
      <wsrm:Identifier>  
        urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36  
      </wsrm:Identifier>  
      <wsrm:AcknowledgementRange Upper="0" Lower="0"/>  
    </wsrm:SequenceAcknowledgement>  
    
  • B1403: WCF löst keine SequenceAcknowledgement -Headern, enthalten eine Nack -Element, unterstützt jedoch Nack Elemente.B1403: WCF does not generate SequenceAcknowledgement headers that contain a Nack element but supports Nack elements.

WS-ReliableMessaging-FehlerWS-ReliableMessaging Faults

Im folgenden finden eine Liste der Einschränkungen, die für die WCF-Implementierung des WS-ReliableMessaging-Fehler gelten:The following is a list of constraints that apply to the WCF implementation of WS-Reliable Messaging faults:

  • B1501: WCF löst keine MessageNumberRollover Fehler.B1501: WCF does not generate MessageNumberRollover faults.

  • B1502:WCF Endpunkt generiert möglicherweise CreateSequenceRefused Fehler auf, wie in der Spezifikation beschrieben.B1502:WCF endpoint may generate CreateSequenceRefused faults as described in the specification.

  • B1503:when den Dienstendpunkt seine Verbindungsgrenze erreicht und keine weiteren Verbindungen verarbeiten, WCF generiert einen zusätzlichen CreateSequenceRefused -Fehlersubcode netrm:ConnectionLimitReached, wie im folgenden Beispiel gezeigt.B1503:When the service endpoint reaches its connection limit and cannot process new connections, WCF generates an additional CreateSequenceRefused fault subcode, netrm:ConnectionLimitReached, as shown in the following example.

    <s:Envelope>  
      <s:Header>  
        <wsa:Action>  
          http://schemas.xmlsoap.org/ws/2005/08/addressing/fault  
        </wsa:Action>  
      </s:Header>  
      <s:Body>  
        <s:Fault>  
          <s:Code>  
            <s:Value>  
              s:Receiver  
            </s:Value>  
            <s:Subcode>  
              <s:Value>  
                wsrm:CreateSequenceRefused  
              </s:Value>  
              <s:Subcode>  
                <s:Value>  
                  netrm:ConnectionLimitReached  
                </s:Value>  
              </s:Subcode>  
            </s:Subcode>  
          </s:Code>  
          <s:Reason>  
            <s:Text xml:lang="en">  
              [Reason]  
            </s:Text>  
          </s:Reason>  
        </s:Fault>  
      </s:Body>  
    </s:Envelope>  
    

WS-AdressierungsfehlerWS-Addressing Faults

Da WS-ReliableMessaging WS-Adressierung verwendet, kann WCF WS-Reliable Messaging Implementierung WS-Adressierungsfehler generieren.Because WS-Reliable Messaging uses WS-Addressing, WCF WS-Reliable Messaging implementation may generate WS-Addressing faults. Dieser Abschnitt behandelt die WS-Adressierungsfehler, die WCF explizit auf der WS-ReliableMessaging-Schicht generiert:This section covers the WS-Addressing faults that WCF explicitly generates at the WS-Reliable Messaging layer:

  • B1601:WCF generiert den Fehler, die Nachricht adressiert Header erforderlich, wenn eine der folgenden Aussagen zutrifft:B1601:WCF generates the fault Message Addressing Header Required when one of the following is true:

    • Eine Nachricht hat keinen Sequence-Header und keinen Action-Header.A message is missing a Sequence header and an Action header.

    • Eine CreateSequence-Nachricht hat keinen MessageId-Header.A CreateSequence message is missing a MessageId header.

    • Eine CreateSequence-Nachricht hat keinen ReplyTo-Header.A CreateSequence message is missing a ReplyTo header.

  • B1602:WCF generiert den Fehler, die Aktion nicht unterstützt, als Antwort auf eine Nachricht, die fehlen einer Sequence Header und verfügt über eine Action Header, der nicht erkannten in der WS-ReliableMessaging-Spezifikation ist.B1602:WCF generates the fault Action Not Supported in reply to a message that is missing a Sequence header and has an Action header that is not a recognized in the WS-Reliable Messaging specification.

  • B1603:WCF generiert den Fehler, der Endpunkt nicht verfügbar, um anzugeben, dass der Endpunkt die Sequenz basierend auf der Prüfung nicht verarbeitet werden die CreateSequence Nachricht Adressheader.B1603:WCF generates the fault Endpoint Unavailable to indicate that the endpoint does not process the sequence based upon examination of the CreateSequence message’s addressing headers.

ProtokollkompositionProtocol Composition

Komposition mit WS-AdressierungComposition with WS-Addressing

WCF unterstützt zwei Versionen der WS-Adressierung: WS-Adressierung 2004/08 [WS-ADDR] und W3C WS-Adressierung 1.0 Empfehlungen [WS-ADDR-CORE] und [WS-ADDR-SOAP].WCF supports two versions of WS-Addressing: WS-Addressing 2004/08 [WS-ADDR] and W3C WS-Addressing 1.0 Recommendations [WS-ADDR-CORE] and [WS-ADDR-SOAP].

Zwar erwähnt die WS-ReliableMessaging-Spezifikation nur die WS-Adressierung 2004/08, schränkt jedoch die verwendete Version der WS-Adressierung nicht ein.While the WS-Reliable Messaging specification mentions only WS-Addressing 2004/08, it does not restrict the WS-Addressing version to be used. Im folgenden finden eine Liste der Einschränkungen, die für WCF gelten:The following is a list of constraints that apply to WCF:

  • R2101: sowohl WS-Adressierung 2004/08 und WS-Adressierung 1.0 mit WS-Reliable Messaging verwendet werden kann.R2101:Both WS-Addressing 2004/08 and WS-Addressing 1.0 can be used with WS-Reliable Messaging.

  • R2102:A einzelne Version der WS-Adressierung muss verwendet werden, in der gesamten einer angegebenen WS-Reliable Messaging-Sequenz oder ein Paar umgekehrter Sequenzen korreliert mit der wsrm:Offer Mechanismus.R2102:A single version of WS-Addressing must be used throughout a given WS-Reliable Messaging sequence or a pair of converse sequences correlated by using the wsrm:Offer mechanism.

Komposition mit SOAPComposition with SOAP

WCF unterstützt die Verwendung von SOAP 1.1 und SOAP 1.2 mit zuverlässigem WS-Messaging.WCF supports use of both SOAP 1.1 and SOAP 1.2 with WS-Reliable Messaging.

Komposition mit WS-Sicherheit und WS-SecureConversationComposition with WS-Security and WS-SecureConversation

WCF bietet Schutz für WS-Reliable Messaging-Sequenzen durch Verwenden von sicheren Transportmethode (HTTPS), Komposition mit WS-Security und Komposition mit WS-Secure Conversation.WCF provides protection for WS-Reliable Messaging sequences by using secure Transport (HTTPS), composition with WS-Security, and composition with WS-Secure Conversation. Im folgenden finden eine Liste der Einschränkungen, die für WCF gelten:The following is a list of constraints that apply to WCF:

  • R2301: um die Integrität einer WS-Reliable Messaging-Sequenz neben der Integrität und Vertraulichkeit einzelner Nachrichten zu schützen, WCF erfordert, dass WS-Secure Conversation verwendet werden muss.R2301:To protect the integrity of a WS-Reliable Messaging sequence in addition to the integrity and confidentiality of individual messages, WCF requires that WS-Secure Conversation must be used.

  • R2302:AWS-Secure Conversation-Sitzung muss vor dem Einrichten von WS-Reliable Messaging Sequence(s) eingerichtet werden.R2302:AWS-Secure Conversation session must be established prior to establishing WS-Reliable Messaging sequence(s).

  • R2303: Wenn die Lebensdauer einer zuverlässigen WS-Messaging-Sequenz die Lebensdauer der WS-Secure Conversation-Sitzung überschreitet, muss das mithilfe von WS-Secure Conversation eingerichtete SecurityContextToken unter Verwendung der entsprechenden WS-Secure Conversation Renewal-Bindung erneuert werden.R2303: If the WS-Reliable Messaging sequence lifetime exceeds the WS-Secure Conversation session’s lifetime, the SecurityContextToken established by using WS-Secure Conversation must be renewed by using the corresponding WS-Secure Conversation Renewal binding.

  • B2304:WS-Reliable Messaging-Sequenz oder ein paar umgekehrt korrelierte Sequenzen immer an eine einzelne WS-SecureConversation-Sitzung gebunden sind.B2304:WS-Reliable Messaging sequence or a pair of correlated converse sequences are always bound to a single WS-SecureConversation session.

    Die WCF-Quelle generiert die wsse:SecurityTokenReference Element im Abschnitt elementerweiterbarkeit der der CreateSequence Nachricht.The WCF source generates the wsse:SecurityTokenReference element in the element extensibility section of the CreateSequence message.

  • R2305:when mit WS-Secure Conversation verfasst eine CreateSequence Nachricht darf die wsse:SecurityTokenReference Element.R2305:When composed with WS-Secure Conversation, a CreateSequence message must contain the wsse:SecurityTokenReference element.

Zuverlässige WS-Messaging WS-RichtlinienassertionWS-Reliable Messaging WS-Policy Assertion

WCF verwendet die WS-Reliable Messaging WS-Policy-Assertion wsrm:RMAssertion Fähigkeiten von Endpunkten zu beschreiben.WCF uses WS-Reliable Messaging WS-Policy Assertion wsrm:RMAssertion to describe endpoints capabilities. Im folgenden finden eine Liste der Einschränkungen, die für WCF gelten:The following is a list of constraints that apply to WCF:

  • B3001: WCF fügt wsrm:RMAssertion WS-Richtlinienassertion an wsdl:binding Elemente.B3001: WCF attaches wsrm:RMAssertion WS-Policy Assertion to wsdl:binding elements. WCF unterstützt beide Anlagen wsdl:binding und wsdl:port Elemente.WCF supports both attachments to wsdl:binding and wsdl:port elements.

  • B3002: WCF unterstützt die folgenden optionalen Eigenschaften des WS-Reliable Messaging-Assertion und ermöglicht die Steuerung werden auf die WCFReliableMessagingBindingElement:B3002: WCF supports the following optional properties of WS-Reliable Messaging assertion and provides control over them on the WCFReliableMessagingBindingElement:

    • wsrm:InactivityTimeout

    • wsrm:AcknowledgementInterval

    Nachfolgend finden Sie ein Beispiel:The following is an example.

    <wsrm:RMAssertion>  
      <wsrm:InactivityTimeout Milliseconds="600000" />  
      <wsrm:AcknowledgementInterval Milliseconds="200" />  
    </wsrm:RMAssertion>  
    

Zuverlässige WS-Messaging-Erweiterung zur AblaufsteuerungFlow Control WS-Reliable Messaging Extension

WCF verwendet WS-ReliableMessaging-Erweiterbarkeit, um optionale Steuerung des sequenznachrichtenflusses Sequenz-Nachrichtenfluss zu ermöglichen.WCF uses WS-Reliable Messaging extensibility to provide optional additional tighter control over sequence message flow.

Flusssteuerung aktiviert ist, durch Festlegen der ReliableSessionBindingElementdes FlowControlEnabled``bool Eigenschaft true.Flow control is enabled by setting the ReliableSessionBindingElement’s FlowControlEnabled``bool property to true. Im folgenden finden eine Liste der Einschränkungen, die für WCF gelten:The following is a list of constraints that apply to WCF:

  • B4001: Wenn zuverlässiges Messaging flusssteuerung aktiviert ist, WCF generiert eine netrm:BufferRemaining Element in der elementerweiterbarkeit des der SequenceAcknowledgement Header.B4001: When Reliable Messaging Flow Control is enabled, WCF generates a netrm:BufferRemaining element in the element extensibility of the SequenceAcknowledgement header.

  • B4002: Wenn zuverlässiges Messaging flusssteuerung aktiviert ist, WCF erfordert nicht, dass eine netrm:BufferRemaining Element vorhanden sein SequenceAcknowledgement -Header, wie im folgenden Beispiel gezeigt.B4002: When Reliable Messaging Flow Control is enabled, WCF does not require a netrm:BufferRemaining element to be present in SequenceAcknowledgement header, as shown in the following example.

    <wsrm:SequenceAcknowledgement>  
      <wsrm:Identifier>  
        http://fabrikam123.com/abc  
      </wsrm:Identifier>  
      <wsrm:AcknowledgementRange Upper="1" Lower="1"/>             
      <netrm:BufferRemaining>  
        8  
      </netrm:BufferRemaining>  
    </wsrm:SequenceAcknowledgement>  
    
  • B4003: WCF verwendet netrm:BufferRemaining , um anzugeben, wie viele der neue Nachrichten das zuverlässige Messaging-Ziel Puffern können.B4003: WCF uses netrm:BufferRemaining to indicate how many new messages the Reliable Messaging Destination can buffer.

  • B4004: WCF zuverlässige Messaging-Dienst drosselt die Anzahl der Nachrichten, die übertragen werden, wenn die Anwendung für zuverlässiges Messaging-Ziel schnell Nachrichten empfangen kann.B4004:The WCF Reliable Messaging Service throttles the number of messages transmitted when the Reliable Messaging destination application cannot receive messages quickly. Das zuverlässige Messaging-Ziel puffert Nachrichten, und der Wert des Elements sinkt auf 0.The Reliable Messaging destination buffers messages and the element’s value drops to 0.

  • B4005: WCF generiert netrm:BufferRemaining -Ganzzahlwerte zwischen 0 und 4096 einschließlich und liest Ganzzahlwerte zwischen 0 und xs:intdes maxInclusive Wert (214748364) einschließlich.B4005: WCF generates netrm:BufferRemaining integer values between 0 and 4096 inclusive, and reads integer values between 0 and xs:int’s maxInclusive value 214748364 inclusive.

NachrichtenaustauschmusterMessage Exchange Patterns

Dieser Abschnitt beschreibt die WCF Verhalten, wenn WS-Reliable Messaging für verschiedene Nachrichtenaustauschmuster verwendet wird.This section describes WCF's behavior when WS-Reliable Messaging is used for different Message Exchange Patterns. Für jedes Nachrichtenaustauschmuster werden die folgenden zwei Bereitstellungsszenarios erläutert:For each Message Exchange Pattern the following two deployments scenarios are considered:

  • Nicht adressierbarer Initiator: Der Initiator befindet sich hinter einer Firewall, der Beantworter kann Nachrichten an den Initiator nur über HTTP-Antworten zustellen.Non-Addressable Initiator: Initiator is behind firewall; Responder can deliver messages to Initiator only on HTTP responses.

  • Adressierbarer Initiator: Sowohl an den Initiator als auch den Beantworter können HTTP-Anforderungen gesendet werden, d. h., es können zwei entgegengesetzte HTTP-Verbindungen eingerichtet werden.Addressable Initiator: Initiator and Responder both can be sent HTTP requests; in other words, two converse HTTP connections can be established.

Unidirektionaler, nicht adressierbarer InitiatorOne-way, Non-addressable Initiator

BindungBinding

WCF bietet ein unidirektionales Nachrichtenaustauschmuster unter Verwendung einer Sequenz über einen HTTP-Kanal.WCF provides a one-way message exchange pattern using one sequence over one HTTP channel. WCF verwendet die HTTP-Anforderungen, um alle Nachrichten vom RMS zum RMD zu übertragen und die HTTP-Antwort zur Übertragung aller Nachrichten vom RMD zum RMS zu übertragen.WCF uses the HTTP requests to transmit all messages from the RMS to the RMD and the HTTP response to transmit all messages from the RMD to the RMS.

CreateSequence-AustauschCreateSequence Exchange

Der WCF--Initiator generiert eine CreateSequence -Nachricht ohne Angebot.The WCF Initiator generates a CreateSequence message with no offer. Der WCF-Beantworter wird sichergestellt, dass die CreateSequence kein Angebot vor dem Erstellen einer Sequenz aufweist.The WCF Responder ensures the CreateSequence has no offer before creating a sequence. Der WCF-Beantworter reagiert auf die CreateSequence Anforderung mit einem CreateSequenceResponse Nachricht.The WCF Responder replies to the CreateSequence request with a CreateSequenceResponse message.

SequenceAcknowledgementSequenceAcknowledgement

Der WCF--Initiator erstellt Bestätigungen als Antwort alle Nachrichten mit Ausnahme der CreateSequence -Nachrichten und Fehlernachrichten.The WCF Initiator processes acknowledgements on the reply of all messages except the CreateSequence message and fault messages. Der WCF-Beantworter generiert eine eigenständige Bestätigung in der Antwort auf Sequenzen und AckRequested Nachrichten.The WCF Responder always generates a stand-alone acknowledgement in the response to both sequence and AckRequested messages.

TerminateSequence-NachrichtTerminateSequence message

WCF behandelt TerminateSequence als unidirektionalen Vorgang, d. h. die HTTP-Antwort einen leeren Textbereich und den HTTP-Statuscode 202 hat.WCF treats TerminateSequence as a one-way operation, meaning the HTTP response has an empty body and HTTP 202 status code.

Unidirektionaler, adressierbarer InitiatorOne Way, Addressable Initiator

BindungBinding

WCF bietet ein unidirektionales Nachrichtenaustauschmuster unter Verwendung eines eingehenden und einen ausgehenden HTTP-Kanal.WCF provides a one-way message exchange pattern using one sequence over an inbound and an outbound Http channel. WCF verwendet HTTP-Anforderungen zur Übertragung aller Nachrichten.WCF uses the HTTP requests to transmit all messages. Alle HTTP-Antworten haben einen leeren Textbereich und den HTTP-Statuscode 202.All HTTP responses have an empty body and HTTP 202 status code.

CreateSequence-AustauschCreateSequence Exchange

Der WCF--Initiator generiert eine CreateSequence -Nachricht ohne Angebot.The WCF Initiator generates a CreateSequence message with no offer. Der WCF-Beantworter stellt sicher, dass die CreateSequence kein Angebot vor dem Erstellen einer Sequenz aufweist.The WCF Responder ensures that the CreateSequence has no offer before creating a sequence. Der WCF-Beantworter überträgt die CreateSequenceResponse Nachricht auf eine HTTP-Anforderung adressiert werden, mit der ReplyTo Endpunktverweis.The WCF Responder transmits the CreateSequenceResponse message on an HTTP request addressed with the ReplyTo endpoint reference.

Adressierbarer Duplex-InitiatorDuplex, Addressable Initiator

BindungBinding

WCF bietet ein vollständig asynchrones bidirektionales Nachrichtenaustauschmuster unter Verwendung zweier Sequenzen über einen eingehenden und einen ausgehenden HTTP-Kanal.WCF provides a fully asynchronous two-way message exchange pattern using two sequences over an inbound and an outbound HTTP channel. WCF verwendet HTTP-Anforderungen zur Übertragung aller Nachrichten.WCF uses the HTTP requests to transmit all messages. Alle HTTP-Antworten haben einen leeren Textbereich und den HTTP-Statuscode 202.All HTTP responses have an empty body and HTTP 202 status code.

CreateSequence-AustauschCreateSequence Exchange

Der WCF--Initiator generiert eine CreateSequence Nachricht mit einem Angebot.The WCF Initiator generates a CreateSequence message with an offer. Der WCF-Beantworter stellt sicher, dass die CreateSequence ein Angebot vor dem Erstellen einer Sequenz aufweist.The WCF Responder ensures that the CreateSequence has an offer before creating a sequence. WCF sendet die CreateSequenceResponse auf die HTTP-Anforderung adressiert werden, um die CreateSequencedes ReplyTo Endpunktverweis.WCF sends the CreateSequenceResponse on the HTTP request addressed to the CreateSequence’s ReplyTo endpoint reference.

SequenzlebensdauerSequence Lifetime

WCF behandelt die beiden Sequenzen als eine vollduplexsitzung.WCF treats the two sequences as one fully duplex session.

Nach dem Generieren eines Fehlers, der einem Fehler in einer Sequenz, erwartet WCF Remoteendpunkt für beide Sequenzen auslöst.Upon generating a fault that faults one sequence, WCF expects the remote endpoint to fault both sequences. Nach dem Lesen eines Fehlers, der einem Fehler in einer Sequenz, Fehler WCF für beide Sequenzen.Upon reading a fault that faults one sequence, WCF faults both sequences.

WCF kann seine ausgehende Sequenz schließen und zum Verarbeiten von Nachrichten in seiner eingehenden Sequenz fortfahren.WCF can close its outbound sequence and continue to process messages on its inbound sequence. Im Gegensatz dazu kann WCF das Schließen der eingehenden Sequenz durchführen und weiter Nachrichten in seiner ausgehenden Sequenz senden.Conversely, WCF can process the close of the inbound sequence and continue to send messages on its outbound sequence.

Nicht adressierbarer Anforderung-Antwort-InitiatorRequest-Reply, Non-Addressable Initiator

BindungBinding

WCF bietet einen unidirektionalen und Anforderung-Antwort-Nachrichtenaustauschmuster, die unter Verwendung zweier Sequenzen über einen HTTP-Kanal.WCF provides a one-way and request-reply message exchange pattern using two sequences over one HTTP channel. WCF HTTP-Anforderungen verwendet, um die anforderungssequenznachrichten zu übertragen und die HTTP-Antworten verwendet, um die Antwortsequenznachrichten zu übertragen.WCF uses the HTTP requests to transmit the request sequence’s messages and uses the HTTP responses to transmit the reply sequence’s messages.

CreateSequence-AustauschCreateSequence Exchange

Der WCF--Initiator generiert eine CreateSequence Nachricht mit einem Angebot.The WCF Initiator generates a CreateSequence message with an offer. Der WCF-Beantworter stellt sicher, dass die CreateSequence ein Angebot vor dem Erstellen einer Sequenz aufweist.The WCF Responder ensures that the CreateSequence has an offer before creating a sequence. Der WCF-Beantworter reagiert auf die CreateSequence Anforderung mit einem CreateSequenceResponse Nachricht.The WCF Responder replies to the CreateSequence request with a CreateSequenceResponse message.

Unidirektionale NachrichtOne-way Message

Um ein unidirektionales Nachrichtenaustauschprotokoll erfolgreich abgeschlossen haben, den WCF-Initiator eine anforderungssequenznachricht in der HTTP-Anforderung sendet und empfängt eine eigenständige SequenceAcknowledgement -Nachricht in der HTTP-Antwort.To complete a one-way message exchange protocol successfully, the WCF Initiator transmits a request sequence message on the HTTP request and receives a standalone SequenceAcknowledgement message on the HTTP response. Die SequenceAcknowledgement-Nachricht muss die Nachrichtenübertragung bestätigen.The SequenceAcknowledgement must acknowledge the message transmitted.

Der WCF-Beantworter kann mit einer Bestätigung, einen Fehler oder eine Antwort mit leerem Textbereich und dem HTTP-Statuscode 202 auf die Anforderung antworten.The WCF Responder can reply to the request with an acknowledgement, a fault, or a response with an empty body and HTTP 202 status code.

Bidirektionale NachrichtenTwo Way Messages

Um eine zwei-Wege-Nachrichtenaustauschprotokoll erfolgreich abgeschlossen haben, den WCF-Initiator überträgt eine anforderungssequenznachricht in der HTTP-Anforderung und empfängt eine antwortsequenznachricht in der HTTP-Antwort.To complete a two way message exchange protocol successfully, the WCF Initiator transmits a request sequence message on the HTTP request and receives a reply sequence message on the HTTP response. Die Antwort muss eine SequenceAcknowledgement enthalten, die die Übertragung der Anforderungssequenznachricht bestätigt.The response must carry a SequenceAcknowledgement acknowledging the request sequence message transmitted.

Der WCF-Beantworter kann mit einer Anwendungsantwort, einem Fehler oder eine Antwort mit leerem Textbereich und dem HTTP-Statuscode 202 auf die Anforderung antworten.The WCF Responder can reply to the request with an application reply, a fault or a response with an empty body and HTTP 202 status code.

Aufgrund des Vorhandenseins unidirektionaler Nachrichten und des zeitlichen Ablaufs von Anwendungsantworten verfügen die Sequenznummern der Anforderungssequenznachricht und der Antwortsequenznachricht über keine Korrelation.Because of the presence of one-way messages and the timing of application replies, the request sequence message’s sequence number and the response message’s sequence number have no correlation.

Wiederholen von AntwortenRetrying Replies

WCF basiert auf HTTP-Anforderung / Antwort-Korrelation für das bidirektionale Nachrichtenaustauschprotokoll.WCF relies on HTTP request-reply correlation for two-way message exchange protocol correlation. Aus diesem Grund wird der WCF-Initiator nicht beendet eine anforderungssequenznachricht wiederholen, wenn die anforderungssequenznachricht bestätigt wird, sondern wenn die HTTP-Antwort eine Bestätigung, die Meldung für den Benutzer oder den Fehler enthält.Because of this, the WCF Initiator does not stop retrying a request sequence message when the request sequence message is acknowledged but rather when the HTTP response carries an acknowledgement, user message, or fault. Der WCF-Beantworter wiederholt die Antworten auf die HTTP-Anforderungsabschnitt der Anforderung mit der die Antwort korreliert ist.The WCF Responder retries replies on the HTTP request leg of the request to which the reply is correlated.

LastMessage-AustauschLastMessage Exchange

Der WCF-Initiator generiert und überträgt eine leere letzte Nachricht ohne Text auf den HTTP-Anforderungsabschnitt.The WCF Initiator generates and transmits an empty bodied last message on the HTTP request leg. WCF erfordert eine Antwort ignoriert jedoch diese Antwortnachricht.WCF requires a response but ignores the actual response message. Der WCF-Beantworter reagiert auf die anforderungssequenz ohne Text letzte Meldung mit der Antwortsequenz letzte Nachricht ohne Text.The WCF Responder replies to the request sequence’s empty-bodied last message with the reply sequence’s empty-bodied last message.

Wenn der WCF-Beantworter eine letzte Nachricht empfängt, in der der Aktions-URI nicht ist http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage, WCF-antwortet mit einer letzten Nachricht.If the WCF Responder receives a last message in which the action URI is not http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage, WCF replies with a last message. Im Fall eines bidirektionalen Nachrichtenaustauschprotokolls enthält die letzte Nachricht die Anwendungsnachricht, im Falle eines unidirektionalen Nachrichtenaustauschprotokolls ist die letzte Nachricht leer.In the case of a two-way message exchange protocol, the last message carries the application message; in the case of a one-way message exchange protocol, the last message is empty.

Der WCF-Beantworter erfordert keine Bestätigung für die Antwortsequenz letzte Nachricht ohne Text.The WCF Responder does not require an acknowledgement for the reply sequence’s empty-bodied last message.

TerminateSequence-AustauschTerminateSequence Exchange

Wenn alle Anfragen eine gültige Antwort erhalten haben, wird der WCF-Initiator generiert und überträgt der anforderungssequenz TerminateSequence Nachricht auf den HTTP-Anforderungsabschnitt.When all requests have received a valid reply, the WCF Initiator generates and transmits the request sequence’s TerminateSequence message on the HTTP request leg. WCF erfordert eine Antwort ignoriert jedoch diese Antwortnachricht.WCF requires a response but ignores the actual response message. Der WCF-Beantworter reagiert auf der anforderungssequenz TerminateSequence -Meldung mit der Antwortsequenz TerminateSequence Nachricht.The WCF Responder replies to the request sequence’s TerminateSequence message with the reply sequence’s TerminateSequence message.

In einer normalen Abschlusssequenz enthalten beide TerminateSequence-Nachrichten einen vollständigen Bereich von SequenceAcknowledgement.In a normal shutdown sequence, both TerminateSequence messages carry a full range SequenceAcknowledgement.

Adressierbarer Anforderung/Antwort-InitiatorRequest/Reply, Addressable Initiator

BindungBinding

WCF bietet ein Anforderung-Antwort-Nachrichtenaustauschmuster Verwendung zweier Sequenzen über einen eingehenden und einen ausgehenden HTTP-Kanal.WCF provides a request-reply message exchange pattern using two sequences over an inbound and an outbound HTTP channel. WCF verwendet HTTP-Anforderungen zur Übertragung aller Nachrichten.WCF uses the HTTP requests to transmit all messages. Alle HTTP-Antworten haben einen leeren Textbereich und den HTTP-Statuscode 202.All HTTP responses have an empty body and HTTP 202 status code.

CreateSequence-AustauschCreateSequence Exchange

Der WCF--Initiator generiert eine CreateSequence Nachricht mit einem Angebot.The WCF Initiator generates a CreateSequence message with an offer. Der WCF-Beantworter stellt sicher, dass die CreateSequence ein Angebot vor dem Erstellen einer Sequenz aufweist.The WCF Responder ensures that the CreateSequence has an offer before creating a sequence. WCF sendet die CreateSequenceResponse auf die HTTP-Anforderung adressiert werden, um die CreateSequencedes ReplyTo Endpunktverweis.WCF sends the CreateSequenceResponse on the HTTP request addressed to the CreateSequence’s ReplyTo endpoint reference.

Anforderung/Antwort-KorrelationRequest/Reply Correlation

Der WCF-Initiator wird sichergestellt, dass alle anwendungsanforderungsnachrichten eine MessageId und ein ReplyTo Endpunktverweis.The WCF Initiator ensures all application request messages bear a MessageId and a ReplyTo endpoint reference. Der WCF-Initiator gilt die CreateSequence Nachricht ReplyTo Endpunktverweis für jede anwendungsanforderungsnachricht an.The WCF Initiator applies the CreateSequence message’s ReplyTo endpoint reference on each application request message. Der WCF-Beantworter erfordert, dass eingehende Anforderungsnachrichten-Verweis besitzen eine MessageId und ein ReplyTo.The WCF Responder requires that incoming request messages bear a MessageId and a ReplyTo. Der WCF-Beantworter stellt sicher, dass der Endpunktverweis-URIS der Endpunktverweise der CreateSequence und aller anwendungsanforderungsnachrichten identisch sind.The WCF Responder ensures that the endpoint reference’s URI of both the CreateSequence and all application request messages are identical.