Exportar (0) Imprimir
Expandir Tudo

How to integrate BizTalk Server 2010 / 2013 with Service Bus for Windows Server

Atualizado: março de 2014

Autor: Paolo Salvatori

Revisores: Mandi Ohlinger

Exemplo de download: Como integrar o BizTalk Server 2010/2013 ao Service Bus para Windows Server

O Microsoft BizTalk Server permite que as organizações se conectem e ampliem sistemas heterogêneos em toda a empresa e com os parceiros comerciais. O Service Bus fornece conectividade, enfileiramento e roteamento de capacidades para a nuvem e aplicativos locais. Na nuvem, o Service Bus está disponível na plataforma . No local, o Service Bus for Windows Server está disponível como um conjunto de componentes e serviços instaláveis​​.

Este tópico inclui um exemplo que evoluiu a partir de Como integrar um aplicativo do BizTalk Server 2010 com filas e tópicos do Service Bus. Esse exemplo demonstra como usar o WCF com o NetMessagingBinding para integrar um aplicativo do BizTalk Server 2010/2013 com Service Bus para Windows Server.

A solução utiliza os seguintes componentes para integrar o BizTalk Server e o Service Bus for Windows Server:

Este artigo mostra como usar esses componentes em um aplicativo do BizTalk e como configurar um aplicativo cliente do WCF para implementar o seguinte:

  • Enviar mensagens para um aplicativo do BizTalk Server 2010/2013 usando uma fila Service Bus.

  • Enviar mensagens para um aplicativo do BizTalk Server 2010/2013 usando um tópico Service Bus.

  • Receber mensagens de um aplicativo do BizTalk Server 2010/2013 usando uma fila Service Bus.

  • Receber mensagens de um aplicativo do BizTalk Server 2010/2013 usando uma assinatura Service Bus.

Para enviar mensagens para o aplicativo do BizTalk, você pode usar a ferramenta Service Bus Explorer ou usar o aplicativo cliente incluído nesse exemplo. Esse aplicativo cliente usa Microsoft.ServiceBus.dll para trocar mensagens com o aplicativo do BizTalk usando o WCF.

Há dois cenários:

Cenário 1: o aplicativo usa portas de envio estáticas.

Cenário 2: o aplicativo cliente especifica a URL da fila ou tópico de resposta.

