XML. Donde empiezan los Servicios Web

Por Evelio Martínez Martínez y José Martín Olguín Espinoza
Publicado en la Revista RED, Mayo, Junio de 2004.

Introducción
Las necesidades y aplicaciones de negocios del mundo de hoy requieren de un conjunto de componentes distribuidos cada vez más complejos a través de las redes de telecomunicaciones. Aunque la complejidad estriba en el software/hardware que ponen a funcionar a esos componentes, todo esto va enfocado a facilitar a los usuarios sus diversas actividades diarias.

El simple hecho de hacer una reservación en una línea área requiere de una serie de procedimientos en los que se ven involucrados estos componentes distribuidos. Por ejemplo, para verificar la disponibilidad de las líneas aéreas en un viaje de México a Egipto, así como la verificación de la tarjeta de crédito, hospedaje en un hotel y la renta de un vehículo. Como en este tipo de itinerarios pueden intervenir varias líneas aéreas con distintas bases de datos, plataformas y arquitecturas de software/hardware, vuelve más complejo el proceso en una simple reservación aérea. Una solución este tipo de necesidades son los Servicios Web (Web Services en inglés).

Qué son los Servicios Web
Los servicios web (SW) son colecciones de funciones u objetos distribuidos que son presentados como una sola entidad la cual es anunciada en la red para ser usada por otros programas. Son componentes de software que permiten a los usuarios utilizar aplicaciones de negocio que compartan datos con otros programas modulares, vía la dorsal de Internet.

Los servicios web son aplicaciones independientes, autocontenidas y modulares independientemente de la plataforma, que puede ser fácilmente publicadas, localizadas e invocadas mediante protocolos web estándar basados en XML, como SOAP, WDSL o UDDI. Para hacer realidad esta tecnología, se requiere de tres entidades participantes: Los Proveedores de Servicios, los Agentes y los Solicitantes. El Proveedor anuncia sus servicios con un Agente, cuando un Solicitante busca en un Agente un servicio, encuentra al Proveedor y establece el enlace para hacer uso de los servicios [ver figura 1].


FIGURA 1. Arquitectura orientada a servicios

El objetivo final de los servicios web es la creación de directorios en línea que puedan ser localizados de un modo sencillo con un alto nivel de fiabilidad. XML es utilizado para etiquetar los datos, SOAP es usado para transferir los datos, WDSL es utilizado para describir los servicios disponibles y UDDI es usado para listar qué servicios están disponibles.

A diferencia de los modelos tradicionales cliente/servidor, tales como el sistema de servidores de páginas web, los servicios web no proveen al usuario con una interfase gráfica. Los servicios web en vez de eso comparten lógica de negocios, procesos y datos a través de una interfase programática a través de la red. Los servicios web permiten que diferentes aplicaciones de diferentes fuentes puedan comunicarse entre sí.

