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

In diesem Thema werden Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Implementierungsdetails für das WS-Reliable Messaging-Protokoll in der Version 1.0 vom Februar 2005 beschrieben, die für die Interoperation mithilfe des HTTP-Transports erforderlich sind.This topic covers Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) implementation details for the WS-Reliable Messaging February 2005 (version 1.0) protocol necessary for interoperation using the HTTP transport. WCFWCF orientiert sich an der WS-Reliable Messaging-Spezifikation mit den in diesem Thema erläuterten Einschränkungen und Klarstellungen. 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.

Das WS-ReliableMessaging-Protokoll vom Februar 2005 ist in WCFWCF durch das ReliableSessionBindingElement implementiert.The WS-Reliable Messaging February 2005 protocol is implemented in WCFWCF 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/rmhttp://schemas.xmlsoap.org/ws/2005/02/rm
netrmnetrm http://schemas.microsoft.com/ws/2006/05/rmhttp://schemas.microsoft.com/ws/2006/05/rm
ss http://www.w3.org/2003/05/soap-envelopehttp://www.w3.org/2003/05/soap-envelope
wsawsa http://schemas.xmlsoap.org/ws/2005/08/addressinghttp://schemas.xmlsoap.org/ws/2005/08/addressing
wssewsse http://docs.oasis-open.org/wss/2004/01/oasis-200401-wssecurity-secext-1.0.xsdhttp://docs.oasis-open.org/wss/2004/01/oasis-200401-wssecurity-secext-1.0.xsd

MessagingMessaging

SequenzeinrichtungsnachrichtenSequence Establishment Messages

WCFWCF implementiert CreateSequence- und CreateSequenceResponse-Nachrichten, um eine zuverlässige Nachrichtensequenz einzurichten. implements CreateSequence and CreateSequenceResponse messages to establish a reliable message sequence. Es gelten die folgenden Einschränkungen:The following constraints apply:

  • B1101: Der WCFWCF-Initiator generiert nicht das optionale Expires-Element in der CreateSequence-Nachricht oder, in den Fällen, in denen die CreateSequence-Nachricht ein Offer-Element enthält, das optionale Expires-Element im Offer-Element.B1101: The WCFWCF 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 Nachricht, die WCFWCF Responder sendet und empfängt sowohl Expires Elemente, wenn vorhanden, aber ihre Werte nicht verwendet.B1102: When accessing the CreateSequence message, the WCFWCFResponder 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 WCFWCF-Beantworter überprüft, ob die URI-Teile von AcksTo- und ReplyTo-EPRs identisch sind, bevor die Sequenz erstellt wird.The WCFWCF 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.

    WCFWCF geht davon aus, dass die Verweisparameter von AcksTo und ReplyTo in CreateSequence identisch sind, erzwingt dies jedoch nicht, und verwendet die Verweisparameter von dem ReplyTo-Endpunktverweis für Bestätigungen und Nachrichten umgekehrter Sequenz. 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.

    WCFWCF verwendet zuverlässiges WS-Messaging, um zuverlässige Sitzungen zwischen dem Initiator und dem Beantworter einzurichten. uses WS-Reliable Messaging to establish reliable sessions between the Initiator and Responder. Die Implementierung von zuverlässigem WS-Messaging in WCFWCF bietet zuverlässige Sitzungen für unidirektionale, Anforderung-Antwort- und Vollduplex-Nachrichtenmuster.WCFWCF'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 WCFWCF die Sicherheit solcher Sitzungen sowie den End-to-End-Schutz der Sitzungsintegrität garantiert, kann sichergestellt werden, dass alle an den gleichen Teilnehmer gerichteten Nachrichten am gleichen Ziel ankommen.Because WCFWCF 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. Deshalb gelten die Einschränkungen R1104, R1105 und R1108 für WCFWCF.Therefore, constraints R1104, R1105, and R1108 apply to WCFWCF.

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

WCFWCF verwendet den AckRequested-Header als Keep-alive-Mechanismus. uses AckRequested Header as a keep-alive mechanism. WCFWCF generiert nicht das optionale MessageNumber-Element. does not generate the optional MessageNumber element. Wird eine Nachricht mit einem AckRequested-Header empfangen, der das MessageNumber-Element enthält, ignoriert WCFWCF den Wert des MessageNumber-Elements, wie im folgenden Beispiel gezeigt:Upon receiving a message with an AckRequested header that contains the MessageNumber element, WCFWCF 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

