¿Cuál es la diferencia entre JAX-RS y JAX-WS?

94

Después de leer algunos artículos sobre JAX-RS y JAX-WS, ¿tenía algunas preguntas que quiero confirmar?

  1. ¿Puede JAX-RS realizar solicitudes asíncronas como JAX-WS?
  2. ¿Puede JAX-RS acceder a un servicio web que no se ejecuta en la plataforma Java y viceversa?
  3. ¿Qué significa "REST es particularmente útil para dispositivos de perfil limitado, como PDA y teléfonos móviles"?
  4. ¿Qué significa "JAX-RS no requiere mensajes XML o definiciones de API de servicio WSDL?
pmark019
fuente

Respuestas:

78

¿Puede JAX-RS realizar solicitudes asíncronas como JAX-WS?

1) No sé si la API JAX-RS incluye un mecanismo específico para solicitudes asincrónicas, pero esta respuesta aún podría cambiar según la implementación del cliente que utilice.

¿Puede JAX-RS acceder a un servicio web que no se ejecuta en la plataforma Java y viceversa?

2) No puedo pensar en ninguna razón por la que no podría hacerlo.

¿Qué significa "REST es particularmente útil para dispositivos de perfil limitado, como PDA y teléfonos móviles"?

3) Las arquitecturas basadas en REST normalmente utilizarán un formato de datos ligero, como JSON, para enviar datos de un lado a otro. Esto contrasta con JAX-WS, que usa XML. No veo XML por sí mismo tan significativamente más pesado que JSON (lo que algunas personas pueden argumentar), pero con JAX-WS es la cantidad de XML que se usa lo que hace que REST con JSON sea la opción más liviana.

¿Qué significa "JAX-RS no requiere mensajes XML o definiciones de API de servicio WSDL?

4) Como se indicó en 3, las arquitecturas REST a menudo usan JSON para enviar y recibir datos. JAX-WS usa XML. No es que JSON sea significativamente más pequeño que XML en sí mismo. Es principalmente que la especificación JAX-WS incluye muchos gastos generales en la forma en que se comunica.

En cuanto a las definiciones de WSDL y API, REST utilizará con más frecuencia la estructura de URI y los comandos HTTP para definir la API en lugar de los tipos de mensajes, como se hace en JAX-WS. Esto significa que no necesita publicar un documento WSDL para que otros usuarios de su servicio puedan saber cómo hablar con su servicio. Con REST, aún necesitará proporcionar cierta documentación a otros usuarios sobre cómo está organizado el servicio REST y qué datos y comandos HTTP deben enviarse.

Nick Roth
fuente
Gracias por esa respuesta tan útil. ¿Hay otras cosas que puedan diferenciar a JAX-WS de JAX-RS que conozca?
pmark019
92

Otro punto importante

JAX-WS representa SOAP

JAX-RS representa DESCANSO

¿Cómo elegir entre la implementación de servicios web JAX-RS y JAX-WS?

usuario2849471
fuente
29
En realidad, JAX-WS representa servicios web basados ​​en RESTful y SOAP. Una forma de pensarlo es que JAX-RS se especializa en RESTful, mientras que JAX-WS le permite más flexibilidad para elegir entre cualquiera, mientras que al mismo tiempo es (en algunos casos) más complicado de configurar.
MattC
Gracias por una simple explicación.
PeerNet
2
" JAX-WS representa servicios web basados ​​en RESTful y SOAP ": esto no es cierto, ¿puede poner alguna referencia para validar su reclamo? JAX-WS puede transportar SOAP a través de HTTP y también XML a través de HTTP, pero esto hace que JAX-WS Sosegado. Estar DESCANSO es un concepto completamente diferente.
hagrawal
43

JAX-WS - es la API de Java para los servicios web basados ​​en XML - una forma estándar de desarrollar un servicio web en notación SOAP (Protocolo simple de acceso a objetos).

La llamada a los servicios web se realiza mediante llamadas a procedimientos remotos. Para el intercambio de información entre el cliente y el Servicio Web se utiliza el protocolo SOAP. El intercambio de mensajes entre el cliente y el servidor se realiza a través de mensajes SOAP basados ​​en XML .

Los clientes del servicio web JAX-WS necesitan un archivo WSDL para generar código ejecutable que los clientes pueden utilizar para llamar al servicio web.

JAX-RS : API de Java para servicios web RESTful. Los servicios web RESTful se representan como recursos y se pueden identificar mediante identificadores uniformes de recursos ( URI ). La llamada a procedimiento remoto en este caso se representa como una solicitud HTTP y los datos necesarios se pasan como parámetros de la consulta. Servicios web RESTful: más flexible, puede utilizar varios tipos de MIME diferentes . Normalmente se utiliza para el intercambio de datos XML o el intercambio de datos JSON (JavaScript Object Notation) ...


fuente
Explicación corta y nítida !! Excelente.
Saurabh Rai
0

He estado trabajando en Apachi Axis1.1 y Axis2.0 y JAX-WS, pero le sugiero que deba JAX-WS porque le permite hacer wsdl en cualquier formato, estaba haciendo una operación como GetInquiry () en Apache Axis2, no Permítame iniciar el nombre de la operación en mayúsculas, por lo que no lo encuentro bien, por lo que le sugiero que use JAX-WS

Waseem Saeed
fuente
0

¿Puede JAX-RS realizar solicitudes asíncronas como JAX-WS?

Sí, seguramente puede usar @Async

¿Puede JAX-RS acceder a un servicio web que no se ejecuta en la plataforma Java y viceversa?

Si, puede hacer

¿Qué significa "REST es particularmente útil para dispositivos de perfil limitado, como PDA y teléfonos móviles"?

Se utiliza principalmente para apis públicas, depende del enfoque que desee utilizar.

¿Qué significa "JAX-RS no requiere mensajes XML o definiciones de API de servicio WSDL?

Tiene sus propios estándares WADL (Lenguaje de desarrollo de aplicaciones web) Tiene una solicitud http por la cual puede acceder a los recursos, son creados por diferentes mentalidades, en caso de que en Jax-Rs tenga que pensar en exponer recursos

Urvil Joshi
fuente