El consorcio de tecnologías web, W3C (http://www.w3c.org/), define a los servicios web como un sistema de software identificado por un URI, cuyas interfaces públicas y enlaces están definidos y descritos usando XML. Su definición puede ser descubierta por otros sistemas de software. Estos sistemas pueden interactuar con el servicio Web de la manera preestablecida en su definición, usando mensajes basados en XML y transportados por los protocolos de Internet.

Para simplificar la definición, podemos usar la analogía de un servicio web con una biblioteca de funciones que un proveedor ofrece. Esta biblioteca por sí sola no genera un valor completo, se utiliza en conjunto con otros componentes para crear aplicaciones completas. Siguiendo con la analogía, si se quisiera crear un software ERP, entonces podríamos contratar con diferentes proveedores un SW de manejo de inventario, un SW de control de producción, un SW de planeación de compras; los interconectamos y listo, ya tenemos nuestro ERP. Claro, para que esto funcione deben existir estándares que nos permitan asegurar las operaciones mínimas que deben proveer los SW anteriormente mencionados.

Los servicios web publican una interfaz con todos los servicios que ofrecen, y cuando son invocados por los clientes, se ejecutan en su propia infraestructura (CPUs, DBMS, etc.), retornando sólo el resultado del procesamiento, es por esto que las aplicaciones construidas con servicios web caen dentro de la definición de aplicaciones distribuidas.


XML como presentador principal de los servicios web
El XML es una tecnología que permite estructurar documentos (metalenguaje) para darle significado a su contenido. Esto se logra mediante el uso de etiquetas tipo HTML, pero definidas especialmente para el dominio de una aplicación en particular. El XML es un lenguaje en el cual cada desarrollador puede definir su propio conjunto de etiquetas y su principal objetivo, a diferencia de HTML, no es el despliegue del documento, sino la estructura y el significado de su contenido. Por ejemplo, un archivo XML utilizado para representar información de una biblioteca podría ser de la siguiente forma:

Las aplicaciones que hagan uso de estos archivos debe tener una manera de asegurarse que los archivos XML estén bien formados, es decir, que estén construidos de acuerdo a una serie de reglas previamente definidas. Esto se logra comparando el archivo XML contra una definición formal en la cual se declaran las etiquetas, parámetros y relación de jerarquía que habrá entre ellas. Existen varias formas de establecer esta declaración formal, las más utilizadas son los DTD y los Esquemas XML (XMLSchema), que son lenguajes preestablecidos con los cuales se pueden definir las reglas de construcción de los documentos XML.

Con el XML se pretende lograr la plena portabilidad de la información que circule en Internet, ya que cualquier documento podrá ser interpretado si se tiene acceso a su definición formal (DTD o XMLSchema). Esto permite que se puedan construir aplicaciones que intercambien datos entre plataformas propietarias mediante el uso de componentes de software que traduzcan del formato de datos propietario a una definición XML y viceversa.


FIGURA 2. Relación entre tecnologías de creación de documentos

XML es un lenguaje que está transformando completamente la creación y el uso del software. Así como las tecnologías web ya conocidas (HTML, PHP, Java, Perl,..) revolucionaron la comunicación entre usuarios y aplicaciones. XML está revolucionando la comunicación entre aplicaciones y equipos, pues ofrece un formato de datos universal, pues permite adaptar o transformar fácilmente la información. XML es la base de los servicios web, ya que es un lenguaje genérico con el que se puede describir cualquier tipo de archivo. XML, es hoy en día un formato universal que lo están adoptando multitud de programadores y que puede abarcar cualquier caso de intercambio de información.

La idea básica es que con XML sea posible codificar información en un documento de texto que no sólo contenga datos sino que también contiene información que describe el significado de los mismos en una forma estructurada y legible para el ser humano.

Muchos desarrolladores están encontrando muchas bondades en XML, tal es el caso particular de Cisco Systems, quien utiliza XML en la interfase de los servicios de telefonía IP que ofrece, tales como servicios empresariales, inventarios, catálogos, lista de horarios de vuelos, agendas, etc..

Aplicaciones de servicios web
El Internet está transformándose así mismo como medio de información, no sólo para intercambiar ideas, sino también para ofrecer servicios. Muchos de esos servicios/aplicaciones de la actualidad utilizan la potencialidad de los servicios web. Quizás, algunas de ellas, Usted las utiliza a diario. Tal es el caso del sistema centralizado de autentificación (conocido como Passport) de usuarios de Microsoft. Este sistema de autentificación es utilizado como un componente común para varios de los servicios .net, tales como el mensajero instantáneo, sistema de correo, grupos, tiendas de compras, etc. El sitio, Yahoo.com, tiene un sistema de autentificación similar que les da acceso seguro a todos sus servicios a sus usuarios. Una aplicación más compleja, ya que involucra el acceso a información de varias entidades son las agencias expendedoras de boletos de avión, hoteles y renta de autos tales como Expedia.com, Travelocity.com, Orbitz.com y Cheaptickets.com, sólo por nombrar algunas. El manejar tres diferentes tipos de productos (o más) como uno sólo, no se lograría sin las bondades y beneficios de los servicios web. El acceso a tres tipos diferentes de sistemas representa un reto extremo para los servicios web. Una aplicación de los SW muy deseable en nuestro país sería contar con este tipo de componentes ofrecidos por parte de las dependencias gubernamentales, tales como el Sistema de Administración Tributaria (SAT), el cual podría ofrecer un SW para el pago de impuestos y consulta de estados de cuenta, de esta forma, las empresas podrían conectar directamente sus aplicaciones contables a los sistemas del SAT. Lo mismo podría ocurrir con los trámites del IMSS, los sistemas de nómina de las empresas podrían conectarse directamente a un SW del IMSS para hacer los movimientos de los trabajadores y los pagos correspondientes sin necesidad de tener que recapturar los datos en los sistemas del IMSS tal y como sucede hoy en día. Lo mismo se podría hacer para el Infonavit. El INEGI podría ofrecer servicios de información geográfica y estadística en línea, lista para ser integrada en los sistemas de cómputo de empresas de estudios de mercado, en los sistemas catastrales municipales, etc.


FIGURA 3. áreas del personal que las compañías tienen planeado contratar en el 2004

Otras aplicaciones donde se utilizan los servicios web son: La transferencia electrónica entre bancos, inversión en línea en las bolsas de valores, (e.g. etrade.com y Ameritrade.com). En general, según un estudio de Infoworld (http://www.infoworld.com/), las aplicaciones de los servicios web se centran en cinco áreas principales: comercio electrónico negocio a negocio y negocio a consumidor, cadenas de suministros, CRMs y ERPs.




FIGURA 4. Principales obstáculos para la adopción de Servicios Web

Tendencias y conclusiones
La firma consultora Gartner Inc. (http://www.gartner.com/). señalo recientemente que los servicios web causarán un fuerte impacto en el mercado de servicios profesionales de las tecnologías de información. Según Gartner, el mercado mundial de servicios profesionales crecerá de los $56 mil millones de dólares que registró en el 2003 ?que representaban el 6 por ciento de la industria de la tecnología?, hasta los $283 mil millones de dólares en el 2007. Este incremento será el resultado de utilizar los servicios web en lugar del esquema tradicional.

Los estándares jugarán un papel muy importante en el éxito de la tecnología. El mayor reto al que se enfrentan los servicios web es la seguridad. En los ecosistemas de negocios, los desarrolladores necesitan una arquitectura de seguridad extremo a extremo de manera fortuita para generar círculos de confianza entre las compañías involucradas. Cabe resaltar que usando servicios web, la seguridad de una empresa puede verse comprometida. La ausencia de estándares de seguridad es un obstáculo para la adopción de la tecnología. Un hecho claro es que los servicios web basados en XML son aceptados universalmente. Pero la situación del resto de los protocolos involucrados es muy distinta. La mayor parte de ellos se encuentra en desarrollo y pueden ser objeto de cambios. Esa es la principal razón por la que las compañías están esperando a que estos protocolos sean más universales antes de implementar los servicios web en su ambiente de negocios.

Los autores, Evelio Martínez y J. Martín Olguín son docentes de tiempo completo en la Facultad de Ciencias (Ensenada) y en la Facultad de Ingeniería (Mexicali) de la Universidad Autónoma de Baja California (UABC) respectivamente. Se les puede contactar en los correos electrónicos: evelio[at]uabc.mx y molguin[at]uabc.mx.



Glosario de términos
CORBA Common Object Request Broker Architecture, Arquitectura de agentes de peticiones de objetos común
CRM Customer Relationship Management, Administración de relaciones al cliente
DBMS Data Base Management System, sistema de administración de base de datos
DCOM Distributed Component Object Model, modelo objetos de componentes distibuidos
DTD Data Type Definition, definición de tipos de datos
ERP Enterprise Resource Planning, Planeación de recursos empresarial
HTML HyperText Markup Language, lenguaje de etiquetas de hipertexto
RCP Remote Procedure Call, llamada a procedimiento remoto
RMI Remote Method Invocation, Invocación remota de métodos
SGML Standard Generalized Markup Language, lenguaje de etiquetas estándar generalizado
SOAP Simple Object Access Protocol, protocolo de acceso a objetos simples
UDDI Universal Description, Discovery and Integration, descubrimiento e integración de descripciones universales
URI Uniform Resource Identifier, identificador uniforme de recursos
W3C World Wide Web Consortium, consorcio del www
WDSL Web Service Description Language, lenguaje de descripción de servicios web
XHTML Extensible HyperText Markup Language, lenguaje de etiquetas de hipertexto extensible
XML Extensible Markup Language, Lenguaje de Marcado Extensible


Referencias sobre Servicios
http://www.w3.org/2002/ws/
http://www.webservices.org/
http://web-services.bankhacker.com/
http://java.sun.com/webservices/index.jsp
http://www.wsindex.org/Web_Services/index.html
http://www.service-architecture.com/articles/index.html
http://www.w3schools.com/xml/default.asp
http://msdn.microsoft.com/webservices/
Hits: 11446

Licencia

Creative Commons License El contenido de la web está bajo licencia Creative Commons. Eres libre de copiar, distribuir y comunicar públicamente la obra. No puedes utilizar esta obra para fines comerciales. Si alteras, transformas o creas una obra a partir de esta obra, solo podrás distribuir la obra resultante bajo una licencia igual a ésta. Debes reconocer la autoría de la obra en los términos especificados por el propio autor o licenciante mediante un enlace a este Sitio. 

<a href="http://www.eveliux.com/mx/"> Eveliux.com </a>