Compartilhar via


Protocolo de mensagens confiável versão 1.0

Este tópico aborda os detalhes de implementação do WCF (Windows Communication Foundation) para o protocolo WS-Reliable Messaging de fevereiro de 2005 (versão 1.0) necessário para interoperação usando o transporte HTTP. O WCF segue a especificação WS-Reliable Messaging com as restrições e esclarecimentos explicados neste tópico. Observe que o protocolo WS-ReliableMessaging versão 1.0 é implementado a partir do WinFX.

O protocolo WS-Reliable Messaging de fevereiro de 2005 é implementado no WCF pelo ReliableSessionBindingElement.

Para conveniência, o tópico usa as seguintes funções:

  • Iniciador: o cliente que inicia a criação da sequência de mensagens WS-Reliable

  • Respondente: o serviço que recebe as solicitações do iniciador

Este documento usa os prefixos e os namespaces na tabela a seguir.

Prefixo Namespace
wsrm http://schemas.xmlsoap.org/ws/2005/02/rm
netrm http://schemas.microsoft.com/ws/2006/05/rm
s http://www.w3.org/2003/05/soap-envelope
wsa http://schemas.xmlsoap.org/ws/2005/08/addressing
wsse http://docs.oasis-open.org/wss/2004/01/oasis-200401-wssecurity-secext-1.0.xsd

Mensagens

Mensagens de estabelecimento de sequência

O WCF implementa as mensagens CreateSequence e CreateSequenceResponse para estabelecer uma sequência de mensagens confiável. As seguintes restrições se aplicam:

  • B1101: o Iniciador do WCF não gera o elemento opcional Expires na mensagem CreateSequence ou, nos casos em que a mensagem CreateSequence contém um elemento Offer, o elemento opcional Expires no elemento Offer.

  • B1102: ao acessar a mensagem CreateSequence, o WCFResponder enviará e receberá ambos os elementos Expires se existirem, mas não usará seus valores.

WS-Reliable Messaging introduz o mecanismo Offer para estabelecer as duas sequências correlacionadas inversas que formam uma sessão.

  • R1103: se CreateSequence contiver um elemento Offer, o Respondente de Reliable Messaging deverá aceitar a sequência e responder com CreateSequenceResponse que contém um elemento wsrm:Accept, formando duas sequências correlacionadas inversas ou rejeitando a solicitação CreateSequence.

  • R1104: SequenceAcknowledgement e as mensagens de aplicativo que fluem na sequência inversa devem ser enviadas para a referência de ponto de extremidade ReplyTo do CreateSequence.

  • R1105: as referências de ponto de extremidade AcksTo e ReplyTo em CreateSequence devem ter valores de endereço que correspondam ao octeto.

    O Respondente do WCF verifica se a parte do URI e os EPRs AcksTo e ReplyTo são idênticos antes de criar uma sequência.

  • R1106: as referências de ponto de extremidade AcksTo e ReplyTo em CreateSequence devem ter o mesmo conjunto de parâmetros de referência.

    O WCF não impõe, mas pressupõe que [parâmetros de referência] de AcksTo e ReplyTo em CreateSequence são idênticos e usa [parâmetros de referência] da referência de ponto de extremidade ReplyTo para confirmações e mensagens de sequência inversa.

  • R1107: quando duas sequências inversas são estabelecidas usando o mecanismo Offer e as mensagens de aplicativo SequenceAcknowledgement que fluem em sequências inversas devem ser enviadas para a referência de ponto de extremidade ReplyTo do CreateSequence.

  • R1108: quando duas sequências inversas são estabelecidas usando o mecanismo Offer, a propriedade [address] do elemento filho de Referência de ponto de extremidade wsrm:AcksTo do elemento wsrm:Accept do CreateSequenceResponse deve corresponder a cada byte do URI de destino do CreateSequence.

  • R1109: quando duas sequências inversas são estabelecidas usando o mecanismo Offer, as mensagens enviadas pelo iniciador e as confirmações às mensagens pelo respondente devem ser enviadas para a mesma Referência de ponto de extremidade.

    O WCF usa WS-Reliable Messaging para estabelecer sessões confiáveis entre o iniciador e o respondente. A implementação de mensagens WS-Reliable do WCF fornece uma sessão confiável para padrões de mensagens duplex unidirecionais, de solicitação-resposta e full duplex. O mecanismo Offer de WS-Reliable Messaging em CreateSequence/CreateSequenceResponse permite estabelecer duas sequências inversas correlacionadas e fornece um protocolo de sessão adequado para todos os pontos de extremidade de mensagem. Como o WCF fornece uma garantia de segurança para essa sessão, incluindo a proteção de ponta a ponta para a integridade da sessão, é prático garantir que as mensagens destinadas à mesma parte cheguem ao mesmo destino. Isso também permite o piggy-back de confirmações de sequência em mensagens de aplicativo. Portanto, as restrições R1104, R1105 e R1108 se aplicam ao WCF.