WCFWCF verwendet den Piggyback-Mechanismus für die im zuverlässigen WS-Messaging bereitgestellten Sequenzbestätigungen. 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 WCFWCF eine Bestätigung generieren muss (um beispielsweise auf eine AckRequested-Nachricht zu reagieren), bevor eine Sequenznachricht empfangen wurde, generiert WCFWCF einen SequenceAcknowledgement-Header, der den Bereich "0-0" enthält, wie im folgenden Beispiel gezeigt:B1402: When WCFWCF must generate an acknowledgement prior to receiving any sequence messages (for example, to satisfy an AckRequested message), WCFWCF 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: WCFWCF generiert keine SequenceAcknowledgement-Header, die ein Nack-Element enthalten, unterstützt jedoch Nack-Elemente.B1403: WCFWCF does not generate SequenceAcknowledgement headers that contain a Nack element but supports Nack elements.

WS-ReliableMessaging-FehlerWS-ReliableMessaging Faults

Die folgende Liste enthält die Einschränkungen, die für die WCFWCF-Implementierung der Fehler des zuverlässigen WS-Messaging gelten:The following is a list of constraints that apply to the WCFWCF implementation of WS-Reliable Messaging faults:

  • B1501: WCFWCF generiert keine MessageNumberRollover-Fehler.B1501: WCFWCF does not generate MessageNumberRollover faults.

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

  • B1503:when den Dienstendpunkt seine Verbindungsgrenze erreicht und keine weiteren Verbindungen verarbeiten WCFWCF 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, WCFWCF 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 zuverlässiges WS-Messaging WS-Adressierung verwendet, kann die WCFWCF-Implementierung von zuverlässigem WS-Messaging WS-Adressierungsfehler generieren.Because WS-Reliable Messaging uses WS-Addressing, WCFWCF WS-Reliable Messaging implementation may generate WS-Addressing faults. In diesem Abschnitt werden die WS-Adressierungsfehler erläutert, die WCFWCF explizit auf der Ebene des zuverlässigen WS-Messaging generiert.This section covers the WS-Addressing faults that WCFWCF explicitly generates at the WS-Reliable Messaging layer:

  • B1601:WCFWCF generiert den Fehler, die Nachricht adressiert Header erforderlich, wenn eine der folgenden Aussagen zutrifft:B1601:WCFWCF 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:WCFWCF 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:WCFWCF 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:WCFWCF 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:WCFWCF 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

WCFWCF unterstützt zwei Versionen der WS-Adressierung: WS-Adressierung 2004/08 [WS-ADDR] und die Empfehlungen für W3C die WS-Addressierung 1.0 [WS-WS-ADDR-CORE] und [WS-ADDR-SOAP]. 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. Die folgende Liste enthält die Einschränkungen, die für WCFWCF gelten:The following is a list of constraints that apply to WCFWCF:

  • 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

WCFWCF unterstützt die Verwendung sowohl von SOAP 1.1 als auch von SOAP 1.2 mit zuverlässigem WS-Messaging. 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

WCFWCF bietet Schutz für die zuverlässigen WS-Messaging-Sequenzen durch die Verwendung einer sicheren Transportmethode (HTTPS), die Erstellung mit WS-Sicherheit und die Erstellung mit WS-Secure Conversation. provides protection for WS-Reliable Messaging sequences by using secure Transport (HTTPS), composition with WS-Security, and composition with WS-Secure Conversation. Die folgende Liste enthält die Einschränkungen, die für WCFWCF gelten:The following is a list of constraints that apply to WCFWCF:

  • R2301: Schützen Sie die Integrität einer WS-Reliable Messaging-Sequenz neben der Integrität und Vertraulichkeit einzelner Nachrichten WCFWCF 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, WCFWCF 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 WCFWCF-Quelle generiert das wsse:SecurityTokenReference-Element im Abschnitt Elementerweiterbarkeit der CreateSequence-Nachricht.The WCFWCF 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

WCFWCF verwendet die WS-Richtlinienassertion wsrm:RMAssertion des zuverlässigen WS-Messaging, um die Fähigkeiten von Endpunkten zu beschreiben. uses WS-Reliable Messaging WS-Policy Assertion wsrm:RMAssertion to describe endpoints capabilities. Die folgende Liste enthält die Einschränkungen, die für WCFWCF gelten:The following is a list of constraints that apply to WCFWCF:

  • B3001: WCFWCF fügt die wsrm:RMAssertion-WS-Richtlinienassertion an wsdl:binding-Elemente an.B3001: WCFWCF attaches wsrm:RMAssertion WS-Policy Assertion to wsdl:binding elements. WCFWCF unterstützt sowohl das Anfügen an wsdl:binding-Elemente als auch an wsdl:port-Elemente. supports both attachments to wsdl:binding and wsdl:port elements.

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

    • 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

