Ir a contenido principal

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

La primera vez que se registra en developerWorks, se crea un perfil para usted. Información sobre su perfil (nombre, país/región y compañia) estará disponible al público y acompañará cualquiera de sus publicaciones. Puede actualizar su cuenta IBM en cualquier momento.

Toda la información enviada es segura.

  • Cerrar [x]

La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

Toda la información enviada es segura.

  • Cerrar [x]

Comprender las especificaciones de los servicios web, Parte 1: SOAP

Nicholas Chase, Freelance writer, Backstop Media
Nicholas Chase participó en el desarrollo de sitios Web para empresas como Lucent Technologies, Sun Microsystems, Oracle y Tampa Bay Buccaneers. Nick fue profesor de física en escuela secundaria, gerente de instalaciones para tratamiento de desechos con bajo nivel de radioactividad, editor de una revista online de ciencia ficción, ingeniero multimedios, instructor de Oracle y Director de Tecnología en una empresa de comunicaciones interactivas. Es autor de varios libros, entre ellos XML Primer Plus (Sams).

Resumen:  El énfasis actual en las arquitecturas orientadas a servicios (SOA) ha puesto el foco en los servicios web, pero es fácil perderse en toda la información disponible. Esta serie trae la verdadera historia de las principales especificaciones de los servicios web, y comienza con el Protocolo simple de acceso a objetos (SOAP), hasta llegar al Lenguaje de ejecución de procesos de negocios WS (WS-BPEL). Este tutorial explica los conceptos básicos de los servicios web y de SOAP, y explica cómo crear un servidor y un cliente SOAP.

Ver más contenido de esta serie

Fecha:  05-08-2011
Nivel:  Intermediaria

Actividad:  24011 vistas

¿Qué son los servicios web?

Comencemos con una idea general de lo que son los servicios web, y por qué son importantes para el desarrollo de software.

Después de todo ¿cuál es el problema?

Si usted no se hubiese cansado de escuchar todo tipo de información acerca de la arquitectura orientada a los servicios (SOA) y los servicios web, no estaría aquí, entonces la pregunta es ¿por qué tanto problema con esto? La respuesta es que se trata de algo importante porque es un cambio de paradigma en la forma en que las aplicaciones se comunican entre ellas. Las SOAs existen desde hace muchísimo tiempo. Al principio se trataba mayormente de aplicaciones middleware en las que un único tipo de middleware posee, como mínimo, los dos extremos del cable. Por otra parte, los servicios web, están compuestos por un grupo de estándares que tratan de posibilitar que diversos sistemas puedan comunicarse, sin la necesidad de un middleware en particular, de lenguaje de programación, o incluso de un sistema operativo. Veamos la progresión desde donde comenzamos hasta llegar a ahora.


Aplicaciones tradicionales

Al principio, fueron las computadoras. Y fue algo bueno. Las computadoras hacían tareas aparentemente milagrosas, automatizaban muchas cosas que la gente hacía a mano, desde cálculos complejos, para pasar a las finanzas, y a muchas otras tareas.

Pero las aplicaciones tradicionales son “silos”. La aplicación de recursos humanos no podía hablar con la de finanzas que, a su vez, no podía hablar con la aplicación de distribución. Todas estas aplicaciones tenían su propio hogar, en sus propias computadoras y, si bien eran útiles, no era una buena forma de compartir datos entre ellas. Uno tenía la opción de escribir procesos batch (por lotes) para pasar los datos de un sistema al otro, pero eso no era una sustitución de la integración en tiempo real.


Computación distribuida

El paso siguiente en nuestra cadena de evolución es la computación distribuida. La computación distribuida permitía que diferentes aplicaciones se comunicaran entre sí, aun estando en computadoras distintas. Las tecnologías tipo CORBA, NTS, y Enterprise Java Beans (EJB), proporcionaron un sistema que incluía un registro de estilos, para que las aplicaciones pudiesen encontrar componentes con los que querían interactuar, y luego llamarlos como si estuviesen ubicados en la máquina local.

Estos sistemas era compatibles mediante middleware, o más específicamente, mediante middleware orientado a mensajes, que proporcionaba los dos requisitos. Ahora se pueden crear las aplicaciones de manera tal que pueden acceder a los recursos de otros sistemas, incluso si se encuentran en ubicaciones geográficas diferentes.

Pero seguía habiendo un problema. Si bien las aplicaciones se podían comunicar a cualquier parte dentro del sistema, éste seguía siendo un sistema cerrado. Como mínimo su aplicación de cliente debía usar la misma tecnología de la aplicación del servidor. Asimismo, por regla general, los sistemas no estaban diseñados para que se accediera a ellos por fuera de la organización individual que los había creado.


servicios web

