h1

Frameworks de desarrollo de web services: ¿Cuál es el mejor?

01/08/2008

Wizdoc [Icon By Buuf]  Tips & Tricks.
Con cierta regularidad, ya sea para la integración de plataformas mediante web services o para los pininos de una arquitectura orientada a servicios, es necesario seleccionar puntualmente una tecnología mediante la cual implementaremos la publicación o consumo de dichos servicios que componen nuestra solución.

En la actualidad existen cuatro excelentes frameworks – tres de los cuales son opensource – mediante los cuales pueden generarse los servicios y clientes correspondientes de la solución; sin embargo todos tienen sus ventajas y desventajas dependiendo del contexto bajo el que realizaremos nuestros web services. A continuación, una descripción breve de dichos frameworks con sus pros y contras:

Framework Descripción
BEA Workshop Más IDE que framework debido a su capacidad de generar desarrollos completos que incluyen EJBs o páginas web, el Workshop permite la implementación de web services de forma más o menos sencilla, utilizando una interfaz gráfica en conjunto con tablas de propiedades.


Vista típica en el Workshop al generar un web service.

Como es costumbre con el software de BEA, aunque el producto en sí es excelente y cuenta con mucha flexibilidad, el precio es estratosférico al grado que muchas empresas medianas no tienen los recursos para utilizarlo. Peor aún si se considera que los servicios que genera están casados con el Weblogic y no es posible migrarlos a otro servidor más que a pata.

Apache Axis Siendo un framework maduro patrocinado por Apache, Axis permite implementar de forma bastante sencilla los web services. Dicho framework tiene una gran ventaja sobre los demás: para los web services RPC-Style[1] no hay ninguno que se le compare: es la mejor implementación en existencia. Por otro lado, su mayor defecto es la limitada capacidad de soporte para web services DOC-style[1]; los plugins de Axis para Eclipse son chafitas y de acuerdo al tipo de codificación del mensaje[2] la integración entre estos servicios y plataformas como Weblogic pueden generar dolores de cabeza.
Apache Axis 2 Esta es la otra cara de la moneda: Axis 2 es la mejor implementación de servicios DOC-style, al grado que por sus características técnicas es el único framework comparable a la implementación de referencia de Sun (Glassfish Metro). El principal detalle con el que me he encontrado en este framewrok es la parte del databinding[3], que puede convertirse en un desmother de administración de la configuración:


99 clases (paquete org.xmlsoap.schemas.soap.encoding) para sólo un web service
[Click aquí para ver tamaño original]
Glassfish Metro Siendo no oficialmente la implementación de referencia – pues existe mucha retroalimentación con equipos de desarrollo de Sun – Metro podría ser el mejor framework opensource de web services existente salvo por un pequeño detalle: sólo opera bajo el JEE 5, lo que nos limita a unos cuantos contenedores[4] y es algo que muchos clientes no pueden o no están dispuestos a adquirir; Máxime que aquí en México la mayoría tiene Weblogic 8.x o JBoss (certificados para JEE 4).

Como hemos visto – a grandes rasgos – dependiendo de que tipo de web services vamos a implementar y cómo se da el contexto de nuestro proyecto, podremos decidir qué framework se adapta mejor a nuestras necesidades:

  • Cuando no hay limitaciones en cuanto al costo de las licencias (sobre todo para SOAs de gran envergadura o empresas que tienen la capacidad económica), Workshop nos puede dar todo lo que necesitamos.
  • Cuando requerimos web services síncronos, estemos integrando plataformas homogéneas (es decir, JEE con JEE) o que por razones de desempeño requieran de estilo RPC, Axis es nuestro gallo.
  • Si es necesario generar web services con entrega garantizada de mensajes – o en pocas palabras, con un modelo asíncrono -, estemos integrando plataformas heterogéneas (por ejemplo JEE con .NET) o de plano nuestro usuario requiere una implementación de estilo documental, podemos ofrecer las bondades de Axis 2.
  • Finalmente, si nuestro cliente requiere una combinación de las anteriores y está dispuesto a lanzarse a adquirir lo último en tecnología, podremos proponerle Metro como una solución a sus problemas de integración.
Notas y pies de página

  1. Los web services de tipo RPC (también conocidos como JAX-RPC) indican que el framework convierte los mensajes SOAP a objetos de Java – es decir, del lado del servicio nunca vemos un XML de por medio. Para los web services de tipo documental (o que implementan JAXM), el mensaje llega directo a la aplicación como un XML, siendo deber de ésta manipular el mensaje de acuerdo a las necesidades de la lógica de negocio.
  2. Los mensajes SOAP enviados por un web service tienen dos tipos de estructura: codificados y literales. Los codificados están construidos de acuerdo a un modelo de datos definido por SOAP; los literales se construyen de acuerdo a un schema (el famoso archivito con terminación .xsd). El problema con ambas estructuras es que en el caso de los mensajes codificados, no existe una definición final de dicha codificación, por lo que puede haber diferencias de implementación – de hecho .NET o Axis 2 no los soportan – y en el caso de los mensajes literales se incrementa la complejidad de las aplicaciones que conforman el web service debido a la manipulación de los XMLs o la integración de frameworks de terceros para poder utilizar la información contenida en éstos.
  3. Por experiencia, el databinding es en realidad una conversión Java-Documento XML que realizamos en las implementaciones de web services. Un ejemplo es el framework XMLBeans, implementado por Apache.
  4. Hasta este momento (08/01/2007) sólo existen 6 servidores certificados con JEE5:
    • Sun Java System Application Server 9.x (también conocido como Glassfish)
    • BEA Weblogic 10.x
    • SAP NetWeaver Application Server, Java EE 5 Edition
    • TmaxSoft JEUS 6
    • Apache Geronimo 2.0
    • IBM WebSphere Application Server Community Edition 2.0

2 comentarios

  1. Hola!  Un par de comentarios respecto a Metro.- Esta incluido en las mas reciences versiones de JBoss y de WebLogic (y tambien en JEUS 6)- Funciona (out-of-the-box) con Tomcat- Esta incluido en Java SE 6 de Sun (que tiene la super-mayoria del mercado de Java VMs)  [Y, por supuesto, esta en GlassFish/SJS AS 9.x]Respecto al soporte de RPC-encoding.  Ese estilo es bastante viejo pero, si lo quieres, GlassFish incluye tanto Metro (JAX-WS) como JAX-RPC que es una version previa que provee RPC-encoding.Cualquier cosa, enviame un email.  – eduard/o


  2. Tienes toda la razón; de hecho incluí los servidores certificados en JEE5 – Nota a pie de página 4 – para aquellos que quieran revisar este framework; sin embargo como comenté en el blog, aunque es el mejor de su clase, su principal limitante es que sólo funciona en JEE5. De hecho hasta este momento no conozco ningún cliente que se haya armado de valor para adquirir (o incluso descargar en el caso de JBoss o Geronimo) alguno de los servidores que menciono.



Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: