ti-enxame.com

Diferença entre JMS e serviço da Web

Preciso desenvolver um sistema que aceite pedidos e retorne confirmação. Os pedidos podem vir de clientes Java ou não Java.

Não tenho certeza se deve ir para a implementação de serviço da web ou JMS.

Alguma sugestão ...

20
SyAu

JMS é uma API que abstrai o middleware do sistema de mensagens, como ActiveMQ ou IBM MQSeries.

O middleware de mensagens possui um paradigma de armazenamento e encaminhamento e passagem assíncrona de mensagens, enquanto os serviços da Web tendem a promover um procedimento síncrono de chamada de paradigma. Em sistemas distribuídos, onde muita coisa pode dar errado, lidar com as coisas de forma assíncrona tende a focar melhor a mente nas coisas que você precisa fazer quando parte do sistema não está disponível ou apresenta um desempenho ruim e o código necessário para lidar com isso tende a ser um problema. muito menos complicado.

As partes de cluster tornam-se triviais se você tiver vários servidores ouvindo na mesma fila, nesse caso, o paralelismo e o balanceamento de carga são gratuitos.

Pessoalmente, acho o JMS muito mais fácil de trabalhar e mais robusto e confiável do que os serviços da Web, mas o middleware do sistema de mensagens deve suportar todas as plataformas que você deseja usar. Se todos os componentes que precisam conversar entre si estiverem sob seu controle, eu consideraria seriamente um middleware de mensagens com uma interface JMS.

Se a outra parte for externa, provavelmente a regra dos Serviços da Web e, nesse caso, você pode pensar em usar uma camada fina para converter o serviço da Web externo em uma infra-estrutura de passagem de mensagens interna, para que você ainda tenha o máximo de vantagens.

Se estiver "apenas colocando uma API remota em um aplicativo da Web", é claro que não vale a pena configurar as mensagens assíncronas.

23
Peter Tillemans

Você pode usar os dois, dependendo dos requisitos de interoperabilidade, escala, distribuição e integração.

As abordagens de serviço da Web que utilizam SOAP, XML RPC e REST fornecem algo bastante interoperável devido ao uso do HTTP como protocolo. Do lado do serviço, você pode receber uma solicitação de serviço da Web e, em seguida, organizá-la em um Sua mensagem pode ser entregue a um barramento de mensagens.

O JMS é uma API razoável para interface com um barramento de mensagens e descobri que Ativo/MQ muito bom aqui. O Active/MQ suporta JMS em vários idiomas.

Com o sistema de mensagens, você pode utilizar o Padrão de Integração Corporativa de Solicitação/Resposta para receber respostas e devolvê-las através do seu serviço da web. No entanto, pense no mérito de fornecer um feedback imediato sobre se o pedido foi processado versus o feedback de que um pedido foi recebido; pode não ser necessário implementar solicitação/resposta para confirmar que um pedido foi recebido.

Os benefícios das mensagens podem ser encontrados aqui: http://www.eaipatterns.com/Messaging.html

Você pode até olhar Apache Camel para simplificar o desenvolvimento de camadas de serviço altamente escaláveis ​​e distribuídas.

5
Christopher Hunt

verifique os links

diferença entre o uso de JMS/Messaging Middleware e serviços da Web

Mensagens, JMS e Serviços da Web

HTTP dos serviços da Web vs. JMS

Escolhendo entre JCA, JMS e serviços da Web

Serviço de Mensagens Java

serviço da Web

Portanto, se os aplicativos de comunicação forem baseados em Java, use o JMS e, se for diferente, os serviços da Web ... é isso que eu sigo.

5
Azhar

Por questões de interoperabilidade, use um serviço da web. O JMS é pouco usado fora do mundo Java.

0
Sjoerd