El siguiente, y casi inevitable vínculo en esta cadena evolutiva son los servicios web. Basados en XML, y, en la mayoría de los casos, HTTP, los “servicios web” todavía significas muchas cosas para mucha gente, pero en este caso, hablaremos de los servicios web como el intercambio entre sistemas de mensajes basados en SOAP.

Estos mensajes se componen de XML, que es un estándar abierto basado en texto, accesible por cualquier persona desde cualquier aplicación (cualquier aplicación que no esté diseñada para aceptarlo). Esto amplía el mundo de su aplicación para que cualquier persona pueda acceder a ella en su red. (Si eso le enciende alarmas de seguridad, está bien, aprenderá cómo resolverlo en la parte cuatro de esta serie.)

El servicio web basado en SOAP implica el envío de un mensaje XML, tal como aparece en el Listado 1.


Listado 1. Servicio web basado en SOAP
    <SOAPenv:Envelope 
        xmlns:SOAPenv="http://schemas.xmlSOAP.org/SOAP/envelope/" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <SOAPenv:Body>
            <req:getNumberOfArticles xmlns:req="http://daily-moon.com/CMS/">
                <req:category>classifieds</req:category>
            </req:getNumberOfArticles>
        </SOAPenv:Body>
    </SOAPenv:Envelope>
                    
                

Estos mensajes van de un sistema a otro, por lo general, vía HTTP. El sistema receptor interpreta el mensaje, hace lo que se supone que debe hacer, y devuelve una respuesta con la forma de otro mensaje SOAP.

Es un sistema simple, y como tal, hay muchos aspectos de la computación a nivel de empresa que no los contempla. Afortunadamente, se han tomado en cuenta muchos de estos aspectos, y tienen sus propias especificaciones para determinar la manera en que debe producirse esta transacción para incorporar muchos de los aspectos de seguridad y otros del middleware tradicional orientado a mensajes.


Otros tipos de servicios web

Sería negligente si no mencionara que SOAP no es la única forma de hacer servicios web. Existen otras formas basadas en XML para enviar mensajes entre sistemas, algunas de las cuales son adecuadas para un entorno de empresa, y otras que no lo son. Por ejemplo, Amazon fue una de las primeras empresas basadas en Web en ofrecer a su público el acceso de servicios web a su sistema. Amazon incluye un servicio basado en SOAP, pero también proporciona un servicio basado en Representational State Transfer (Transferencia de Estado Representacional, REST).

REST es un tipo de servicio web en el que el usuario simplemente accede a la URL, y la respuesta es un auténtico documento XML, como el que aparece en el Listado 2.


Listado 2. Respuesta REST
					
<currentArticles>
    <category>classifieds</category>
    <subcategory>forsale</subcategory>
    <article id="888204">
        <articleHeadline></articleHeadline>
        <articleText>30 ft ladder, only used once.  Willing to let
            go for half it's worth. Has slight dent near the middle.  
            Harder than a human head. $150 OBO.</articleText>
    </article>
    <article id="888242">
        <articleHeadline></articleHeadline>
        <articleText>Vintage 1963 T-Bird.  Less than 300 miles.  
            Driven by my daughter until I took it away.  Serious inquires only.
            555-3264 after 7 PM.</articleText>
    </article>
</currentArticles>
                    

No hay un formato en particular para estos mensajes. Simplemente se trata de lo que sea el dato.

Otro tipo de servicios web implica el uso de un estándar, tal como XML-RPC. En este caso, los comandos se envían a un sistema a través de XML, como aparece en el Listado 3.


Listado 3. XML-RPC
            <?xml version="1.0"?>
            <methodCall>
                <methodName>CMS.getNumberOfArticles</methodName>
                <params>
                    <param>
                        <value><string>classifieds</string></value>
                    </param>
                    <param>
                        <value><string>forsale</string></value>
                    </param>
                </params>
            </methodCall>
                

La respuesta viene con un formato similar.

Como usted aprenderá a usar SOAP, puede pensar que REST y XML-RPC son mucho más sencillos que un sistema basado en SOAP. Y tiene razón. De alguna manera lo son. Sin embargo, no hablamos de una aplicación sencilla para visualizar el estado del tiempo en su sitio Web. Aquí se trata de aplicaciones a nivel de empresa, y estas aplicaciones necesitan atributos a nivel de empresa, como por ejemplo seguridad, interoperatividad, etc. Estas capacidades están cubiertas por especificaciones adicionales que nacieron en torno a los servicios web basados en SOAP, lo que, a la larga, hace de SOAP una mejor opción para las aplicaciones a nivel de empresa.

Veamos algunas de estas especificaciones.


Especificaciones básicas de los servicios web

