Ações de roteamento e resposta: Conectando incompatibilidades de protocolo

Atualizado: julho de 2015

A incompatibilidade de protocolos entra em jogo quando o remetente e o destinatário de uma mensagem operam em protocolos de mensagem diferentes. Em um cenário comum do Serviços BizTalk envolvendo pontes, o remetente de uma mensagem envia uma mensagem à ponte. A ponte processa a mensagem e a envia para o destinatário da mensagem. Isso significa que a incompatibilidade dos protocolos precisa ser resolvida em duas instâncias:

  • Primeiro, quando a mensagem é enviada ao destinatário da mensagem. Isso é aplicável a Ponte unidirecional XML e a Ponte de solicitação-resposta XML, pois nos dois casos a mensagem precisa ser enviada a um destinatário de mensagem. Isso é chamado de Ação de Rota.

  • Segundo quando a mensagem de resposta recebida pelo destinatário da mensagem é enviada de volta ao remetente da mensagem. Isso é aplicável somente na Ponte de solicitação-resposta XML, pois apenas para essa ponte é preciso enviar de volta uma resposta ao remetente da mensagem. Isso é chamado de Ação de Resposta.

As ações de Rota e de Resposta operam sobre as propriedades que você define no estágio de Enriquecimento.

Vamos considerar um cenário a fim de entender como a ação de Rota pode ser usada para realizar uma incompatibilidade de protocolos. De acordo com o cenário, uma mensagem POX (Plain Old XML)/REST precisa ser enviada a um serviço WCF (que espera uma mensagem SOAP) por meio de um Ponte unidirecional XML. A mensagem enviada a uma ponte é uma carga XML simples e não tem cabeçalhos. Por outro lado, a mensagem de saída para o serviço WCF precisa ter alguns cabeçalhos SOAP definidos. Para ponte essa incompatibilidade de protocolos, a persona que configura a ponte usa a ação de Rota para atribuir alguns cabeçalhos de mensagem SOAP pertinentes, como Action, MessageID, etc., à mensagem de saída. Após a configuração e a implantação da ponte no Barramento do Serviço, uma mensagem POX é enviada à ponte. Após o processamento da mensagem, mas antes do roteamento da mensagem para o serviço WCF, os cabeçalhos especificados na ação de Rota da ponte são aplicados à mensagem e em seguida enviados ao serviço WCF, resolvendo a incompatibilidade de protocolos. Para configurar uma ação de Rota, consulte The Routing Action.

A tabela a seguir lista como os valores de propriedade podem ser transferidos entre estágios intermediários (ou o destino) de um Projeto do Serviço BizTalk usando ações de Rota:

 

De/Para Para outras pontes Para filas e tópicos Para retransmissão ou pontos de extremidade de serviço externos

De ponte

As propriedades não podem ser transferidas como estão (pares chave-valor), mas podem ser repassadas atribuindo-se a elas valores de cabeçalhos de mensagens de saída (HTTP ou SOAP)

As propriedades podem ser transferidas como estão (pares chave-valor) e também podem ser repassadas como valores de cabeçalhos de mensagens de saída

As propriedades não podem ser transferidas como estão (pares chave-valor), mas podem ser repassadas atribuindo-se a elas valores de cabeçalhos de mensagens de saída (HTTP ou SOAP). No entanto, é prerrogativa do designer da ponte assegurar que os cabeçalhos pertinentes, que podem ser consumidos pela retransmissão ou pelo serviço externo, sejam repassados.

A ação de Resposta é parecida com a ação de Rota. A única diferença é que enquanto a ação de Rota é aplicável quando a mensagem é enviada ao destinatário previsto da mensagem (em Ponte unidirecional XML ou Ponte de solicitação-resposta XML), a ação de Resposta é aplicável quando a mensagem de resposta de um destinatário da mensagem precisa ser roteada de volta ao remetente da mensagem (apenas no caso de Ponte de solicitação-resposta XML.)

Para entender melhor isso, você pode simplesmente reverter o cenário usado para a ação de Rota. Considere que o remetente da mensagem precisa enviar uma mensagem SOAP ao serviço REST que espera a mensagem POX/REST, por meio de uma Ponte de solicitação-resposta XML. A mensagem enviada à ponte é uma mensagem SOAP com todos os cabeçalhos pertinentes. A ponte, antes do roteamento da mensagem para o serviço REST, retira implicitamente os cabeçalhos de mensagem e envia apenas a carga XML ao serviço REST. A resposta do serviço REST também é uma mensagem POX. Antes da mensagem de resposta POX ser enviada de volta ao remetente da mensagem, a ação de Resposta aplica os cabeçalhos de mensagem na mensagem POX e envia a mensagem envelopada por SOAP para o remetente da mensagem. Para configurar uma ação de Resposta, consulte Create an XML Request-Reply Bridge.

A tabela a seguir lista como os valores de propriedade podem ser transferidos de volta de uma ponte para o cliente que está enviando a mensagem usando as ações de Resposta:

 

De/Para Para outras pontes Para retransmissão ou pontos de extremidade de serviço externos

De ponte

As propriedades não podem ser transferidas como estão (pares chave-valor), mas podem ser repassadas atribuindo-se a elas valores de cabeçalhos de mensagens de saída (HTTP ou SOAP)

As propriedades não podem ser transferidas como estão (pares chave-valor), mas podem ser repassadas atribuindo-se a elas valores de cabeçalhos de mensagens de saída (HTTP ou SOAP). No entanto, é prerrogativa do designer da ponte assegurar que os cabeçalhos pertinentes, que podem ser consumidos pela retransmissão ou pelo serviço externo, sejam repassados.

Embora seja possível usar as ações de Rota e de Resposta para configurar propriedades de cabeçalho da mensagem, é necessário considerar os seguintes pontos:

  • Você precisa ter cuidado ao usar os cabeçalhos de mensagem SOAP To e ReplyTo. Isso é porque a associação subjacente, como as associações WCF, pode substituir esses cabeçalhos de mensagem. Portanto, se o aplicativo que consome essas mensagens estiver esperando os cabeçalhos de mensagem que você definiu por meio das ações de Rota ou de Resposta, poderão resultar erros inesperados.

  • Você não deve definir o cabeçalho SOAP MessageID ao rotear uma mensagem aos pontos de extremidade que usam basicHttpBinding ou basicHttpRelayBinding.

Consulte também

Conceitos

O que são Pontes?

Mostrar: