Expedindo mensagens SOAP
Há muitas maneiras de lidar com a expedição de mensagens SOAP recebidas para o serviço apropriado. Os dois mecanismos mais simples são expedição no nível do transporte e expedição de endereço e ação.
Expedição no nível do transporte
Com a expedição no nível do transporte, o servidor HTTP subjacente (como a API HTTP) é usado para gerenciar o roteamento de solicitações para o dispositivo e seus serviços. O servidor fornece uma URL diferente para cada serviço e para o dispositivo e coletores diferentes são registrados para cada URL. Isso permite que o código seja projetado de modo que cada serviço seja isolado do outro, seja executando como componentes separados dentro do mesmo processo ou em execução como processos separados.
A expedição no nível do transporte tem algumas vantagens. As mensagens podem ser enviadas para o componente apropriado sem primeiro analisar o envelope SOAP ou o corpo da mensagem. Além disso, o mecanismo existente para rotear mensagens fornecidas pela maioria das implementações de servidor HTTP pode ser reutilizado, o que significa que o código de expedição personalizado é desnecessário. Ele também isola o código de processamento SOAP entre serviços, que fornece um nível de segurança, pois os serviços seguros evitam que as mensagens passem por código comum.
Expedição de endereço e ação
A expedição de endereço e ação depende dos cabeçalhos SOAP para determinar o serviço apropriado para o qual a mensagem é expedida. Esse modelo também pode usar informações adicionais, como parâmetros de referência, para ajudar ainda mais a expedir.
Esse modelo incentiva a reutilização de código em toda uma pilha de mensagens em camadas, pois todo o código até o processador SOAP é compartilhado por todos os serviços. Além disso, endereços de transporte distintos para serviços não são necessários, o que significa que os endereços UUID podem ser usados para pontos de extremidade de serviço. A expedição de endereço e ação também se traduz mais diretamente em um modelo de programação. Os desenvolvedores podem conectar serviços e dispositivos a um único componente que gerencia o roteamento, em vez de ter que vincular a uma camada HTTP ou criar componentes separados para cada serviço.