WCFWCF verwendet die Erweiterbarkeit des zuverlässigen WS-Messaging, um optional eine bessere Steuerung des Sequenznachrichtenflusses zu ermöglichen. 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. Die folgende Liste enthält die Einschränkungen, die für WCFWCF gelten:The following is a list of constraints that apply to WCFWCF:

  • B4001: Wenn die zuverlässige Messaging-Ablaufsteuerung aktiviert ist, generiert WCFWCF ein netrm:BufferRemaining-Element in der Elementerweiterbarkeit des SequenceAcknowledgement-Headers.B4001: When Reliable Messaging Flow Control is enabled, WCFWCF generates a netrm:BufferRemaining element in the element extensibility of the SequenceAcknowledgement header.

  • B4002: Wenn die zuverlässige Messaging-Ablaufsteuerung aktiviert ist, erfordert WCFWCF kein netrm:BufferRemaining-Element im SequenceAcknowledgement-Header, wie im folgenden Beispiel zu sehen:B4002: When Reliable Messaging Flow Control is enabled, WCFWCF 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: WCFWCF verwendet netrm:BufferRemaining, um anzugeben, wie viele neue Nachrichten das zuverlässige Messaging-Ziel puffern kann.B4003: WCFWCF uses netrm:BufferRemaining to indicate how many new messages the Reliable Messaging Destination can buffer.

  • B4004: die WCFWCF 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 WCFWCF 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: WCFWCF generiert netrm:BufferRemaining-Ganzzahlwerte zwischen 0 und 4096 einschließlich und liest Ganzzahlwerte zwischen 0 und dem xs:int-Wert von maxInclusive (214748364) einschließlich.B4005: WCFWCF 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

In diesem Abschnitt wird das Verhalten von WCFWCF bei Verwendung von zuverlässigem WS-Messaging für verschiedene Nachrichtenaustauschmuster beschrieben.This section describes WCFWCF'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

WCFWCF stellt ein unidirektionales Nachrichtenaustauschmuster unter Verwendung einer Sequenz über einen HTTP-Kanal bereit. provides a one-way message exchange pattern using one sequence over one HTTP channel. WCFWCF verwendet die HTTP-Anforderungen, um alle Nachrichten vom RMS zum RMD zu übertragen, und die HTTP-Antworten, um alle Nachrichten vom RMD zum RMS zu übertragen. 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 WCFWCF-Initiator generiert eine CreateSequence-Nachricht ohne Angebot.The WCFWCF Initiator generates a CreateSequence message with no offer. Der WCFWCF-Beantworter stellt vor dem Erstellen einer Sequenz sicher, dass die CreateSequence-Nachricht kein Angebot aufweist.The WCFWCF Responder ensures the CreateSequence has no offer before creating a sequence. Der WCFWCF-Beantworter antwortet mit einer CreateSequence-Nachricht auf die CreateSequenceResponse-Anforderung.The WCFWCF Responder replies to the CreateSequence request with a CreateSequenceResponse message.

SequenceAcknowledgementSequenceAcknowledgement

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

TerminateSequence-NachrichtTerminateSequence message

WCFWCF behandelt TerminateSequence als unidirektionalen Vorgang, was bedeutet, dass die HTTP-Antwort einen leeren Textbereich und den HTTP-Statuscode&#160;202 hat. 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

WCFWCF bietet ein unidirektionales Nachrichtenaustauschmuster unter Verwendung eines eingehenden und eines ausgehenden HTTP-Kanals. provides a one-way message exchange pattern using one sequence over an inbound and an outbound Http channel. WCFWCF verwendet HTTP-Anforderungen zur Übertragung aller Nachrichten. 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 WCFWCF-Initiator generiert eine CreateSequence-Nachricht ohne Angebot.The WCFWCF Initiator generates a CreateSequence message with no offer. Der WCFWCF-Beantworter stellt vor dem Erstellen einer Sequenz sicher, dass die CreateSequence-Nachricht kein Angebot aufweist.The WCFWCF Responder ensures that the CreateSequence has no offer before creating a sequence. Der WCFWCF-Beantworter sendet die CreateSequenceResponse-Nachricht über eine HTTP-Anforderung, die mit dem ReplyTo-Endpunktverweis adressiert wird.The WCFWCF Responder transmits the CreateSequenceResponse message on an HTTP request addressed with the ReplyTo endpoint reference.