O aplicativo cliente do Windows Forms simula um sistema de linha de negócios (LOB) local. O sistema de LOB troca mensagens com um aplicativo do BizTalk Server que usa filas, tópicos e assinaturas fornecidas por Service Bus for Windows Server. Neste cenário, o aplicativo do BizTalk Server 2010/2013 utiliza portas de envio estáticas e a mesma fila ou tópico para enviar a resposta de volta para o chamador.

  1. O aplicativo cliente do Windows Forms usa um proxy WCF para enviar uma mensagem de solicitação à requestqueue ou ao requesttopic.

  2. O aplicativo do BizTalk Server usa uma porta de recebimento unidirecional para receber mensagens de solicitação do Service Bus. Especificamente, um local de recebimento personalizado para o WCF (ServiceBusForWindowsServer.WCF-Custom.NetMessagingBinding.Queue.ReceiveLocation) lê mensagens de solicitação da requestqueue. Um segundo local de recebimento personalizado para o WCF (ServiceBusForWindowsServer.WCF-Custom.NetMessagingBinding.Subscription.ReceiveLocation) recebe mensagens de solicitação da assinatura italyMilan do requesttopic. Ambos locais de recebimento usam os seguintes componentes:

    • O NetMessagingBinding recebe mensagens de uma fila ou assinatura.

    • Em tempo de execução, um Inspetor de mensagens do WCF personalizado (ServiceBusMessageInspector) lê o BrokeredMessageProperty a partir da coleção Propriedades da Mensagem de entrada do WCF. O Inspetor de mensagens do WCF (ServiceBusMessageInspector) transforma suas propriedades padrão (como MessageId e ReplyTo) e propriedades específicas do aplicativo (os pares de chave/valor na coleção Propriedades do BrokeredMessageProperty) em propriedades de contexto na mensagem do BizTalk.

    • O ListenUriEndpointBehavior é usado pelo local de recebimento personalizado para o WCF que recupera mensagens da assinatura ItalyMilan definida no requesttopic. Este componente personalizado define o valor da propriedade ListenUri do ponto de extremidade do serviço. O ListenUriEndpointBehavior será descrito mais a frente neste artigo.

    • Se um aplicativo recupera mensagens de uma fila ou assinatura de sessão, o SessionChannelEndpointBehavior deve ser adicionado à configuração do local de recebimento personalizado para o WCF. Este componente personalizado confirma que em tempo de execução, o adaptador personalizado para o WCF cria um IInputSessionChannel no lugar de um IInputChannel. Adicionar um SessionChannelEndpointBehavior é um requisito obrigatório para receber mensagens de uma entidade de mensagens de sessão.

    • O TokenProviderEndpointBehavior permite que o local de recebimento autentique o STS local utilizado pelo namespace Service Bus usando o WindowsTokenProvider ou o OAuthTokenProvider. Ao usar o WindowsTokenProvider, você pode usar a conta do serviço da instância de host executando o local de recebimento para autenticar o STS local ou você pode especificar credenciais alternativas. Ao usar o OAuthTokenProvider, sempre especifique as credenciais na forma de nome de usuário, senha ou domínio. LocalMachine\LocalUser ou Domain\DomainUser é usado para acessar o namespace Service Bus. A conta de usuário utilizada pelo local de recebimento deve estar autorizada a acessar o namespace Service Bus que hospeda a fila ou a assinatura. Para autorizar a conta de usuário para acessar o namespace, é possível usar o cmdlet New-SBNamespace do Windows PowerShell ao criar o namespace ou o cmdlet Set-SBNamespace para adicionar a conta de usuário ao grupo dos gerentes do namespace.

  3. O Message Agent envia a mensagem de solicitação para o MessageBox (BizTalkMsgBoxDb).

  4. A solicitação de entrada inicia uma nova instância do StaticSendPortOrchestration. O StaticSendPortOrchestration usa uma porta direta para receber mensagens de solicitação que atendam a seguinte expressão do filtro:

    Microsoft.WindowsAzure.CAT.Samples.ServiceBusForWindowsServer.Schemas.Method == Static

    A orquestração invoca um método exposto pelo componente auxiliar RequestManager para calcular a mensagem de resposta. Ela copia as propriedades de contexto da mensagem de solicitação para a mensagem de resposta e atribui o valor da propriedade de contexto MessageId da mensagem de solicitação à propriedade CorrelationId da mensagem de resposta. Finalmente, ela verifica o valor da sequência contido na propriedade de contexto ReplyTo. Se o valor da sequência contiver a palavra "fila", a orquestração retornará a mensagem de resposta por meio de uma de porta lógica vinculada a uma porta de envio personalizada para o WCF configurada para enviar mensagens para a responsequeue. Caso contrário, ela publica a resposta para o MessageBox usando uma porta de envio lógica vinculada a uma porta de envio personalizada para o WCF configurada para enviar mensagens para o responsetopic.

  5. O Message Agent envia a mensagem de solicitação para o MessageBox (BizTalkMsgBoxDb).

  6. Uma das seguintes portas de envio personalizada para o WCF consome a mensagem de resposta:

    • ServiceBusForWindowsServer.WCF-Custom.NetMessagingBinding.Queue.SendPort: Grava a mensagem de resposta para a responsequeue.

    • ServiceBusForWindowsServer.WCF-Custom.NetMessagingBinding.Topic.SendPort: Grava a mensagem de resposta para o responsetopic.

  7. A porta de envio selecionada grava a mensagem de resposta no responsequeue ou no responsetopic. Ambas as portas de envio são configuradas para usar os seguintes componentes:

    • O NetMessagingBinding envia mensagens para o Service Bus.

    • O ServiceBusMessageInspector transforma as propriedades de contexto da mensagem em propriedades do BrokeredMessage.

    • O TokenProviderEndpointBehavior permite que a porta de envio autentique o STS local utilizado pelo namespace Service Bus usando o WindowsTokenProvider ou o OAuthTokenProvider. As mesmas considerações ao usar esse componente em um local de recebimento também se aplicam às portas de envio.

  8. O aplicativo cliente usa um serviço WCF com dois pontos de extremidade para recuperar a mensagem de resposta da responsequeue ou do responsetopic. Em um ambiente com vários aplicativos cliente, cada um deles deve usar uma fila ou assinatura separada para receber mensagens de resposta do BizTalk.

