Reflexiones sobre SOAP
Es curioso lo que puede ayudar el intentar explicar cosas a otras personas: hablaba con un conocido sobre HTTP/CGI y como CORBA/IIOP y RMI se presentaban como alternativas a la hora de distribuir servicios y contenidos en la red. ¿Qué problemas tiene HTTP/CGI? Un protocolo sin estado, con parches como las cookies, y una interfaz nada clara a la hora de usar los CGIs. Recuerdo hace tiempo que se planteó la pregunta de si Yahoo! debería de ofrecer un API para acceder a sus servicios. Tanto en CORBA como en RMI disponemos de una forma de especificar de forma clara, sencilla y a nivel de interfaces los servicios que se ofrecen por medio de OMG/IDL y de interfaces Java respectivamente. Que diferencia con el oscurantimo de la API que se ofrece a través de los CGIs. Pero CORBA y RMI tienen un serio problema: sus puertos de comunicación suelen estar cerrados en la red lo que rompe con su utilidad a nivel de Internet de momento. Pero, ¿no hay ninguna forma de ofrecer servicios en la red? ¿Y que funcione sobre HTTP para que pueda atravesar los firewall de la red? Sí, la respuesta es SOAP. Veamos como encajan las piezas, y como creo yo que debería de ser SOAP, aunque tengo que reconocer que no sé si es así.SOAP tiene unos objetivos mucho más modestos que CORBA. Sólo quiere permitir que clientes y servidores puedan intercambiar información utilizando XML. Los clientes forman en XML las peticiones y los parámetros para obtener la funcionalidad del servidor, el cual procesa la petición XML (SOAP se conoce como XML RPC) y devuelve los resultados de nuevo en XML.
Los servicios que ofrece el servidor están perfectamente identificados a través de interfaces XML, al menos creo que es así, y con un compilador pasamos esa interfaz/API del servidor a unos stubs (cabos) que nos permiten que el cliente pueda usar de forma sencilla ese API.
La implementación del cliente y el servidor puede estar hecha en cualquier lenguaje para el que dispongamos de un compilador que nos permita generar los cabos de acceso y los esqueletos de implementación, concepto totalmente paralelo a CORBA.
Gracias a SOAP, un servidor podrá ofrecer sus servicios de forma universal a clientes SOAP, y dispondremos de una red mucho más rica y con muchos más servicios, quizá la idea que está detrás del estudio de Forrester.
Aún no es CORBA pero está claro que SOAP va a ser un paso adelante a la hora de distribuir servicios más avanzados en la red.