Adressierbarer Duplex-InitiatorDuplex, Addressable Initiator

BindungBinding

WCFWCF bietet ein vollständig asynchrones bidirektionales Nachrichtenaustauschmuster unter Verwendung zweier Sequenzen über einen eingehenden und einen ausgehenden HTTP-Kanal. provides a fully asynchronous two-way message exchange pattern using two sequences over an inbound and an outbound HTTP channel. WCFWCF verwendet HTTP-Anforderungen zur Übertragung aller Nachrichten. 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 WCFWCF-Initiator generiert eine CreateSequence-Nachricht mit einem Angebot.The WCFWCF Initiator generates a CreateSequence message with an offer. Der WCFWCF-Beantworter stellt vor dem Erstellen einer Sequenz sicher, dass die CreateSequence-Nachricht ein Angebot aufweist.The WCFWCF Responder ensures that the CreateSequence has an offer before creating a sequence. WCFWCF sendet die CreateSequenceResponse über eine HTTP-Anforderung, die an den CreateSequence-Endpunktverweis von ReplyTo adressiert wird. sends the CreateSequenceResponse on the HTTP request addressed to the CreateSequence’s ReplyTo endpoint reference.

SequenzlebensdauerSequence Lifetime

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

Nach dem Generieren eines Fehlers für eine Sequenz erwartet WCFWCF, dass der Remoteendpunkt einen Fehler für beide Sequenzen auslöst.Upon generating a fault that faults one sequence, WCFWCF expects the remote endpoint to fault both sequences. Nach dem Lesen eines Fehlers, der zum Fehlschlagen einer Sequenz führt, löst WCFWCF einen Fehler für beide Sequenzen aus.Upon reading a fault that faults one sequence, WCFWCF faults both sequences.

WCFWCF kann seine ausgehende Sequenz schließen und damit fortfahren, Nachrichten in seiner eingehenden Sequenz zu verarbeiten. can close its outbound sequence and continue to process messages on its inbound sequence. Umgekehrt kann WCFWCF auch das Schließen der eingehenden Sequenz durchführen und weiter Nachrichten in seiner ausgehenden Sequenz senden.Conversely, WCFWCF 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

WCFWCF bietet ein unidirektionales Anforderung-Antwort-Nachrichtenaustauschmuster unter Verwendung zweier Sequenzen über einen HTTP-Kanal. provides a one-way and request-reply message exchange pattern using two sequences over one HTTP channel. WCFWCF verwendet HTTP-Anforderungen, um Anforderungssequenznachrichten zu übertragen, und HTTP-Antworten, um Antwortsequenznachrichten zu übertragen. 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 WCFWCF-Initiator generiert eine CreateSequence-Nachricht mit einem Angebot.The WCFWCF Initiator generates a CreateSequence message with an offer. Der WCFWCF-Beantworter stellt vor dem Erstellen einer Sequenz sicher, dass die CreateSequence-Nachricht ein Angebot aufweist.The WCFWCF Responder ensures that the CreateSequence has an offer before creating a sequence. Der WCFWCF-Beantworter antwortet mit einer CreateSequence-Nachricht auf die CreateSequenceResponse-Anforderung.The WCFWCF Responder replies to the CreateSequence request with a CreateSequenceResponse message.

Unidirektionale NachrichtOne-way Message

Um ein unidirektionales Nachrichtenaustauschprotokoll erfolgreich durchzuführen, überträgt der WCFWCF-Initiator eine Anforderungssequenznachricht in der HTTP-Anforderung und empfängt eine eigenständige SequenceAcknowledgement-Nachricht in der HTTP-Antwort.To complete a one-way message exchange protocol successfully, the WCFWCF 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 WCFWCF-Beantworter kann mit einer Bestätigung, einem Fehler oder einer Antwort mit leerem Textbereich und dem HTTP-Statuscode 202 auf die Anforderung reagieren.The WCFWCF 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 ein bidirektionales Nachrichtenaustauschprotokoll erfolgreich durchzuführen, überträgt der WCFWCF-Initiator 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 WCFWCF 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 WCFWCF-Beantworter kann mit einer Anwendungsantwort, einem Fehler oder einer Antwort mit leerem Textbereich und dem HTTP-Statuscode "202" auf die Anforderung reagieren.The WCFWCF 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