O aplicativo cliente do Windows Forms também simula um sistema de linha de negócios (LOB). O sistema de LOB troca mensagens com um aplicativo do BizTalk Server que usa filas, tópicos e assinaturas fornecidas por Service Bus for Windows Server. Neste cenário, o aplicativo cliente especifica a URL da fila ou tópico de resposta na propriedade ReplyTo. Especificar a URL permite que diferentes aplicativos cliente enviem solicitações por meio da mesma fila ou tópico, mas usa filas e tópicos diferentes para receber respostas. Essa arquitetura permite que o aplicativo do BizTalk use uma única porta de envio dinâmica para transmitir as respostas para os aplicativos cliente.

  1. O aplicativo cliente do Windows Forms usa um proxy WCF para enviar uma mensagem de solicitação à requestqueue ou ao requesttopic.

  2. O aplicativo do BizTalk Server usa uma porta de recebimento unidirecional para receber mensagens de solicitação do Service Bus. Especificamente, um local de recebimento personalizado para o WCF (ServiceBusForWindowsServer.WCF-Custom.NetMessagingBinding.Queue.ReceiveLocation) lê mensagens de solicitação da requestqueue. Um segundo local de recebimento personalizado para o WCF (ServiceBusForWindowsServer.WCF-Custom.NetMessagingBinding.Subscription.ReceiveLocation) recebe mensagens de solicitação da assinatura italyMilan do requesttopic. Ambos os locais de recebimento são configurados para usar os seguintes componentes:

    • O NetMessagingBinding recebe mensagens de uma fila ou assinatura.

    • Em tempo de execução, um Inspetor de mensagens do WCF personalizado (ServiceBusMessageInspector) lê o BrokeredMessageProperty a partir da coleção Propriedades da Mensagem de entrada do WCF. O Inspetor de mensagens do WCF (ServiceBusMessageInspector) transforma suas propriedades padrão (como MessageId e ReplyTo) e propriedades específicas do aplicativo (os pares de chave/valor contidos na coleção Propriedades do BrokeredMessageProperty) em propriedades de contexto na mensagem do BizTalk.

    • O ListenUriEndpointBehavior é usado pelo local de recebimento personalizado para o WCF que recupera mensagens da assinatura ItalyMilan definida no requesttopic. Este componente personalizado define o valor da propriedade ListenUri do ponto de extremidade do serviço. O ListenUriEndpointBehavior será descrito mais a frente neste artigo em ListenUriEndpointBehavior.

    • Se um aplicativo recupera mensagens de uma fila ou assinatura de sessão, o SessionChannelEndpointBehavior deve ser adicionado à configuração do local de recebimento personalizado para o WCF. O SessionChannelEndpointBehavior confirma que em tempo de execução, o adaptador personalizado para o WCF cria um IInputSessionChannel no lugar de um IInputChannel. Adicionar o SessionChannelEndpointBehavior é um requisito obrigatório para receber mensagens de uma entidade de mensagens de sessão.

    • O TokenProviderEndpointBehavior permite que o local de recebimento autentique o STS local utilizado pelo namespace Service Bus usando o WindowsTokenProvider ou o OAuthTokenProvider. Ao usar o WindowsTokenProvider, você pode usar a conta do serviço de host executando o local de recebimento para autenticar o STS local ou você pode especificar credenciais alternativas. Ao usar o OAuthTokenProvider, sempre especifique as credenciais na forma de nome de usuário, senha ou domínio. LocalMachine\LocalUser ou Domain\DomainUser é usado para acessar o namespace Service Bus. A conta de usuário utilizada pelo local de recebimento deve estar autorizada a acessar o namespace Service Bus que hospeda a fila ou a assinatura. Para autorizar a conta de usuário para acessar o namespace, é possível usar o cmdlet New-SBNamespace do Windows PowerShell ao criar o namespace ou o cmdlet Set-SBNamespace para adicionar a conta de usuário ao grupo dos gerentes do namespace.

  3. O Message Agent envia a mensagem de solicitação para o MessageBox (BizTalkMsgBoxDb).

  4. A solicitação de entrada inicia uma nova instância do DynamicSendPortOrchestration. O DynamicSendPortOrchestration usa uma porta direta para receber mensagens de solicitação que atendam a seguinte expressão do filtro:

    Microsoft.WindowsAzure.CAT.Samples.ServiceBusForWindowsServer.Schemas.Method == Dynamic

    A orquestração invoca um método exposto pelo componente auxiliar RequestManager para calcular a mensagem de resposta. Ela copia as propriedades de contexto da mensagem de solicitação para a mensagem de resposta e, em seguida, atribui o valor da propriedade de contexto MessageId da mensagem de solicitação à propriedade CorrelationId da mensagem de resposta. Em seguida, ela lê o endereço da entidade de mensagens (fila ou tópico) para o qual enviar a resposta a partir da propriedade de contexto ReplyTo. Finalmente, a orquestração configura as propriedades de contexto da mensagem de resposta e as propriedades da porta de envio dinâmica para utilizar os seguintes componentes:

    • O NetMessagingBinding envia mensagens para o Service Bus.

    • O ServiceBusMessageInspector transforma as propriedades de contexto da mensagem em propriedades do BrokeredMessage.

    • O TokenProviderEndpointBehavior permite que o local de recebimento autentique o STS local utilizado pelo namespace Service Bus usando o WindowsTokenProvider ou o OAuthTokenProvider.

  5. O Message Agent envia a mensagem de solicitação para o MessageBox (BizTalkMsgBoxDb).

  6. A porta de envio unidirecional dinâmica do ServiceBusForWindowsServer.Dynamic.SendPort consome a mensagem de resposta.

  7. A porta de envio dinâmica usa o adaptador personalizado para o WCF e o NetMessagingBinding como especificado pela orquestração para retornar a resposta à entidade de mensagens (neste exemplo, responsequeue ou responsetopic) cujo endereço está especificado no aplicativo cliente na propriedade ReplyTo do BrokeredMessageProperty.

  8. O aplicativo cliente usa um serviço WCF com dois pontos de extremidade para recuperar a mensagem de resposta da responsequeue ou do responsetopic. Em um ambiente com vários aplicativos cliente, cada um deles deve usar uma fila ou assinatura separada para receber mensagens de resposta do BizTalk.

Consulte também

A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft