Cenários de Encaminhamento
Embora o Serviço de Roteamento seja altamente personalizável, pode ser um desafio projetar uma lógica de roteamento eficiente ao criar uma nova configuração do zero. No entanto, há vários cenários comuns que a maioria das configurações do Serviço de Roteamento segue. Embora esses cenários possam não se aplicar diretamente à sua configuração específica, entender como o Serviço de Roteamento pode ser configurado para lidar com esses cenários ajudará você a entender o Serviço de Roteamento.
Cenários Comuns
O uso mais básico do Serviço de Roteamento é agregar vários pontos de extremidade de destino para reduzir o número de pontos de extremidade expostos aos aplicativos cliente e, em seguida, usar filtros de mensagem para rotear cada mensagem para o destino correto. As mensagens podem ser encaminhadas com base em requisitos de processamento lógico ou físico, como um tipo de mensagem que deve ser processado por um serviço específico, ou com base em necessidades comerciais arbitrárias, como fornecer processamento prioritário de mensagens de uma fonte específica. A tabela a seguir lista alguns dos cenários comuns e quando eles são encontrados:
Cenário | Utilizar quando |
---|---|
Controle de versão do serviço | Você precisa oferecer suporte a várias versões de um serviço ou pode implantar um serviço atualizado no futuro |
Particionamento de dados de serviço | Você deve particionar um serviço entre vários hosts |
Atualização dinâmica | Você deve reconfigurar dinamicamente a lógica de roteamento em tempo de execução para lidar com implantações de serviço variáveis |
Multicast | Você deve enviar uma mensagem para vários pontos de extremidade |
Protocolo de transição | Você recebe mensagens em um protocolo de transporte e o ponto de extremidade de destino usa um protocolo diferente |
Processamento de Erros | Você precisa fornecer resiliência a interrupções de rede e falhas de comunicação |
Nota
Embora muitos dos cenários apresentados sejam específicos para determinadas necessidades de negócios ou requisitos de processamento, o planejamento para dar suporte a atualizações dinâmicas e a utilização do tratamento de erros podem ser considerados práticas recomendadas, pois permitem modificar a lógica de roteamento em tempo de execução e se recuperar de falhas transitórias de rede e comunicação.
Controle de versão de serviço
Ao introduzir uma nova versão de um serviço, muitas vezes você deve manter a versão anterior até que todos os clientes tenham feito a transição para o novo serviço. Isso é especialmente crítico se o serviço for um processo de longa duração que leva dias, semanas ou até meses para ser concluído. Normalmente, isso requer a implementação de um novo endereço de ponto de extremidade para o novo serviço, mantendo o ponto de extremidade original para a versão anterior.
Usando o Serviço de Roteamento, você pode expor um ponto de extremidade para receber mensagens de aplicativos cliente e, em seguida, rotear cada mensagem para a versão de serviço correta com base no conteúdo da mensagem. A implementação mais básica envolve a adição de um cabeçalho personalizado à mensagem que indica a versão do serviço pela qual a mensagem deve ser processada. O Serviço de Roteamento pode usar o XPathMessageFilter para inspecionar cada mensagem quanto à presença do cabeçalho personalizado e rotear a mensagem para o ponto de extremidade de destino apropriado.
Para conhecer as etapas usadas para criar uma configuração de controle de versão de serviço, consulte Como: Controle de versão de serviço.
Particionamento de dados de serviço
Ao projetar um ambiente distribuído, geralmente é desejável distribuir a carga de processamento por vários computadores para fornecer alta disponibilidade, diminuir a carga de processamento em computadores individuais ou fornecer recursos dedicados para um subconjunto específico de mensagens. Embora o Serviço de Roteamento não substitua uma solução de balanceamento de carga dedicada, sua capacidade de executar o roteamento baseado em conteúdo pode ser usada para rotear mensagens semelhantes para destinos específicos. Por exemplo, você pode ter um requisito para processar mensagens de um cliente específico separadamente das mensagens recebidas de outros clientes.
Para conhecer as etapas usadas para criar uma configuração de particionamento de dados de serviço, consulte Como: Particionamento de dados de serviço.
Roteamento dinâmico
Muitas vezes, é desejável modificar a configuração de roteamento para satisfazer as necessidades comerciais em constante mudança, como adicionar uma rota a uma versão mais recente de um serviço, alterar os critérios de roteamento ou alterar o ponto de extremidade de destino de uma mensagem específica para a qual o filtro encaminha. O Serviço de Roteamento permite que você faça isso através do , o que permite que você forneça uma nova RoutingConfiguration durante o RoutingExtensiontempo de execução. A nova configuração entra em vigor imediatamente, mas afeta apenas quaisquer novas sessões processadas pelo Serviço de Roteamento.
Para conhecer as etapas usadas para implementar o roteamento dinâmico, consulte Como: Atualização dinâmica.
Multicast
Ao rotear mensagens, geralmente você roteia cada mensagem para um ponto de extremidade de destino específico. No entanto, ocasionalmente, você pode precisar rotear uma cópia da mensagem para vários pontos de extremidade de destino. Para executar o roteamento multicast, as seguintes condições devem ser verdadeiras:
A forma do canal não deve ser request-reply (embora possa ser unidirecional ou duplex) porque request-reply exige que apenas uma resposta possa ser recebida pelo aplicativo cliente em resposta à solicitação.
Vários filtros devem retornar true ao avaliar a mensagem.
Se essas condições forem atendidas, cada ponto de extremidade de destino associado a um filtro que retorna true receberá uma cópia da mensagem.
Ponte de protocolo
Ao rotear mensagens entre protocolos SOAP diferentes, o Serviço de Roteamento usa APIs WCF para converter a mensagem de um protocolo para o outro. Isso ocorre automaticamente quando o(s) ponto(s) de extremidade de serviço exposto(s) pelo Serviço de Roteamento usam um protocolo diferente do(s) ponto(s) de extremidade do cliente para o(s) qual(is) as mensagens são roteadas. É possível desativar esse comportamento se os protocolos em uso não forem padrão; no entanto, você deve fornecer seu próprio código de ponte.
Processamento de Erros
Em um ambiente distribuído, não é incomum encontrar falhas transitórias de rede ou comunicação. Sem um serviço intermediário, como o Serviço de Roteamento, o ônus de lidar com essas falhas recai sobre o aplicativo cliente. Se o aplicativo cliente não incluir lógica específica para tentar novamente no caso de falhas de rede ou comunicação e conhecimento de locais alternativos, o usuário pode encontrar cenários em que uma mensagem deve ser enviada várias vezes antes de ser processada com êxito pelo serviço de destino. Isso pode levar à insatisfação do cliente com o aplicativo, pois ele pode ser percebido como não confiável.
O Serviço de Roteamento tenta corrigir esse cenário fornecendo recursos robustos de tratamento de erros para mensagens que encontram falhas relacionadas à rede ou à comunicação. Ao criar uma lista de possíveis pontos de extremidade de destino e associar essa lista a cada filtro de mensagem, você remove o único ponto de falha incorrido por ter apenas um destino possível. Em caso de falha, o Serviço de Roteamento tentará entregar a mensagem ao próximo ponto de extremidade da lista até que a mensagem tenha sido entregue, ocorra uma falha de não comunicação ou todos os pontos de extremidade tenham sido esgotados.
Para conhecer as etapas usadas para configurar o tratamento de erros, consulte Como lidar com erros.
Nesta Secção
Como: Controle de versão de serviço
Como: Particionamento de dados de serviço