Preciso aprender Web Services em Java. Quais são os diferentes tipos nele? [fechadas]

91

Recentemente, decidi começar a aprender sobre serviços web java e quando comecei a pesquisar um tutorial para serviços web java no google, descobri que existem muitos tipos de serviços web baseados em XML, baseados em SOAP, também serviços web RESTful.

Além disso, descobri que há uma especificação JAX-WS para serviços da web baseados em xml e uma especificação JAX-RS para a criação de serviços da web RESTful.

P1) Fiquei confuso, seria ótimo se alguém pudesse me ajudar a entender a diferença entre esses diferentes tipos de serviços da web, para que eu possa decidir qual aprender primeiro.

P2) Além disso, quero aprender mais sobre como criar diferentes tipos de serviços da web em java. Existe algum tutorial ou recursos que podem dar uma visão de cada tipo de serviço da web e uma comparação entre eles.

Q3) com base em quais cenários e condições devo decidir que desejo criar um serviço da web baseado em XML em vez de um serviço SOAP ou devo escolher o serviço RESTful.

Rajesh Pantula
fonte
Tutorial do Java EE 6
Paul Vargas

Respostas:

142
  1. Os SOAP Web Services são baseados em padrões e são suportados por quase todas as plataformas de software: eles dependem muito de XML e têm suporte para transações, segurança, mensagens assíncronas e muitos outros problemas. É um padrão muito grande e complicado, mas cobre quase todas as situações de mensagens. Por outro lado, serviços RESTful contam com o protocolo HTTP e verbos (GET, POST, PUT, DELETE) para trocar mensagens em qualquer formato, preferencialmente JSON e XML. É uma abordagem arquitetônica bastante simples e elegante.
  2. Como em todos os tópicos do Java World, existem várias bibliotecas para construir / consumir Web Services. No lado SOAP você tem o padrão JAX-WS e Apache Axis , e no REST você pode usar Restlets ou Spring REST Facilities entre outras bibliotecas.

Com a pergunta 3, este artigo afirma que os serviços RESTful são adequados nestes cenários:

  • Se você tem largura de banda limitada
  • Se suas operações forem sem estado: Nenhuma informação é preservada de uma chamada para a próxima, e cada solicitação é tratada de forma independente.
  • Se seus clientes exigem armazenamento em cache.

Embora SOAP seja o caminho a percorrer quando:

  • Se você precisar de processamento assíncrono
  • Se você precisa de um contrato formal / interfaces
  • Em suas operações de serviço são stateful: por exemplo, você armazena informações / dados em uma solicitação e usa esses dados armazenados na próxima.
Carlos Gavidia-Calderon
fonte
11
+1 por ser tão claro e
definir
Resposta nítida e clara.
Krishna
+1 para uma boa resposta ... !!!
Shailesh Saxena
Boa resposta, você pode me dizer o que são operações sem estado / com estado?
Keerthivasan
Editei a resposta incluindo esses conceitos.
Carlos Gavidia-Calderon
13

P1) Aqui estão algumas coisas para ler ou mais no Google:

Principais diferenças entre os serviços da web SOAP e RESTful em java http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest

Depende de você o que você quer aprender primeiro. Eu recomendo que você dê uma olhada na estrutura CXF . Você pode construir serviços de descanso / sabão.

P2) Aqui estão alguns bons tutoriais para sabonetes (eu os marquei):

http://united-coders.com/phillip-steffensen/developing-a-simple-soap-webservice-using-spring-301-and-apache-cxf-226

http://www.benmccann.com/blog/web-services-tutorial-with-apache-cxf/

http://www.mastertheboss.com/web-interfaces/337-apache-cxf-interceptors.html

A melhor maneira de aprender não é apenas lendo tutoriais. Mas primeiro você passaria por tutoriais para ter uma ideia básica para ver se é capaz de produzir algo (ou não) e isso o deixaria motivado.