WCFWCF nutzt die HTTP-Anforderung-Antwort-Korrelation für das bidirektionale Nachrichtenaustauschprotokoll. relies on HTTP request-reply correlation for two-way message exchange protocol correlation. Daher wiederholt der WCFWCF-Initiator eine Anforderungssequenznachricht auch dann weiter, wenn die Anforderungssequenznachricht bestätigt wird. Er hört erst dann auf, wenn die HTTP-Antwort eine Bestätigung, eine Benutzernachricht oder einen Fehler enthält.Because of this, the WCFWCF 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 WCFWCF-Beantworter wiederholt die Antworten auf den HTTP-Anforderungsabschnitt der Anforderung, mit der die Antwort korreliert ist.The WCFWCF Responder retries replies on the HTTP request leg of the request to which the reply is correlated.

LastMessage-AustauschLastMessage Exchange

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

Wenn der WCFWCF-Beantworter eine letzte Nachricht empfängt, in der der Aktions-URI nicht http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage lautet, antwortet WCFWCF mit einer letzten Nachricht.If the WCFWCF Responder receives a last message in which the action URI is not http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage, WCFWCF 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 WCFWCF-Beantworter benötigt keine Bestätigung für die letzte Antwortsequenznachricht ohne Text.The WCFWCF Responder does not require an acknowledgement for the reply sequence’s empty-bodied last message.

TerminateSequence-AustauschTerminateSequence Exchange

Wenn alle Anforderungen eine gültige Antwort erhalten haben, generiert und überträgt der WCFWCF-Initiator die TerminateSequence-Nachricht der Anforderungssequenz auf den HTTP-Anforderungsabschnitt.When all requests have received a valid reply, the WCFWCF Initiator generates and transmits the request sequence’s TerminateSequence message on the HTTP request leg. WCFWCF erfordert eine Antwort, ignoriert jedoch diese Antwortnachricht. requires a response but ignores the actual response message. Der WCFWCF-Beantworter reagiert auf die TerminateSequence-Nachricht der Anforderungssequenz mit einer TerminateSequence-Nachricht der Antwortsequenz.The WCFWCF 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

WCFWCF bietet ein Anforderung-Antwort-Nachrichtenaustauschmuster unter Verwendung zweier Sequenzen über einen eingehenden und einen ausgehenden HTTP-Kanal. provides a request-reply message exchange pattern using two sequences over an inbound and an outbound HTTP channel. WCFWCF verwendet HTTP-Anforderungen zur Übertragung aller Nachrichten. 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 WCFWCF-Initiator generiert eine CreateSequence-Nachricht mit einem Angebot.The WCFWCF Initiator generates a CreateSequence message with an offer. Der WCFWCF-Beantworter stellt vor dem Erstellen einer Sequenz sicher, dass die CreateSequence-Nachricht ein Angebot aufweist.The WCFWCF Responder ensures that the CreateSequence has an offer before creating a sequence. WCFWCF sendet die CreateSequenceResponse über eine HTTP-Anforderung, die an den CreateSequence-Endpunktverweis von ReplyTo adressiert wird. sends the CreateSequenceResponse on the HTTP request addressed to the CreateSequence’s ReplyTo endpoint reference.

Anforderung/Antwort-KorrelationRequest/Reply Correlation

Der WCFWCF-Initiator stellt sicher, dass alle Anwendungsanforderungsnachrichten eine MessageId und einen ReplyTo-Endpunktverweis enthalten.The WCFWCF Initiator ensures all application request messages bear a MessageId and a ReplyTo endpoint reference. Der WCFWCF-Initiator wendet den CreateSequence-Endpunktverweis der ReplyTo-Nachricht für jede Anwendungsanforderungsnachricht an.The WCFWCF Initiator applies the CreateSequence message’s ReplyTo endpoint reference on each application request message. Der WCFWCF-Beantworter erfordert, dass alle Anwendungsanforderungsnachrichten eine MessageId und einen ReplyTo-Endpunktverweis enthalten.The WCFWCF Responder requires that incoming request messages bear a MessageId and a ReplyTo. Der WCFWCF-Beantworter stellt sicher, dass die URIs der Endpunktverweise der CreateSequence-Nachrichten und aller Anwendungsanforderungsnachrichten identisch sind.The WCFWCF Responder ensures that the endpoint reference’s URI of both the CreateSequence and all application request messages are identical.