Um exemplo de uma mensagem CreateSequence.

<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>

Um exemplo de uma mensagem CreateSequenceResponse.

<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>

Sequência

Veja a seguir uma lista de restrições que se aplicam a sequências:

  • B1201: o WCF gera e acessa números de sequência não superiores ao valor inclusivo máximo de xs:long, 9223372036854775807.

  • B1202: o WCF sempre gera uma última mensagem vazia com o URI de ação de http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage.

  • B1203: o WCF recebe e entrega uma mensagem com um cabeçalho Sequence que contém um elemento LastMessage, desde que o URI de ação não seja http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage.

Um exemplo de cabeçalho Sequence.

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

Cabeçalho AckRequested

O WCF usa o cabeçalho AckRequested como um mecanismo de keep alive. O WCF não gera o elemento opcional MessageNumber. Ao receber uma mensagem com um cabeçalho AckRequested que contém o elemento MessageNumber, o WCF ignora o valor do elemento MessageNumber, conforme mostrado no exemplo a seguir.

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

Cabeçalho SequenceAcknowledgement

O WCF usa o mecanismo piggy-back para confirmações de sequência fornecidas no WS-Reliable Messaging.

  • R1401: quando duas sequências inversas são estabelecidas usando o mecanismo Offer, o cabeçalho SequenceAcknowledgement pode ser incluído em qualquer mensagem de aplicativo transmitida para o destinatário pretendido.

  • B1402: quando o WCF deve gerar uma confirmação antes de receber qualquer mensagem de sequência (por exemplo, para atender a uma mensagem AckRequested), o WCF gera um cabeçalho SequenceAcknowledgement que contém o intervalo 0-0, conforme mostrado no exemplo a seguir.

    <wsrm:SequenceAcknowledgement>
      <wsrm:Identifier>
        urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36
      </wsrm:Identifier>
      <wsrm:AcknowledgementRange Upper="0" Lower="0"/>
    </wsrm:SequenceAcknowledgement>
    
  • B1403: o WCF não gera cabeçalhos SequenceAcknowledgement que contêm um elemento Nack, mas dá suporte a elementos Nack.

Falhas de WS-ReliableMessaging

Veja a seguir uma lista de restrições que se aplicam à implementação do WCF de falhas de WS-Reliable Messaging:

  • B1501: o WCF não gera falhas de MessageNumberRollover.

  • B1502: o ponto de extremidade do WCF pode gerar falhas de CreateSequenceRefused conforme descrito na especificação.

  • B1503: quando o ponto de extremidade de serviço atinge seu limite de conexão e não pode processar novas conexões, o WCF gera um subcódigo de falha de CreateSequenceRefused adicional, netrm:ConnectionLimitReached, conforme mostrado no exemplo a seguir.

    <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>
    

Falhas de WS-Addressing

Como o WS-Reliable Messaging usa o WS-Addressing, a implementação do WCF WS-Reliable Messaging pode gerar falhas de WS-Addressing. Esta seção aborda as falhas de WS-Addressing que o WCF gera explicitamente na camada WS-Reliable Messaging:

  • B1601: WCF gera o cabeçalho Message Addressing necessário quando um dos seguintes é verdadeiro:

    • Uma mensagem está sem um cabeçalho Sequence e um cabeçalho Action.

    • Uma mensagem CreateSequence está sem um cabeçalho MessageId.

    • Uma mensagem CreateSequence está sem um cabeçalho ReplyTo.

  • B1602: o WCF gera a ação de falha de Action Not Supported em resposta a uma mensagem que está sem um cabeçalho Sequence e tem um cabeçalho Action que não é reconhecido na especificação WS-Reliable Messaging.

  • B1603: o WCF gera a falha Endpoint Unavailable para indicar que o ponto de extremidade não processa a sequência com base no exame dos cabeçalhos de endereçamento da mensagem CreateSequence.

Composição de protocolo

Composição com WS-Addressing

