Servicios Web
Servicios Web
Servicios Web
N.I.F: 52.616.465
INDICE.
1.- INTRODUCCIN.
2.- SERVICIOS WEB XML.
2.1.- CREAR SERVICIOS WEB.
2.2.- LLAMAR A UN SERVICIO WEB XML.
2.3.- COMUNICACIN CLIENTE.
2.4.- ASPECTOS RELEVANTES A TENER EN CUENTA A LA HORA DE CREAR
SERVICIOS WEB XML.
2.5.- EJEMPLO CREACIN/EJECUCIN SERVICIO WEB XML.
2.6.- EJEMPLO ACCESO SERVICO WEB XML A PARTIR DE UNA APLICACION.
3.- .NET REMOTO.
3.1.- CONSIDERACIONES GENERALES.
3.1.1.- CANALES.
3.1.2.- SUMIDEROS.
3.1.3.- PUERTOS.
3.1.4.- MENSAJES REMOTOS.
3.1.5.- CONTEXTO DE LLAMADA.
3.1.6.- SOAP EN REMOTING.
3.2.- SERVIDORES REMOTING.
3.3.- APLICACIONES HOST.
3.4.- CARGAR UNA CONFIGURACIN.
3.5.- REGISTRO OBJETO SERVIDOR.
3.6.- VERSIONADO.
3.7.- CLIENTES REMOTING.
SERVICIOS WEB
1.- INTRODUCCIN.
La gran repercusin e impacto que ha causado INTERNET en la sociedad ha originado un
profundo cambio en el entorno de las aplicaciones informticas.
Una de las mejoras que aporta la plataforma VISUAL STUDIO.NET es la introduccin de los
Servicios Web, que nos permite desarrollar proyectos de aplicaciones mas atractivas y modernas.
Principales ventajas que nos ofrece:
-
Los servicios Web, pueden soportar el desarrollo de aplicaciones para plataformas que no son
Windows, incluso no tienen porqu usar Visual Studio.Net.
Hace posible que la comunicacin sea sencilla entre los componentes individuales de una
aplicacin ubicada en diferentes mquinas distribuidas a lo largo del mundo.
Los servicios web se comunican utilizando SOAP, (Simple Object Access Protocol), un
protocolo fuente abierto que cualquier aplicacin puede utilizar, cuya herencia hace que sus
servicios estn disponibles para cualquier lenguaje de desarrollo que se ejecute en cualquier
sistema operativo.
La reutilizacin del cdigo toma un nuevo significado porque puede reutilizarse el cdigo a
partir de aplicaciones localizadas en cualquier sitio del mundo y a lo largo de mltiples
entornos de desarrollo.
C#
VB
C++
JScrip
etc
CLS
IL (Lenguaje Intermedio)
Servicios
WEB
Pginas
ASP.NET
Formularios
Windows
Aplicaciones ASP.NET
Datos y XML
Librera de clases base
Windows
Servicios COM+
Objeto
Cliente
http Get/Post
xml/http
Directorio
Cortafuegos
Ejemplo: ilustracin grfica de los servicios web
Web Services Process Integration: La integracin del proceso por las organizaciones con los
Servicios Web: proceso global que incluye procesos interiores dentro de las dos organizaciones, as
como la coreografa de intercambio de mensajes entre las dos organizaciones.
La compaa A podra ser un comprador, el proceso interior podra involucrar aprobacin y una
compra en el proceso. La compaa B como un vendedor tambin tendr su proceso de cumplimiento
de ventas. Los procesos interiores involucran otro tipo de procesos como aplicaciones de contabilidad,
recursos, organizacin empresa...
Los dos procesos para su comunicacin utilizan SOAP, protocolo de comunicaciones que publica un
mensaje para transportarlo encapsulando un mensaje XML en lo que se conoce como una envolvente y
enva este paquete a travs de Internet utilizando http, que es protocolo de transporte primario de la
Web.
Como se puede apreciar la Web es la plataforma ideal para descubrir compaeros comerciales y
proporcionar a la vez una fcil integracin.
Dentro de la plataforma .NET cabe la posibilidad de utilizar dos tipos diferentes de servicios WEB,
dependiendo de las ventajas/incovenientes asociadas optaremos por uno u otro.
- Servicios Web XML.
- .NET remoto.
Principales diferencias:
Ambos nos permiten desarrollar Servicios Web pero teniendo en cuenta que un Servicio Web XML
debe estar ubicado en un servidor Web, mientras que un objeto .NET remoto no requiere un servidor
especial para ubicarlo, solo requiere que el CLR est instalado en el servidor.
Los servicios Web XML operan en el mundo sin conexin, y sin estado de Internet. Cada peticin
realizada a un Servicio Web XML crea una peticin de ese servicio en el servicio Web, los datos no se
pueden compartir por mltiples visitantes a un servicio simple Web XML sin el uso de una base de
datos principal o algn formulario de datos que permanezca al pasar los datos. Por otra parte, un
objeto Remoting se puede hacer para mltiples clientes y compartir datos entre los que se llaman sin
infraestructura principal adicional.
Los servicios Web XML se comunican usando http que es un protocolo implementado y
reconocido universalmente, de esta manera podra llamar al cdigo de cualquiera
independientemente si es un objeto COM, Java...
Cuando se aade una referencia Visual Studio .NET aprende lo ms posible de nuestro servicio, esta
informacin Visual Studio .NET la recoge a travs de un proceso llamado discovery que permite
detectar automticamente los servicios web instalados y proporciona a los visitantes una lista de los
instalados. Estos servicio son identificados por llevar la extensin .vsdisco.
Nota:
Hay una iniciativa empresarial llamada Universal Description, Discovery End Integratio (UDDI) para
proporcionar una base de datos con todos los Servicios Web disponibles en todo el mundo.
Clase proxy
Representacin
local del
Servicio
Web XML
Peticin en
Formato
Soap
Servicio
Web XML
Respuesta
en formato
Soap
Aunque es el protocolo SOAP el que hace posible comunicarse para todo el mundo con su servicio
web, XML hace que la informacin que proporciona su servicio sea entendible universalmente.
2.4.- ASPECTOS RELEVANTES A TENER EN CUENTA A LA HORA CREAR SERVICIO
WEB XML.
La no disponibilidad de los servicios web XML a la hora de programar nuestro servicio es vital
que tengamos en cuenta este factor y tomemos las medidas oportunas para que el servicio
llegue a buen fn.
Tiempo de acceso a los servicios Web estos tiempos no deberan ser elevados de lo contrario
restara relevancia al servicio, en informtica los tiempos de respuesta son de vital relevancia.
Hoy en da esto se intenta paliar con los accesos de banda ancha cada vez mas frecuentes. Otra
alternativa sera intentar el alojamiento de una copia local de este servicio en la red para que
sea ms rpido.
Los proyectos que no son Web no interaccionan con el servidor web por ello solo puedo aadir
formularios Web a los tipos de proyectos .NET, stos son las aplicaciones Web ASP.NET y los
servicios Web XML, y ASP.NET.
refrencia a LibroService. Una vez seleccionada la opcin se abrir una ventana llamada Add web
refrence, esta ventana es muy similar a un navegador Web, ya que tiene una caja de direcciones y
algunos de los botones de los navegadores como Refresh y Back.. Hay dos paneles debajo de la caja
de direcciones. El panel de la derecha, llamado referencias disponibles est en blanco por el momento,
mientras que el panel de la izquierda tendr enlaces al UDDI de Microsoft para poder buscar servicios
Web Internet.
4.- En el cuadro del texto de direcciones , escribir la URL que apunta al servicio Web LibroService. Si
el servicio estuviera alojado en el mismo ordenador sera:
http://localhost/LibroService/libro.asmx
5.- Despus de escribir la URL del servicio Web XML presionar intro y Visual Studio .NET contactar
con el servicio Web XML. En el panel de la izquierda, se podr ver una pgina web que lista las
funciones asociadas con ese servicio. El panel de la derecha, proporciona enlaces a la informacin
WSDL y documentacin del servicio localizado. Hacer clic en el botn, aadir referencias que est en
el fondo de esta ventana. Podr ver una carpeta de referencias Web debajo del proyecto LibroOrder en
la ventana Explorador de soluciones. Si expande esta carpeta, ver que hay una referencia al servidor
Web en el que est alojado el servicio LibroService.
6.- En el formulario windows, haga doble clic sobre el botn para acceder al cdigo del evento clic.
Aadir el siguiente cdigo.
Private Sub Boton1_Clic(ByVal sender as System.Object, ByVal e _
As System.EventArgs) Handles Boton1.Click
If Not (IsNumeric(TextBox1.text)) Then
MsgBox(ERROR! Introduzca un Nmero)
Exit Sub
End if
Dim ObtenerCoste As New localhost.Libro()
Dim ContarLibro As integer
Dim PrecioFinal As double
ContarLibro = Cint(TextBox1.Text)
PrecioFinal = GetCost.Compralibro(ContarLibro)
Label1.Text = Precio = & Format(PrecioFinal, $###,##0)
End Sub
7.- Al tener ya la referencia al servidor web, usar el servicio es igual que utilizar la referencia a otra
clase.
8.- Guardar el proyecto y ejecutarlo presionando F5. Al abrirse el formulario Web introducimos los
datos, presionamos el botn y los resultados ser visualizados.
3.- .NET REMOTO.
Para la utilizacin de servicios Web en .Net remoto tendremos que tener en cuenta una serie de
factores, que se explicarn en los apartados posteriores.
3.1.- CONSIDERACIONES GENERALES
CANALES
Al conectarse un objeto cliente con un objeto servidor se crea un canal de comunicaciones entre ellos.
En .NET remoto se tiene la posibilidad de crear y utilizar dos tipos de canales diferentes para su
comunicacin.
- Canal TCP.
- Canal HTTP.
CANAL TCP
Enva los datos entre los objetos cliente y servidor usando un formato binario propio. Los objetos
finales en un canal TCP deben permitir entender este mensaje en formato binario, lo que significa que
solo debera pensar en utilizar en canal TCP para comunicarse entre un objeto . NET y otro.
En el canal TCP no se pueden encriptar las comunicaciones y con lo cual la seguridad de la
informacin es vulnerable.
Es bidireccional, sus objetos pueden enviar y recibir datos a travs de este canal.
El canal TCP es el canal Remoting ms rpido y el ms eficiente que se puede utilizar.
CANAL HTTP
Los objetos cliente y servidor involucrados en un escenario Remoting que utilicen http no tienen
porque ser creados en .NET, debido a que SOAP (se basa en tecnologa XML , el mensaje y su entorno
cerrado se autodescriben y pueden leerse y crearse por otra aplicacin).
Utiliza el puerto 80 de los ordenadores que es el mismo puerto usado para las peticiones y respuestas
del navegador estndar Web.
SOAP es una herramienta que permite a las aplicaciones enviar sus llamadas objeto a objeto a travs
de internet usando el protocolo de transmisin http, por ello sus llamadas pueden pasar a travs de
firewalls, (cortafuegos) que proporcionan una mayor seguridad frente al canal TCP.
SUMIDEROS
Un sumidero maneja el formato del mensaje preparndolo para su transmisin, mientras otro sumidero
maneja la tarea de transmitir ese mensaje con otro formato a travs de la red. En recepcin, otro
sumidero recibe el mensaje de la red y lo pasa a otro sumidero, que decodifica el formato del mensaje
y entrega el mensaje original al dominio de la aplicacin receptora.
PUERTOS
Las comunicaciones entran o salen de un ordenador a travs de un puerto. El canal http, usa el puerto
80 para enviar sus peticiones mezcladas con el trfico Web.
Nota:
En Windows 2000, Windows NT XP para ver la configuracin del puerto de su mquina utilice el
programa Bloc de notas para mirar el archivo Services localizado en C:\Windows\System32\Drivers.
Este archivo indica los puertos que tiene definidos el ordenador y cmo se estn utilizando y qu
protocolo de comunicaciones utilizan.
El objeto cliente registrar un canal en la mquina que llama y el objeto servidor, tendr un canal
registrado para escuchar las peticiones de los clientes. Dado que un objeto servidor, puede tener
configurados muchos canales que escuchen, el desarrollador del objeto cliente, debe conocer qu tipo
de canal se est usando para configurar y registrar el canal del cliente apropiadamente.
MENSAJES REMOTOS
La interfaz Message en la plataforma .NET est bajo el mbito System.runtime.remoting.Messaging.
El mensaje es la peticin del cliente y sus parmetros asociados. El mensaje se enva desde un objeto a
otro a travs de un canal, y el formato del mensaje se modifica por uno mas sumideros.
Truco:
A la hora de disear las clases bases de una aplicacin para usar en herencia, si la clase base que se
disea se hereda de la clase base System.MarshalByRefObject, cualquier clase derivada de la clase que
se est diseando tambin utilizar MarshalByRefObject.
Lo ms eficiente sera pasar los datos Byref (por referencia) y no ByVal (por valor), esto originara un
costo excesivo puesto que hace una copia en el servidor, mientras que byRef pasa un punteros sin
embargo ByVal proporciona una proteccin de los valores originales.
El sumidero formateador se responsabiliza de publicar el mensaje del objeto cliente y aplica cualquier
formato especfico del canal para ese mensaje.
Si los objetos estn usando un canal TCP para comunicarse, el formateador utiliza la clase
Binary.BinaryFormatter del mbito System.Runtime.Serialization.Formatters. Si est utilizando el
canal http con sus objetos, el formateador se deriva de la clase Soap.SoapFormatter.
Nota:
Se necesita aadir una referencia de la clase base System.Runtime.Serialization.Formatters.Soap para
referirse a Soap.SoapFormatter en el cdigo fuente.
La llamada a una funcin remota se hace a travs de una versin local de la funcin que se conoce
como Proxy. El proxy reencamina esa llamada a la funcin, al objeto remoto y a continuacin recibe
la respuesta del objeto y presenta los resultados en el llamador.
En remoting hay dos niveles de Proxy:
-
Transparent Proxy.
Real Proxy.
Transparent Proxy: proxy de nivel superior que el objeto cliente llamante trata, y acta como
intermediario para la clase Realproxy. Maneja toda la interaccin del objeto cliente, y el
empaquetamiento de los datos bsicos.
Real Proxy: maneja el grueso del trabajo, incluyendo las comunicaciones con el objeto servidor.
Clases proxy en una sesin remota cliente-servidor.
Dominio de la Aplicacin A
Objeto
Cliente
Proxy
Transparente
Proxy
Real
Dominio de la Aplicacin
B
Objeto Servidor
CONTEXTO DE LLAMADA
El contexto de llamada es un paquete de informacin que se enva con el mensaje objeto para datos de
informacin. Remoting crea un objeto llamado Callcontext para dar al cdigo acceso a esos datos. Los
dos mtodos principales de este objeto son Setdata y Getdata que proporcionan acceso de escritura a/o
lectura desde los datos almacenados en Callcontext.
El objeto Callcontext se puede encontrar en el mbito System.Runtime.Remoting.Messaging.
SOAP EN REMOTING
Con Soap se puede encapsular un mensaje una llamada a un objeto en un envoltorio basado en
XML, que permite enviar el mensaje usando el protocolo http.
Una ventaja primaria del uso de realizar mensajes SOAP a traves de internet utilizando http es que usa
un formato de mensajes y un protocolo de red aceptados universalmente y ampliamente
comprensibles.
Soap es autodescriptivo, as que el receptor del mensaje no tiene que tener conocimiento previo de ese
formato de mensaje, ni haber realizado ningn acuerdo uso de protocolo de comunicaciones propios
para recibir los mensajes.
3.2.- SERVIDORES REMOTING
Un objeto servidor es ms difcil de crear que un objeto cliente. Un objeto servidor no es parte de la
aplicacin del objeto cliente, incluso aunque las llamadas del objeto cliente al objeto servidor sean
para ayuda.
Consideraciones a tener en cuenta a la hora de crear un objeto servidor remoting:
-
Si es un objeto remoto debera estar disponible a todo el mundo, de lo contrario no puede ser
remoto.
Que tipo de activacin debera usar.
Ser el servidor con estado sin estado.
Cual es el instante de vida del objeto servidor.
Debera usar el canal http el canal TCP.
Tipo de formateador a utilizar.
Es la configuracin del objeto servidor reutilizable, y si lo es debera situarla en un archivo de
configuracin externo.
Debera administrar la versin del objeto servidor.
canal registrado. Cuando se recibe una peticin, la aplicacin host carga el objeto servidor en su
dominio de aplicacin, y pasa la llamada del cliente al servicio.
Las aplicaciones host y objeto servidor.
Aplicacin
Host
Aplicacin del
objeto servidor
Es la aplicacin host quin registra el canal y confirma el medio remoting mediante programacin, a
travs del uso de un archivo de configuracin externa. La clase library que contiene el objeto
servidor,puede permanecer inactiva y quieta hasta que la llame un cliente. Si la clase que contiene el
servidor no est contenida en la aplicacin host, esa aplicacin necesitar una referencia a la clase para
que pueda cargarla cuando la necesite. Cuando se llame al objeto servidor, se cargar en el dominio de
la aplicacin host y se procesar.
3.4- CARGAR UNA CONFIGURACIN.
En el mbito System.Runtime.Remoting est la clase RemotingConfiguration. Se puede utilizar el
mtodo Configure de esta clase para leer en el archivo de texto de configuracin e inicializar la clase.
Remoting de Visual Studio.Net entiende un esquema especfico de etiquetas XML para configurar un
objeto.
Etiquetas del esquema del archivo de configuracin Remoting
Nombre de la Etiqueta
<configuration>
<system.runtime.remoting>
<application>
<service>
<channels>
<channel>
<clientProviders>
<ServerProviders>
<client>
<Formatter>
<wellknown>
Descripcin
La etiqueta de apertura para el archivo de configuracin.
El mbito bajo el cual acta Remoting.
Las entradas contenidas en esta etiqueta pertenecen a una aplicacin
nica
Contiene las etiquetas de configuracin del objeto servidor.
La etiqueta origen de la seccin de configuracin del canal.
Informacin especfica para configurar el canal, como un tipo de
canal http TCP
Etiqueta
Configura el sumidero del canal del objeto del servidor; solo en el
servidor.
Encierra las etiquetas de la configuracin del canal del cliente.
Configura el formateador del canal que usa para dar formato a sus
mensajes.
Declara la peticin del objeto servidor que usar este objeto cliente.
<lifetime>
<activated>
Configuracin Programada
Se puede configurar un objeto cliente o servidor y registrarlo directamente desde el cdigo fuente sin
tener que llamar a un archivo de configuracin externo, para ello se utilizar la clase
RemotingConfiguration en el mbito System.Runtime.Remoting.
Pasos a seguir:
-
Establecer un canal http TCP, para ello crear una peticin de la clase Tcpchannel
Httpchanel y asignarle un nmero de puerto.
Registrar esa peticin del canal con la plataforma .NET.
Registrar el objeto para usar ese canal.
3.6.- VERSIONADO
Es una de las ventajas que ofrece .NET remoting. El cliente controla la activacin del objeto servidor,
los parmetros de configuracin del cliente decidirn que versin del objeto servidor se usar para
evitar posibles excepciones, esto se consigue especificando un nmero de versin para un objeto
servidor no requerido.
3.7.- CLIENTES REMOTING
El objeto cliente solo necesita comprender la interfaz del objeto servidor, y no tiene ningn control
sobre como trabaja el objeto servidor como hace su trabajo.
Tipos de Activacion:
-
Descripcin
Permite crear una peticin de objeto COM desde una peticin de
ensamblaje.
CreateInstance
Crea una peticin de un ensamblaje.
CreateInstanceFrom
Crea una nueva peticin de ensamblaje desde una peticin de ese
ensamblaje que ya se est ejecutando.
GetObject
Usado para crear clases proxy que representen objetos remotos y
servicios XML Web.
Como suceda con los objetos servidor , un objeto cliente se puede configurar de forma programada
mediante su cdigo fuente mediante la utilizacin de un archivo de configuracin externo.
Para cargar el archivo de configuracin XML en el objeto cliente usar el mtodo
RemotingConfiguration.Configure. Este mtodo lee en los parmetros del archivo utilizndolos para
configurar los codificadores y canales del objeto cliente que se van a usar con el servidor remoto
3.8.- CREACIN SERVIDOR REMOTING.
Pasos a seguir para la creacin de una aplicacin host y un objeto servidor.
1.- Aadir una referencia al mbito System.Rumtime.Remoting.
2.- Aadir Imports System.Runtime.Remoting en la parte superior del archivo clase de la aplicacin
host.
3.- En la funcin inicial de aplicacin host (la subrutina Main() New()) configurar el objeto servidor
Remoting de forma programada o usando un archivo de configuracin externo.
4.- Heredar la clase del objeto servidor de la clase base MarshalByReferenceObject.
3.9.- CREACIN APLICACIN CLIENTE REMOTING.
Pasos a seguir para la conexin de un objeto cliente a un objeto servidor.
Bibliografa
Introducing Microsoft .NET David S. Platt.
Visual Studio .Net Julian Templeman /David Vitter.
Artculo http://webservicesarchitect.com