Cenários de implementação de serviços com WCF - Parte 5 : Serviços com Filas de Mensagens (MSMQ)

Serviços com Filas de Mensagens (MSMQ)

Olá pessoal, tudo certo?

Um novo cenário para nosso estudo destaca os serviços com suporte a filas de mensagens. Comunicação assíncrona, que exige garantia de entrega de mensagens, recuperação ou simplesmente o tracking de mensagens são exemplos de recursos para esse tipo de serviço.

Os patterns de mensagens desconectadas garantem o baixo acoplamento para soluções orientadas a serviços. Como principal benefício, torna-se possível a construção de processos de longa duração, sem a necessidade de espera por respostas on-line, além da garantia de entrega de mensagens, para momentos onde serviços, equipamentos e redes estão off-line ou desconectados.

O Microsoft Message Queuing (MSMQ) é uma plataforma de mensageria que suporta este tipo de cenário, onde WCF amplia o conceito de componentes enfileirados (queued components) suportado pelo Enterprise Services do .NET 2.0. Desse modo, clientes WCF podem enviar mensagens para uma fila e serviços podem receber essas mensagens a partir da fila, usando um modelo de programação familiar aos outros recursos do WCF.

A principal característica desse cenário é que clientes e serviços não interagem diretamente, mas sim, através de uma fila de mensagens. Outros benefícios são:

  • Garantia de entrega de mensagens de forma assíncrona;
  • Mensageria desconectada;
  • Cenários de publicação e subscrição;

A tabela a seguir apresenta as principais características para a configuração de serviços com suporte a mensageria:

Característica Descrição

Hosting

Windows NT Services sobre Windows Server 2003 ou Windows Activation Service (WAS) sobre Windows Server 2008

Protocolo de Transporte

MSMQ (nativo, SRMP ou SRMPS)

Protocolo de Mensagens

SOAP + Binário

Autenticação

Certificados X.509 usados para autenticar o originador da mensagem (sender).

Autorização

Certificados X.509 usados para autorizar o originador da mensagem (sender).

Segurança

Certificados X.509 usados para proteger as mensagens colocadas na fila.

Autenticação para a fila

Certificados X.509 usados para autenticar o chamador da fila.

Autorização para a fila

Certificados X.509 usados para autorizar o chamador da fila.

Segurança na fila

O certificado X.509 do chamador é usado para assinar a mensagem enviada para a fila. Criptografia é normalmente tratada no nível da mensagem.

Para a configuração de serviços e filas, temos 2 plataformas possíveis com WCF:

  • MSMQ 3.0 on Windows Server 2003;
  • MSMQ 4.0 on Windows Server 2008;

Para essas plataformas, o WCF oferece o binding de transporte NetMsmqBinding, que garante os detalhes de configuração para o envio de mensagens de forma assíncrona no MSMQ.

O NetMSMQBinding oferece um transporte baseado em encoding binário, permitindo um bom desempenho para o tratamento de mensagens. Oferece também segurança no nível de transporte e de mensagens, além do suporte a transações. Esse binding torna-se uma primeira escolha para cenários assíncronos de alta vazão e que precisem ser confiáveis, duráveis e com suporte ao modelo de mensageria unidirecional (queued One-Way Messaging) .

Para cenários onde o serviço deve interagir com soluções MSMQ existentes, o binding indicado será o MsmqIntegrationBinding. O MSMQIntegrationBinding oferece um transporte para integração MSMQ com MSMQ encoding. Fornece a segurança do ambiente MSMQ, assim como o suporte a transação. É uma primeira escolha como binding para cenários de integração com aplicações MSMQ já existentes, além de ser de simples integração com o Host Integration Server e o Biztalk Server, quando existentes na solução.

A figura a seguir apresenta um exemplo de integração de mensagens com serviços WCF:

image

Um exemplo de aplicação de mensageria para o disparo de serviços é dado na demonstração Demux, disponível para download no link a seguir:

Custom Demux
Ref.: https://msdn.microsoft.com/en-us/library/ms752265.aspx

O exemplo acima apresenta como é possível disparar serviços através do endereçamento do header de mensagens enviadas para a fila MSMQ. Esse cenário é muito interessante para o tratamento de mensagens, criando um roteador de serviços muito comum em aplicações do mercado financeiro, por exemplo.

Outro artigo interessante para esse tipo de cenário é dado a seguir:

Queuing in WCF
Ref.: https://msdn.microsoft.com/en-us/library/ms789048.aspx

No próximo post, vamos falar de nosso último cenário, serviços de workflow... não percam!

Por enquanto é só! Até o próximo post :)

Waldemir.

Technorati Tags:  SOA , WCF , Services