Necesito aprender los servicios web en Java. ¿Cuáles son los diferentes tipos que contiene? [cerrado]

91

Recientemente, decidí comenzar a aprender sobre los servicios web Java y cuando comencé a buscar un tutorial para servicios web Java en Google, descubrí que hay muchos tipos de servicios web basados ​​en XML, basados ​​en SOAP y también servicios web RESTful.

Además, descubrí que hay una especificación JAX-WS para servicios web basados ​​en xml y una especificación JAX-RS para crear servicios web RESTful.

P1) Me confundí, sería genial si alguien pudiera ayudarme a entender la diferencia entre estos diferentes tipos de servicios web, para que pueda decidir cuál aprender primero.

P2) Además, quiero aprender en profundidad sobre la creación de diferentes tipos de servicios web en java. ¿Existe algún tutorial o recurso que pueda dar una idea de cada tipo de servicio web y una comparación entre ellos?

Q3) en función de los escenarios y condiciones, debo decidir que deseo crear un servicio web basado en XML en lugar de un servicio SOAP o debo optar por el servicio RESTful.

Rajesh Pantula
fuente

Respuestas:

142
  1. Los servicios web SOAP están basados ​​en estándares y son compatibles con casi todas las plataformas de software: dependen en gran medida de XML y tienen soporte para transacciones, seguridad, mensajes asíncronos y muchos otros problemas. Es un estándar bastante grande y complicado, pero cubre casi todas las situaciones de mensajería. Por otro lado, los servicios RESTful se basan en el protocolo HTTP y los verbos (GET, POST, PUT, DELETE) para intercambiar mensajes en cualquier formato, preferiblemente JSON y XML. Es un enfoque arquitectónico bastante simple y elegante.
  2. Como en todos los temas de Java World, existen varias bibliotecas para construir / consumir servicios web. En el lado SOAP tiene el estándar JAX-WS y Apache Axis , y en REST puede usar Restlets o Spring REST Facilities entre otras bibliotecas.

Con la pregunta 3, este artículo establece que los servicios RESTful son adecuados en estos escenarios:

  • Si tiene un ancho de banda limitado
  • Si sus operaciones no tienen estado: no se conserva información de una invocación a la siguiente, y cada solicitud se trata de forma independiente.
  • Si sus clientes requieren almacenamiento en caché.

Si bien SOAP es el camino a seguir cuando:

  • Si necesita procesamiento asincrónico
  • Si necesita un contrato formal / interfaces
  • En su servicio, las operaciones tienen estado: por ejemplo, almacena información / datos en una solicitud y usa esos datos almacenados en la siguiente.
Carlos Gavidia-Calderón
fuente
11
+1 por ser tan claro y exponer los escenarios :)
Rajesh Pantula
Respuesta clara y nítida.
Krishna
+1 por buena respuesta ... !!!
Shailesh Saxena
Buena respuesta, ¿puede decirme qué son las operaciones sin estado?
Keerthivasan
Edité la respuesta incluyendo esos conceptos.
Carlos Gavidia-Calderon
13

P1) Aquí hay un par de cosas para leer o buscar más en Google:

Principales diferencias entre los servicios web SOAP y RESTful en java http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest

Depende de usted qué es lo que quiere aprender primero. Te recomiendo que eches un vistazo al marco CXF . Puede construir ambos servicios de descanso / jabón.

P2) Aquí hay un par de buenos tutoriales para el jabón (los hice marcar como favoritos):

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

La mejor manera de aprender no es simplemente leyendo tutoriales. Pero primero deberías ir a través de tutoriales para tener una idea básica para que puedas ver que eres capaz de producir algo (o no) y eso te motivaría.

SO es una excelente manera de aprender tecnología en particular (o más), la gente hace muchas preguntas extrañas y hay respuestas cada vez más extrañas. Pero, en general, aprenderá formas de resolver problemas de otra manera. Tal vez no sabías de esa manera, tal vez no podrías pensar en ello por ti mismo.

Suscríbase a un par de etiquetas que le interesen y sea persistente, haga buenas preguntas e intente dar buenas respuestas y le garantizo que aprenderá esto a medida que pase el tiempo (si es persistente).

P3) Tendrá que responder a esta usted mismo. Primero, al decidir qué vas a construir, después de todo, tendrás que pensar en algún mini proyecto o algo y partir de ahí.

Si decide utilizar CXF como su marco para crear servicios REST / SOAP, le recomiendo que consulte este libro Apache CXF Web Service Development. Es fantástico, no es difícil de leer y tampoco demasiado grande (todos ganan).

hormiga
fuente
7

SOAP WS admite tanto la llamada a procedimiento remoto (es decir, RPC) como los estilos de integración de middleware orientado a mensajes (MOM). Restful Web Service solo admite el estilo de integración RPC.

SOAP WS es un protocolo de transporte neutral. Admite múltiples protocolos como HTTP (S), Mensajería, TCP, UDP SMTP, etc. El REST es específico del protocolo de transporte. Solo admite protocolos HTTP o HTTPS.

El SOAP WS solo permite el formato de datos XML. Usted define las operaciones que atraviesan el POST. La atención se centra en acceder a las operaciones nombradas y exponer la lógica de la aplicación como un servicio. REST permite múltiples formatos de datos como XML, datos JSON, texto, HTML, etc. Se puede usar cualquier navegador porque el enfoque REST usa las operaciones web estándar GET, PUT, POST y DELETE. La atención se centra en acceder a los recursos nombrados y exponer los datos como un servicio. REST tiene soporte AJAX. Puede utilizar el objeto XMLHttpRequest. Bueno para operaciones CRUD (crear, leer, actualizar y eliminar) sin estado. OBTENER - representar () POST - aceptarRepresentación () PONER - storeRepresention () DELETE - eliminarRepresentación ()

Las lecturas basadas en SOAP no se pueden almacenar en caché. Las lecturas basadas en REST se pueden almacenar en caché. Se desempeña y escala mejor. SOAP WS admite tanto la seguridad SSL como la seguridad WS, que agrega algunas características de seguridad empresarial, como mantener la seguridad hasta el punto en que se necesita, mantener las identidades a través de intermediarios y no solo SSL de punto a punto, asegurando diferentes partes del mensaje con diferentes algoritmos de seguridad, etc. REST solo admite seguridad SSL punto a punto. El SSL cifra todo el mensaje, ya sea que sea confidencial o no. El SOAP tiene soporte integral tanto para la gestión de transacciones basada en ACID para transacciones de corta duración como para la gestión de transacciones basada en compensación para transacciones de larga duración. También admite el compromiso de dos fases en los recursos distribuidos. El REST admite transacciones,

SOAP tiene una lógica de éxito o reintento incorporada y proporciona confiabilidad de extremo a extremo incluso a través de intermediarios SOAP. REST no tiene un sistema de mensajería estándar y espera que los clientes que invocan el servicio resuelvan las fallas de comunicación volviendo a intentarlo.

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

murali
fuente
> El servicio web Restful solo admite el estilo de integración RPC. REST no es RPC, dice RPC, "define algunos métodos que hacen algo", mientras que REST dice, "define algunos recursos y tendrán estos métodos". peej.co.uk/articles/rest.html
urmalp
0

Si su aplicación usa a menudo el protocolo http, entonces REST es mejor debido a su peso ligero, y saber que su aplicación usa solo el protocolo http, elegir SOAP no es tan bueno porque es pesado. Es mejor tomar una decisión sobre la selección del servicio web en función de los protocolos que usamos. en nuestras aplicaciones.

sentirse bien y programar
fuente