Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad 5
Unidad 5
Cuando una aplicacin cliente hace una solicitud a un mtodo Web, un paquete SOAP es
creado. Este paquete contiene el nombre del mtodo Web que es invocado, y los parmetros
que son pasados al mtodo Web en un formato XML. Cuando el paquete SOAP llega al
servidor Web en el cual reside el servicio Web, el mtodo Web y sus parmetros son extrados
del paquete SOAP y el mtodo es invocado.
Este son unos ejemplos de una solicitud SOAP.
Solicitud a un servicio de clima:
<?xml version='1.0' encoding='UTF8'?>
<SOAPENV:Envelope
xmlns:SOAPENV="http://www.w3.org/2001/09/soapenvelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAPENV:Body>
<ns1:getWeather
xmlns:ns1="urn:examples:weatherservice"
SOAP-ENV:encodingStyle=
"http://www.w3.org/2001/09/soapencoding">
<zipcode xsi:type="xsd:string">10016</zipcode>
</ns1:getWeather>
</SOAPENV:Body>
</SOAPENV:Envelope>
Respuesta de un servicio de clima:
<?xml version='1.0' encoding='UTF8'?>
<SOAPENV:Envelope
xmlns:SOAPENV="http://www.w3.org/2001/09/soapenvelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAPENV:Body>
<ns1:getWeatherResponse
xmlns:ns1="urn:examples:weatherservice"
SOAPENV:encodingStyle="http://www.w3.org/2001/09/soap-encoding">
<return xsi:type="xsd:int">65</return>
</ns1:getWeatherResponse>
</SOAPENV:Body>
</SOAPENV:Envelope>
Binding. Especfica los detalles de protocolo para el intercambio de mensajes entre las
operaciones, describiendo cmo traducir contenido abstracto a un formato estndar.
Service. Agrupa aquellos puertos que estn relacionados, y que implementan un Web
service.
Para generar un WSDL, se utiliza la utilera wsdl.exe con las siguiente sintaxis:
Wsdl /l:Lenguaje /n:NombreNamespace URL_Servicio
Donde Lenguaje es el lenguaje que se desea utilizar, NombreNamespace es el nombre del
espacio de nombres a generarse en el WSDL, y URL_Servicio es el URL del servicio Web XML
a partir del cual se generar WSDL.
La ejecucin de wsdl.exe sobre el servicio Web XML producir un programa generado en el
lenguaje especificado, que deber ser compilado como librera para su uso programtico. Dicho
programa contendr la misma funcionalidad del servicio Web XML, con todas las
especificaciones descriptivas.
Este es un ejemplo de un documento WSDL donde <message> especfica el mensaje
individual XML que son transformados entre computadoras, en este caso getWeatherRequest
and getWeatherResponse, y <service> especfica que el servicio esta disponible va SOAP.
<?xml version="1.0" encoding="UTF8"?>
<definitions name="WeatherService"
targetNamespace="http://www.ecerami.com/wsdl/WeatherService.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.ecerami.com/wsdl/WeatherService.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<message name="getWeatherRequest">
<part name="zipcode" type="xsd:string"/>
</message>
<message name="getWeatherResponse">
<part name="temperature" type="xsd:int"/>
</message>
<portType name="Weather_PortType">
<operation name="getWeather">
<input message="tns:getWeatherRequest"/>
<output message="tns:getWeatherResponse"/>
</operation>
</portType>
<binding name="Weather_Binding" type="tns:Weather_PortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getWeather">
<soap:operation soapAction=""/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:weatherservice" use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:weatherservice" use="encoded"/>
</output>
</operation>
</binding>
<service name="Weather_Service">
<documentation>WSDL File for Weather Service</documentation>
Este diagrama muestra la relacin entre las tecnologas usadas para implementar un servicio
Web
Comunicacin mediante
Mensajes SOAP
Documento
WSDL
Registro
UDDI
Localiza un
servicio Web
Aplicacin
Cliente
Servicio Web
TransactionOption
Utilidad
Obtiene o establece si la respuesta para
esta solicitud se almacena en el bfer.
Obtiene o establece el nmero de
segundos durante los cuales la respuesta
se almacena en cach
Mensaje descriptivo del mtodo de
servicios Web XML
Indica si se habilit el estado de la sesin
para un mtodo de servicios Web XML
Nombre que se utiliza para el mtodo de
servicios Web XML en los datos que se
pasan a un mtodo de servicios Web
XML y que se devuelven desde ste
Indica
la
compatibilidad
con
transacciones de un mtodo de servicios
Web XML
Disable
NotSupported
Supported
Required
RequiresNew
Si se desea utilizar un servicio Web XML de manera programtica, se debe garantizar que el
servicio quede expuesto a travs de una interfaz que permita su uso por los programas
consumidores.
Un servicio Web debe ser publicado en un servidor Web por medio de IIS(Internet Information
Server). Estos son los pasos a seguir para configurar un servicio Web:
Abrir Start->Settings->Control Panel->Administrative tools->Internet Services Manager.
Expandir y con el botn derecho sobre [Default Web Site]; seleccionar New
Virtual Directory.
En la ventana de Virtual Directory Creation seleccionar Next.
En la ventana de Virtual Directory Alias, escribir el nombre del directorio y
seleccionar Next
En la ventana de "Web Site Content Directory", escribir la ruta del directorio
donde esta contenido el Web Service y seleccionar Next.
En la ventana de "Access Permission", cambiar la configuracin segn las
necesidades, seleccionar Next y para terminar seleccionar Finish.
Para probar el Servicio Web publicado se utiliza un explorador Web, con la direccin del
Servicio Web, la pgina debe mostrar los mtodos expuestos como servicios Web por la
aplicacin.
El protocolo HTTP es textual, y es incapaz de manejar objetos complejos. Como este tipo de
consumo del servicio Web XML se realiza utilizando el protocolo HTTP, la respuesta slo puede
ofrecerse mediante XML. Si se desea que el servicio Web XML retorne objetos complejos,
como lo es un Dataset, por ejemplo, se requerir el manejo del protocolo SOAP.
Un servicio Web XML puede ser consumido desde aplicaciones de consola, Windows Forms,
Web Forms, e incluso desde otros servicios Web XML.
El consumo de servicios Web XML casi no presenta variantes que dependan del tipo de
aplicacin que lo consume.
Para disponer de manera programtica de la funcionalidad de un mtodo de servicio Web XML,
el procedimiento general es el siguiente:
1. Se debe tener desarrollado un servicio Web XML(.asmx).
2. Se debe crear una clase para el servicio Web XML.
3. Se debe compilar la clase como librera, depositndola en el directorio \bin del sitio, o
en el directorio \bin de raz de Web.
4. En el cdigo del programa que consume el servicio Web XML deber crearse una
instancia de la clase.
5. Se deber invocar el mtodo del servicio Web XMl a travs de la instancia de la clase
que se ha instanciado.
6. Se deber hacer un llamado al mtodo de servicio Web XML que desea utilizar.
7. Se utiliza el resultado retornado por el servicio.
La clase trabaja con el protocolo SOAP, que permite una estructura XML, ms estructurada que
HTTP, por lo que es posible recibir del servicio Web XML un objeto complejo, como lo es
DataSet.
Un ejemplo de un servicio Web sera el siguiente:
Se crea un proyecto de tipo ASP.NET Web Service y le asigna el nombre Ejemplo.
.
El cdigo quedara de la siguiente manera:
Imports System
Imports System.Web.Services
<System.Web.Services.WebService(Namespace :=
"http://tempuri.org/Ejemplo/Aritmetica")> _
Public Class Aritmetica
Inherits System.Web.Services.WebService
<WebMethod(Description:="Suma dos nmeros enteros")> _
Public Function Suma(ByVal N1 As Integer, ByVal N2 As Integer) As
Integer
Return (N1 + N2)
End Function
<WebMethod(Description:="Multiplicacion dos nmeros enteros")> _
Public Function Multiplicacion(ByVal N1 As Integer, ByVal N2 As
Integer) As Integer
Return (N1 * N2)
End Function
<WebMethod(Description:="Division entre dos nmeros enteros")> _
Public Function Division(ByVal N1 As Integer, ByVal N2 As Integer)
As Integer
Return (N1 / N2)
End Function
End Class
Si queremos probar el servicio Web llamamos el servicio Web de la siguiente manera
http://localhost/Ejemplo/Aritmetica.asmx y nos muestra la siguiente pgina
Seleccionamos una de los mtodos y le proporcionamos los datos que nos solicita antes de
invocar al mtodo