O WCF dá suporte a duas versões do WS-Addressing: WS-Addressing 2004/08 [WS-ADDR] e W3C WS-Addressing 1.0 Recommendations [WS-ADDR-CORE] e [WS-ADDR-SOAP].

Embora a especificação WS-Reliable Messaging mencione apenas WS-Addressing 2004/08, ela não restringe a versão WS-Addressing a ser usada. Veja a seguir uma lista de restrições que se aplicam ao WCF:

  • R2101: WS-Addressing 2004/08 e WS-Addressing 1.0 podem ser usados com WS-Reliable Messaging.

  • R2102: uma única versão do WS-Addressing deve ser usada em uma determinada sequência WS-Reliable Messaging ou um par de sequências inversas correlacionadas usando o mecanismo wsrm:Offer.

Composição com SOAP

O WCF dá suporte ao uso de SOAP 1.1 e SOAP 1.2 com WS-Reliable Messaging.

Composição com WS-Security e WS-SecureConversation

O WCF fornece proteção para sequências de mensagens WS-Reliable usando transporte seguro (HTTPS), composição com WS-Security e composição com WS-Secure Conversation. Veja a seguir uma lista de restrições que se aplicam ao WCF:

  • R2301: para proteger a integridade de uma sequência WS-Reliable Messaging, além da integridade e da confidencialidade de mensagens individuais, o WCF requer que WS-Secure Conversation seja usado.

  • R2302: a sessão AWS-Secure Conversation deve ser estabelecida antes de se estabelecer sequências WS-Reliable Messaging.

  • R2303: se o tempo de vida da sequência WS-Reliable Messaging exceder o tempo de vida da sessão de WS-Secure Conversation, o SecurityContextToken estabelecido pelo uso de WS-Secure Conversation deve ser renovado usando a associação WS-Secure Conversation Renewal correspondente.

  • B2304: a sequência WS-Reliable Messaging ou um par de sequências inversas correlacionadas são sempre associadas a uma única sessão de WS-SecureConversation.

    A origem WCF gera o elemento wsse:SecurityTokenReference na seção de extensibilidade do elemento da mensagem CreateSequence.

  • R2305: quando composta com WS-Secure Conversation, uma mensagem CreateSequence deve conter o elemento wsse:SecurityTokenReference.

WS-Reliable Messaging WS-Policy Assertion

O WCF usa WS-Reliable Messaging WS-Policy Assertion wsrm:RMAssertion para descrever os recursos de pontos de extremidade. Veja a seguir uma lista de restrições que se aplicam ao WCF:

  • B3001: o WCF anexa a Declaração de WS-Policy wsrm:RMAssertion a elementos wsdl:binding. O WCF dá suporte a anexos para os elementos wsdl:binding e wsdl:port.

  • B3002: o WCF dá suporte às seguintes propriedades opcionais da instrução de declaração WS-Reliable Messaging e fornece controle sobre elas no WCFReliableMessagingBindingElement:

    • wsrm:InactivityTimeout

    • wsrm:AcknowledgementInterval

    A seguir, é mostrado um exemplo.

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

Extensão de WS-Reliable Messaging de controle de fluxo

O WCF usa a extensibilidade de WS-Reliable Messaging para fornecer controle adicional mais rigoroso sobre o fluxo de mensagens de sequência.

O controle de fluxo é habilitado definindo a propriedade ReliableSessionBindingElement.FlowControlEnabled como true. Veja a seguir uma lista de restrições que se aplicam ao WCF:

  • B4001: quando o controle de fluxo de Reliable Messaging está habilitado, o WCF gera um elemento netrm:BufferRemaining na extensibilidade do elemento do cabeçalho SequenceAcknowledgement.

  • B4002: quando o controle de fluxo de Reliable Messaging está habilitado, o WCF não exige que um elemento netrm:BufferRemaining esteja presente no cabeçalho SequenceAcknowledgement, conforme mostrado no exemplo a seguir.

    <wsrm:SequenceAcknowledgement>
      <wsrm:Identifier>
        http://fabrikam123.com/abc
      </wsrm:Identifier>
      <wsrm:AcknowledgementRange Upper="1" Lower="1"/>
      <netrm:BufferRemaining>
        8
      </netrm:BufferRemaining>
    </wsrm:SequenceAcknowledgement>
    
  • B4003: o WCF usa netrm:BufferRemaining para indicar quantas novas mensagens o destino de Reliable Messaging pode armazenar em buffer.

  • B4004: o serviço de Reliable Messaging do WCF limita o número de mensagens transmitidas quando o aplicativo de destino de Reliable Messaging não pode receber mensagens rapidamente. O destino do Reliable Messaging armazena mensagens em buffer e o valor do elemento cai para 0.

  • B4005: o WCF gera netrm:BufferRemaining valores inteiros entre 0 e 4096 inclusive e lê valores inteiros entre 0 e o valor 214748364 maxInclusive de xs:int inclusive.

