Professional Documents
Culture Documents
Web Services
Jennifer Pérez Benedí
Departamento de Sistemas Informáticos y Computación
Universidad Politécnica de Valencia
C/Camino de Vera s/n
E-46071 Valencia- España
jeperez@dsic.upv.es
Existen diversas razones por las que han surgido los Web Services y están
teniendo tanto éxito. Entre ellas está el hecho de que los sistemas de información
actuales son cada vez más complejos y está surgiendo una tendencia a la programación
orientada a componentes y un abandono de la programación orientada a objetos. La
aproximación a la programación orientada a componentes de los Web Services hace que
muchas empresas opten por esta tecnología.
Otra de las razones por las que han surgido los Web Services ha sido que las
aplicaciones y componentes desarrolladas utilizando un middleware, como DCOM,
CORBA y Java RMI, tienen varias limitaciones. Se hizo un intento de superarlas
mediante un modelo llamado stateless programming, pero no tuvo éxito porque estas
tecnologías son bastante pesadas y el restablecimiento de la conexión con un objeto
remoto resulta muy costoso. Debido a esto, surge la necesidad de crear una nueva
tecnología desde cero, los Web Services. A continuación se citan algunas de las
limitaciones que presentan middleware como DCOM, CORBA y Java RMI:
1 Software que funciona en un servidor, generalmente conectado a un “router” que, a su vez, está conectado a una red
externa. La función del cortafuegos es proteger una Intranet evitando que entren en ella transmisiones de red no
deseadas , aplicando la filosofía de lo que no está permitido expresamente es negado.
1
Desarrollo de Web Services con Software Libre
Otro aspecto que ha propiciado esta tendencia hacia los Web Services es que la
mayor parte del tráfico de Internet se limita a un conjunto de protocolos (http, ftp y
algunos de correo) de los que el más importante volumen de información es http (puerto
80) junto con XML. La ventaja de los Web Services es que utilizan toda esta
infraestructura ya establecida, sin la necesidad de inventar otra nueva.
2. WEB SERVICES
Un Web Service es un servicio que se ofrece mediante la web. Los Web Services
los utilizan normalmente las empresas de negocios con el fin de ofertar sus servicios a
través de la Web. Una compañía puede ser tanto proveedora como consumidora de Web
Services.
Un Web Service es una clase cuya interfaz se puede hacer pública en un servidor
Web mediante un lenguaje de descripción de interfaces (WSDL). Dicha interfaz ofrece
un conjunto de actividades que un cliente puede invocar. El cliente accede al Web
Service usando los estándares de Internet.
2
Desarrollo de Web Services con Software Libre
XML para la escritura del cuerpo de estos mensajes. Todo esto permite a cualquier
aplicación ser capaz de generar e interpretar mensajes en SOAP independientemente de
la plataforma.
2.1. CARACTERÍSTICAS
Las características de esta nueva tecnología son las que se citan en los siguientes
subapartados.
Los bloques necesarios para construir una aplicación remota entre dos aplicaciones
son los que se muestran en la figura 1. El objetivo de cada uno de estos bloques se
detallan a continuación:
3
Desarrollo de Web Services con Software Libre
Discovery
UDDI, DISCO
Description
WSDL, XML Schema, Docs
Message Format
SOAP
Encoding
XML
Transport
HTTP, SMTP, etc
• Types: Contiene las definiciones de los mensajes que pueden ser enviados o
recibidos por un servicio. Se representan en un esquema utilizando XML
Schema.
<?xml version="1.0" encoding="utf-8"?>
<definitions>
<types>
<element name="Add">
<complexType>
<all>
<element name="x" type="int"/>
<element name="y" type="int"/>
4
Desarrollo de Web Services con Software Libre
</all>
</complexType>
</element>
<element name="SubtractResult">
<complexType>
<all>
<element name="result" type="int"/>
</all>
</complexType>
</element>
<element name="CalculateFault">
<complexType>
<all>
<element name="x" type="int"/>
<element name="y" type="int"/>
<element name="Description"
type="string"/>
</all>
</complexType>
</element>
. . .
</types>
</definitions>
. . .
</definitions>
<portType name="CalculatorSoapPortType">
<operation name="Add">
<input message="tns:AddSoapIn">
5
Desarrollo de Web Services con Software Libre
<output message="tns:AddSoapOut">
<fault message="tns:CalculateFaultMsg"
name="CalculateFault">
</operation>
. . .
</portType>
. . .
</definitions>
• Service : Define una colección de puertos ofrecidos por el Web Service. Dichos
puertos son cada elemento de Binding con su correspondiente URL.
<?xml version="1.0" encoding="utf-8"?>
<definitions>
<types>
. . .
</types>
<message>
. . .
</message>
<portType>
. . .
</portType>
<binding>
. . .
</binding>
<service name=" CalculatorService ">
<port name="CalculatorSoapPortType"
binding="tns:CalculatorSoapBinding">
6
Desarrollo de Web Services con Software Libre
<soap:address
location="http://localhost/MyCalculator/CalculatorSer
vice.asmx" />
</port>
</service>
. . .
</definitions>
7
Desarrollo de Web Services con Software Libre
Dentro del bloque body, hay que definir otro con el nombre del método, y dentro de
éste, tantos como parámetros necesite la invocación. Los parámetros deberán tener el
mismo nombre, y posición que en la definición del método. A continuación se muestra
la diferencia entre el uso de tipos simples y tipos estructuradas en un mensaje SOAP.
- Tipos simples: Los tipos simples de XML son un conjunto de tipos estándar para
muchos lenguajes de programación (int, boolean, float, string ...). Una instancia de estos
tipos es codificada como un elemento XML, por ejemplo:
Invocación:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Suma>
<x>1</x>
<y>2</y>
</Suma>
</soap:Body>
</soap:Envelope>
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<SumaResult>
<Result>3</Result>
</SumaResult>
</soap:Body>
</soap:Envelope>
- Tipos Estructura dos: Se codifica la estructura como un elemento XML, y dentro del
mismo cada uno de sus campos.
- Estructuras
Invocación:
8
Desarrollo de Web Services con Software Libre
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<girar>
<a>
<grados>12</grados>
<minutos>15</minutos>
<segundos>34</segundos>
</a>
</girar>
</soap:Body>
</soap:Envelope>
- Vectores
Definición:
9
Desarrollo de Web Services con Software Libre
Presenta una estructura (ver figura 2) formada por un conjunto de elementos tipo
Registry y otro de elementos tipo Registrar. Los Registry tienen una copia del directorio
UDDI al completo, mientras que los Registrar proporcionan servicios de registro al
cliente. Un Registrar puede estar proporcionado por una compañía, que tenga su
Registry, y mediante una interfaz HTML, por ejemplo, nos permita modificar los
registros del directorio. Los cambios hechos en un Registry, son actualizados
automáticamente en el resto. Un cliente accede a un Registry mediante uno de los
Registrar del mismo, y los cambios se propagan a los demás.
Registry Registry
10
Desarrollo de Web Services con Software Libre
UDDI
WSDL WSDL
Subscribe Publica
Invoca
Registrado Programador
(el que esta (el que
subscrito) SOAP sobre HTTP publica)
El uso de los Web Services a través de la Web hace necesario que se puedan
utilizar en diferentes plataformas. Debido a este requisito Java se presenta como uno de
los más firmes candidatos para el desarrollo de Servicios Web, ya que asegura que su
código sea portable. Además, la elección de Java se hace más firme y adecuada debido a
las APIs que incorpora para XML, haciendo el uso de XML embebido en código Java
mucho más fácil. Estas APIs se incorporan en un paquete de desarrollo de Java para la
programación de Web Services. Existe la posibilidad de utilizarlo directamente
programando en Java, o bien, utilizar herramientas que hacen un uso más transparente
de este paquete.
11
Desarrollo de Web Services con Software Libre
Java WSDP es un paquete que incluye ficheros JAR que implementan las APIs
para el desarrollo de Web Services y adjuntan una buena documentación con ejemplos.
Estos ejemplos pueden ser ejecutados tanto en Tomcat como J2EE. La ventaja de estas
APIs es que todas ellas aseguran interoperabilidad y flexibilidad, ya que soportan
estándares industriales.
Las APIs de Java para XML definen unos requisitos de compatibilidad que
aseguran que todas las implementaciones proporcionan la funcionalidad estándar y
proporcionan mucha libertad para desarrollar implementaciones que toleren usos
específicos.
12
Desarrollo de Web Services con Software Libre
3.2. AXIS
13
Desarrollo de Web Services con Software Libre
Existen otras herramientas para el desarrollo de Web Services sobre linux que se
están utilizando tanto como AXIS, como por ejemplo: Case Suite. Sin embargo, estas
herramientas no son de software libre. Por lo tanto, AXIS es la herramienta de software
libre para el desarrollo de Web Services más extendida.
14
Desarrollo de Web Services con Software Libre
15