2012-09-26 66 views
18

Hola, he trabajado con JAX-WS para servicios web basados ​​en SOAP. Ahora quiero utilizar REST porque REST tiene ventajas sobre SOAP, ya que estudié sobre here.JAX-WS frente a JAX-RS para el servicio web RESTful

Pero a partir de diferentes artículos que sabían que podemos crear servicios web RESTful JAX-WS también. Pero la mayoría de la gente dice que deberíamos usar JAX-RS en lugar de JAX-WS.

Mi pregunta es ¿cuál es la diferencia entre JAX-WS servicio web REST y JAX-RS (jersey). ¿Cuáles son las ventajas de JAX-RS sobre JAX-WS? ¿Y por qué deberíamos usar JAX-RS para los servicios web RESTful?

Gracias de antemano.

Respuesta

26

TL; DR

JAX-WS es para servicios web basados ​​en XML como SOAP. JAX-RS no tiene la misma restricción.

JAX-WS generalmente se orienta hacia servidor a las interacciones del servidor con contratos bien definidos (WSDL) y por lo general cuando el servicio y el lado del cliente son de grupos separados. Requiere muchos recursos, por lo que no es factible para las interacciones de cliente a servidor donde la capacidad de la red o del dispositivo cliente es menos que óptima.

JAX-RS está orientada al cliente para interacciones con el servidor, aunque el servidor a servidor está bien. Como tiene pocas obligaciones de servicio, puede ajustarse a lo que el cliente necesite.

Más información

La API JAX-RS sólo proporciona enfoques de código en primer lugar, mientras que JAX-WS permite tanto de código primero (por lo general no se recomienda) y el contrato de primera utilizando archivos WSDL (más comúnmente recomendada).

JAX-RS 2.0 presenta la API cliente que es una envoltura inteligente para HttpUrlConnection que tiene mucha capacidad de mapeo, JAX-WS también es una envoltura, pero los datos que trata en las implementaciones de referencia son solo XML.

JAX-RS tiene la ventaja de crear API que son más fáciles de crear y digerir los mensajes en diferentes navegadores y dispositivos móviles, es decir, la estructura JSON. No introduce la noción de un sobre y usa HTTP para él. No introduce criptografía o seguridad, usa HTTPS para eso.

JAX-WS aunque se ejecuta en HTTPS para criptografía proporciona adiciones para seguridad usando WS-SecurityPolicy etc. Además, los contratos se establecen firmemente utilizando WSDL y se pueden verificar fuera de la aplicación utilizando ESB como DataPower.

Entonces, ¿para elegir

JAX-WS es generalmente orientados hacia el servidor a servidor interacciones con contratos bien definidos (WSDL) y por lo general cuando el servicio y el lado del cliente son de grupos separados. Requiere muchos recursos, por lo que no es factible para las interacciones de cliente a servidor donde la capacidad de la red o del dispositivo cliente es menos que óptima.

JAX-RS está orientada al cliente para interacciones con el servidor, aunque el servidor a servidor está bien. La única obligación contractual entre un cliente y servidor es el mensaje y los encabezados de solicitud. Como tiene pocas obligaciones de servicio, puede ajustarse a lo que el cliente necesite.

Sin embargo, usar las API de servicios RESTful es similar a hacer meta-programación como Ruby y Python que retrasa los problemas de tiempo de ejecución ya que no existe un esquema definido acordado y técnicamente impuesto por las dos partes. Como tal, no recomiendo los servicios RESTful en todas partes, pero lo recomendaría si tuviera el control de las dos partes, lo que normalmente ocurre cuando construyes una aplicación web que usa HTML/CSS/JS estático y conversaciones con un servidor RESTful para el datos.

Cuestiones relacionadas