Padrões de troca de mensagens.

Esta seção descreve o comportamento do WCF quando WS-Reliable Messaging é usado para diferentes Padrões de troca de mensagens. Para cada Padrão de troca de mensagens, os dois cenários de implantações a seguir são considerados:

  • Iniciador não endereçável: o iniciador está atrás do firewall; r respondente pode entregar mensagens ao iniciador somente em respostas HTTP.

  • Iniciador endereçável: solicitações HTTP podem ser enviadas ao iniciador e ao respondente; em outras palavras, duas conexões HTTP inversas podem ser estabelecidas.

Iniciador unidirecional não endereçável

Associação

O WCF fornece um padrão de troca de mensagens unidirecionais usando uma sequência em um canal HTTP. O WCF usa as solicitações HTTP para transmitir todas as mensagens do RMS para o RMD e a resposta HTTP para transmitir todas as mensagens do RMD para o RMS.

CreateSequence Exchange

O Iniciador do WCF gera uma mensagem CreateSequence sem oferta. O Respondente do WCF garante que CreateSequence não tem nenhuma oferta antes de criar uma sequência. O Respondente do WCF responde à solicitação CreateSequence com uma mensagem CreateSequenceResponse.

SequenceAcknowledgement

O Iniciador do WCF processa confirmações na resposta de todas as mensagens, exceto a mensagem CreateSequence e as mensagens de falha. O Respondente do WCF sempre gera uma confirmação autônoma na resposta à sequência e às mensagens AckRequested.

Mensagem TerminateSequence

O WCF trata TerminateSequence como uma operação unidirecional, o que significa que a resposta HTTP tem um corpo vazio e um código de status HTTP 202.

Iniciador unidirecional, endereçável

Associação

O WCF fornece um padrão de troca de mensagens unidirecionais usando uma sequência em um canal HTTP de entrada e um de saída. O WCF usa as solicitações HTTP para transmitir todas as mensagens. Todas as respostas HTTP têm um corpo vazio e um código de status HTTP 202.

CreateSequence Exchange

O Iniciador do WCF gera uma mensagem CreateSequence sem oferta. O Respondente do WCF garante que CreateSequence não tem nenhuma oferta antes de criar uma sequência. O Respondente do WCF transmite a mensagem CreateSequenceResponse em uma solicitação HTTP endereçada com a referência do ponto de extremidade ReplyTo.

Iniciador duplex, endereçável

Associação

O WCF fornece um padrão de troca de mensagens bidirecional totalmente assíncrono usando duas sequências em um canal HTTP de entrada e um de saída. O WCF usa as solicitações HTTP para transmitir todas as mensagens. Todas as respostas HTTP têm um corpo vazio e um código de status HTTP 202.

CreateSequence Exchange

O Iniciador do WCF gera uma mensagem CreateSequence com uma oferta. O Respondente do WCF garante que CreateSequence tem uma oferta antes de criar uma sequência. O WCF envia CreateSequenceResponse na solicitação HTTP endereçada à referência de ponto de extremidade ReplyTo de CreateSequence.

Tempo de vida da sequência

O WCF trata as duas sequências como uma sessão totalmente duplex.

Ao gerar uma falha que causa falha em uma sequência, o WCF espera que o ponto de extremidade remoto cause falha nas duas sequências. Ao ler uma falha que causa falha em uma sequência, o WCF causa falha em ambas as sequências.

O WCF pode fechar sua sequência de saída e continuar processando mensagens em sua sequência de entrada. Por outro lado, o WCF pode processar o fechamento da sequência de entrada e continuar enviando mensagens em sua sequência de saída.

Iniciador não endereçável, de solicitação-resposta

Associação

O WCF fornece um padrão de troca de mensagens unidirecionais e de solicitação-resposta usando duas sequências em um canal HTTP. O WCF usa as solicitações HTTP para transmitir as mensagens da sequência de solicitação e usa as respostas HTTP para transmitir as mensagens da sequência de respostas.

CreateSequence Exchange

O Iniciador do WCF gera uma mensagem CreateSequence com uma oferta. O Respondente do WCF garante que CreateSequence tem uma oferta antes de criar uma sequência. O Respondente do WCF responde à solicitação CreateSequence com uma mensagem CreateSequenceResponse.