SO é uma ótima maneira de aprender uma tecnologia específica (ou mais), as pessoas fazem muitas perguntas estranhas e há respostas cada vez mais estranhas. Mas, no geral, você aprenderá maneiras de resolver problemas de outra maneira. Talvez você não conhecesse esse caminho, talvez não pudesse pensar nisso sozinho.

Assine algumas tags que são interessantes para você e seja persistente, faça boas perguntas e tente dar boas respostas e eu garanto que você aprenderá isso com o passar do tempo (se você for persistente).

Q3) Você terá que responder a esta você mesmo. Primeiro, decidindo o que você vai construir, afinal você vai precisar pensar em algum mini projeto ou algo assim e partir daí.

Se você decidir usar o CXF como sua estrutura para construir os serviços REST / SOAP, recomendo que você consulte este livro Apache CXF Web Service Development. É fantástico, não é difícil de ler e também não é muito grande (win win).

formiga
fonte
7

O SOAP WS oferece suporte a estilos de integração de chamada de procedimento remoto (ou seja, RPC) e de middleware orientado a mensagem (MOM). O Restful Web Service oferece suporte apenas ao estilo de integração RPC.

O SOAP WS é um protocolo de transporte neutro. Suporta vários protocolos como HTTP (S), Mensagens, TCP, UDP SMTP, etc. O REST é específico do protocolo de transporte. Suporta apenas protocolos HTTP ou HTTPS.

O SOAP WS permite apenas o formato de dados XML. Você define operações, que fazem um túnel através do POST. O foco está em acessar as operações nomeadas e expor a lógica do aplicativo como um serviço. O REST permite vários formatos de dados como XML, dados JSON, texto, HTML, etc. Qualquer navegador pode ser usado porque a abordagem REST usa as operações da Web GET, PUT, POST e DELETE padrão. O foco está em acessar os recursos nomeados e expor os dados como um serviço. REST tem suporte AJAX. Ele pode usar o objeto XMLHttpRequest. Bom para operações CRUD (Criar, Ler, Atualizar e Excluir) sem estado. GET - represent () POST - acceptRepresention () PUT - storeRepresention () DELETE - removeRepresention ()

As leituras baseadas em SOAP não podem ser armazenadas em cache. As leituras baseadas em REST podem ser armazenadas em cache. Apresenta melhor desempenho e escala. SOAP WS oferece suporte a segurança SSL e WS-security, o que adiciona alguns recursos de segurança corporativa, como manter a segurança até o ponto em que é necessário, manter identidades por meio de intermediários e não apenas apontar a ponto SSL apenas, protegendo diferentes partes da mensagem com diferentes algoritmos de segurança, etc. O REST oferece suporte apenas à segurança SSL ponto a ponto. O SSL criptografa toda a mensagem, seja ela confidencial ou não. O SOAP tem suporte abrangente para gerenciamento de transações baseado em ACID para transações de curta duração e gerenciamento de transações baseado em compensação para transações de longa duração. Ele também suporta o commit de duas fases em recursos distribuídos. O REST suporta transações,

O SOAP tem uma lógica de sucesso ou nova tentativa incorporada e fornece confiabilidade de ponta a ponta, mesmo por meio de intermediários SOAP. O REST não tem um sistema de mensagens padrão e espera que os clientes que invocam o serviço lidem com as falhas de comunicação tentando novamente.

fonte http://java-success.blogspot.in/2012/02/java-web-services-interview-questions.html

murali
fonte
> O Restful Web Service oferece suporte apenas ao estilo de integração RPC. REST não é RPC, diz RPC, "defina alguns métodos que fazem algo", enquanto REST diz, "defina alguns recursos e eles terão esses métodos". peej.co.uk/articles/rest.html
urmalp
0

Se seu aplicativo costuma usar o protocolo http, então REST é melhor por causa de seu peso leve, e saber que seu aplicativo usa apenas o protocolo http escolher SOAP não é tão bom porque é pesado. Melhor tomar decisões sobre a seleção de serviço da web com base nos protocolos que usamos em nossas aplicações.

sinta-se bem e programando
fonte