Por lo general, las especificaciones de los servicios web entran en dos categorías: especificaciones básicas de servicios web y especificaciones ampliadas de servicios web. Las especificaciones básicas son:

  • SOAP: El fundamento de todos los servicios web basados en SOAP, la especificación SOAP detalla el formato de los mensajes. También detalla la forma en que las aplicaciones deben tratar determinados aspectos del mensaje, tales como los elementos del “encabezado”, lo que le permitirá crear aplicaciones en las que un mensaje pasa entre múltiples intermediarios antes de llegar a su destino final. Este tutorial abarcará la especificación SOAP.
  • WDSL: Web Services Description Language (Lenguaje de descripción de los servicios web) es una especificación que detalla una forma estándar de describir un servicio web basado en SOAP, que incluye la forma que deberán tomar los mensajes, y a dónde deben ser enviados. También detalla la respuesta a ese mensaje. Combinado con las herramientas adecuadas, WSDL le permite crear de manera programática, una llamada a un servicio web sin saber en realidad lo que busca el servicio web; la aplicación puede extraer esos detalles del archivo WSDL y proporcionarle las interfaces programáticas para que las use. Nos ocuparemos de WSDL en la parte dos de esta serie.
  • UDDI: Universal Description, Discovery and Integration (Descripción, Descubrimiento e Integración Universales) es un estándar que ha sufrido algunos cambios desde su concepción inicial. La idea era proporcionarle a las empresas una forma de registrar sus servicios en un registro global, y consultar ese registro global para buscar servicios que quisieran utilizar. Sin embargo, como es comprensible que muchas empresas sean algo renuentes a abrir sus sistemas a desconocidos, no se materializó este objetivo. No obstante, UDDI se afianzó como un registro interno de servicios e información de servicios; la parte tres de esta serie da detalles de su uso.

Esos son los fundamentos. También existen literalmente docenas de estándares ampliados para hacer que los servicios basados en SOAP sean más útiles.


Especificaciones ampliadas de los servicios web

De las docenas de especificaciones WS-* que andan dando vueltas, varias se destacan como particularmente útiles para la empresa. Y son:

  • WS-Security (Seguridad para servicios web): Esta especificación maneja el encriptado y las firmas digitales, lo que le permitirá crear una aplicación para que los mensajes no pueden ser ‘espiados’, y donde es imposible el no rechazo. La parte cuatro de esta serie se ocupa de WS-Security.
  • WS-Policy (Política de los servicios web): Esta especificación es una ampliación de WS-Security, la que le permitirá detallar de una manera más específica cómo y quiénes pueden usar un servicio web. La parte cinco de esta serie se ocupa de WS-Policy.
  • WS-I: Aunque se supone que los servicios web están diseñados para tener interoperabilidad, en realidad hay bastante flexibilidad en las especificaciones de que las interpretaciones entre las distintas implementaciones pueden causar problemas. WS-I proporciona un conjunto de estándares y prácticas para prevenir ese tipo de problemas, como así también, pruebas estandarizadas para verificar problemas. WS-I es el objeto de la parte seis de esta serie.
  • WS-BPEL (Lenguaje de ejecución de procesos de negocios para servicios web): un servicio único está bien, pero en la mayoría de los casos no se trata de una aplicación. Como mínimo, la computación a nivel de empresa necesita que usted cree servicios múltiples dentro de un sistema general, y WS-BPEL le proporciona el medio para especificar interacciones tales como el procesamiento bifurcado y coincidente, necesario para crear esos sistemas. La parte siete de esta serie se ocupa de WS-BPEL.

Otras especificaciones, que tienen un papel importante en los servicios web, no están incluidas en esta serie e incluyen WS-ReliableMessaging, que le permite estar seguro de que se ha recibido una, y solo una, copia de un mensaje, y que ha sido recibida definitivamente; WSRF, el Web Services Resource Framework (Marco de trabajo de recursos de servicios web), le permite usar estados en un entorno que, básicamente, no guarda estados precedentes; y Web Services Distributed Management (WSDM) (Gestión de servicios web distribuidos), que trata el problema de la gestión y el uso de los servicios web. Encontrará más información acerca de estas especificaciones y otras en Resources (Recursos) de este tutorial.


Lo que vamos a lograr

En este tutorial, usted seguirá al departamento Clasificados del diario Daily Moon a medida que investigan cómo integrar sus propios sistemas con la interfaz basada en servicios web que usa el sistema de gestión de contenidos. Usted creará una aplicación que crea un mensaje basado en SOAP, lo envía al servicio, y recibe una respuesta. Una vez que lo haya hecho, verá cómo crear un servicio que responda solicitudes y envíe una respuesta propia. Esto lo hará mediante la creación de aplicaciones Java, con un servidor de aplicaciones y sin él.

2 de 13 | Anterior | Siguiente

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=SOA y servicios web
ArticleID=660817
TutorialTitle=Comprender las especificaciones de los servicios web, Parte 1: SOAP
publish-date=08052011
author1-email=ibmquestions@nicholaschase.com
author1-email-cc=