Mensagem unidirecional

Para concluir um protocolo de troca de mensagens unidirecionais com êxito, o Iniciador do WCF transmite uma mensagem de sequência de solicitação na solicitação HTTP e recebe uma mensagem SequenceAcknowledgement autônoma na resposta HTTP. SequenceAcknowledgement deve confirmar a mensagem transmitida.

O Respondente do WCF pode responder à solicitação com uma confirmação, uma falha ou uma resposta com um corpo vazio e um código de status HTTP 202.

Mensagens bidirecionais

Para concluir um protocolo de troca de mensagens bidirecional com sucesso, o Iniciador do WCF transmite uma mensagem de sequência de solicitação na solicitação HTTP e recebe uma mensagem de sequência de respostas na resposta HTTP. A resposta deve conter um SequenceAcknowledgement confirmando a mensagem de sequência de solicitações transmitida.

O Respondente do WCF pode responder à solicitação com uma resposta de aplicativo, uma falha ou uma resposta com um corpo vazio e um código de status HTTP 202.

Devido à presença de mensagens unidirecionais e ao tempo das respostas do aplicativo, o número de sequência da mensagem de sequências de solicitação e o número da sequência da mensagem de resposta não têm correlação.

Repetindo respostas

O WCF depende da correlação de solicitação-resposta HTTP para correlação de protocolo de troca de mensagens bidirecionais. Por isso, o Iniciador do WCF não para de repetir uma mensagem de sequência de solicitações quando a mensagem de sequência de solicitações é reconhecida, mas sim quando a resposta HTTP carrega uma confirmação, uma mensagem do usuário ou uma falha. O Respondente do WCF repete as respostas na etapa de solicitação HTTP da solicitação à qual a resposta está correlacionada.

LastMessage Exchange

O Iniciador do WCF gera e transmite uma última mensagem com corpo vazia na etapa de solicitação HTTP. O WCF requer uma resposta, mas ignora a mensagem de resposta real. O Respondente do WCF responde à última mensagem com corpo vazia da sequência de solicitações com a última mensagem com corpo vazia da sequência de respostas.

Se o Respondente do WCF receber uma última mensagem na qual o URI de ação não é http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage, o WCF responderá com uma última mensagem. No caso de um protocolo de troca de mensagens bidirecionais, a última mensagem carrega a mensagem do aplicativo; no caso de um protocolo de troca de mensagens unidirecionais, a última mensagem está vazia.

O Respondente do WCF não requer uma confirmação para a última mensagem com corpo vazia da sequência de respostas.

TerminateSequence Exchange

Quando todas as solicitações tiverem recebido uma resposta válida, o Iniciador do WCF gerará e transmitirá a mensagem TerminateSequence da sequência de solicitações na etapa de solicitação HTTP. O WCF requer uma resposta, mas ignora a mensagem de resposta real. O Respondente do WCF responde à mensagem TerminateSequence da sequência de solicitações com a mensagem TerminateSequence da sequência de respostas.

Em uma sequência de desligamento normal, ambas as mensagens TerminateSequence carregam um intervalo SequenceAcknowledgementcompleto.

Iniciador não endereçável de solicitação-resposta

Associação

O WCF fornece um padrão de troca de mensagens de solicitação-resposta usando duas sequências em um canal HTTP de entrada e um de saída. O WCF usa as solicitações HTTP para transmitir todas as mensagens. Todas as respostas HTTP têm um corpo vazio e um código de status HTTP 202.

CreateSequence Exchange

O Iniciador do WCF gera uma mensagem CreateSequence com uma oferta. O Respondente do WCF garante que CreateSequence tem uma oferta antes de criar uma sequência. O WCF envia CreateSequenceResponse na solicitação HTTP endereçada à referência de ponto de extremidade ReplyTo de CreateSequence.

Correlação resposta/solicitação

O Iniciador do WCF garante que todas as mensagens de solicitação de aplicativo possuam uma referência de ponto de extremidade MessageId e ReplyTo. O Iniciador do WCF aplica a referência de ponto de extremidade ReplyTo da mensagem CreateSequence em cada mensagem de solicitação de aplicativo. O Respondente do WCF requer que as mensagens de solicitação de entrada possuam um MessageId e um ReplyTo. O Respondente do WCF garante que o URI da referência de ponto de extremidade de CreateSequence e todas as mensagens de solicitação de aplicativo seja idêntico.