Servicios Web

Servicios Web

Es una tecnología que utiliza un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones.

Modelos de Desarrollo

Hasta hace años se hacían de manera “monolítica”, en una sola pieza.  Aplicación "monolítica" aunque distribuida.


Una metodología de desarrollo mucho mejor aunque más laboriosa a la hora de programar es el modelo Cliente-Servidor en tres capas:



La arquitectura de desarrollo en n-capas (n-tier que dicen los anglosajones) lleva el concepto cliente-servidor un paso hacia adelante, dividiendo la capa intermedia en muchas otras capas especializadas cada una de las cuales puede residir en un servidor diferente:




En este modelo existe una gran variedad de componentes especializados en tareas específicas como la validación de datos, la autenticación y seguridad o el acceso a datos. Dichos componentes deben trabajar unos con otros como piezas de un mecanismo, gestionando la información que circula entre el usuario y el servidor de datos.

Comunicación entre componentes

SOAP

La tecnología que está detrás de los servicios Web  se llama SOAP (jabón en inglés). Este acrónimo (Simple Object Access Protocol) describe un concepto tecnológico basado en la sencillez y la flexibilidad que hace uso de tecnologías y estándares comunes para conseguir las promesas de la ubicuidad de los servicios, la transparencia de los datos y la independencia de la plataforma que según hemos visto, se hacen necesarios en las aplicaciones actuales.

Ejemplo

Para comprender mejor el tema aquí hay algunos ejemplos en visual studio 2010.

Hola Mundo, este ejemplo lo puedes ejecutar de la misma manera que los ejemplos que están a continuación.

Crear y consumir un Web Service ASP.NET con Visual Studio 2010



Crear y consumir un Web Service ASP.NET con Visual Studio 2010



Referencias

Servicios Web XML

Servicios Web XML

El uso de un servicio Web comprende la comunicación de métodos de servicio Web a través de una red mediante los protocolos estándar, SOAP, XML y WSDL y esto permite a los clientes de otras plataformas interoperar con servicios Web.
eXtensible Markup Language, es un lenguaje para presentar datos estructurados en forma de texto simple, y además es autodescriptivo.
Un servicio Web XML es una entidad programable que proporciona un elemento determinado de funcionalidad, como lógica de la aplicación y es accesible por diversos sistemas potencialmente dispares usando estándares de internet como HTTP.
Algunas características de XML son :

  •    Fácil de representar.
  •   Permite comunicar e integrar aplicaciones heterogéneas, al establecer un lenguaje común para expresar los datos.
  •   Es de fácil transmisión por internet mediante protocolos como HTTP, que están diseñados para transferir texto.
  •    Como los servicios corren sobre protocolo HTTP, no hay problema para saltar firewalls, ya que todo está montado sobre el puerto 80.


Los servicios Web usan XML para representar los datos que viajan hacia/desde el servicio y los mensajes necesarios para coordinar la operación, mediante el protocolo SOAP.

Tecnologías Subyacentes

SOAP (Simple Object AccessProtocol), es un lenguaje basado en XML, diseñado específicamente para trabajar con objetos remotamente, usando XML como lenguaje y HTTP como medio de transporte. Los servicios Web usan el protocolo SOAP como estándar para definir el lenguaje XML mediante el cual se comunican el consumidor y el servicio.

WSDL (Web Service DescriptionLanguage), es un lenguaje creado en XML para informar a un cliente sobre los servicios disponibles en un servidor y las operaciones definidas en cada uno. Cuando un cliente se va a conectar a un servicio, recibe estos datos y genera un archivo local con extensión WSDL, para saber que operaciones están disponibles y como tienen que utilizarlas.

UDDI (Univelsal DescriptionDiscovery and Integration), es un directorio donde se publican servicios Web de distintas empresas. Son como las páginas amarillas de servicios Web en internet.


Podemos ver de la manera resumida la información anterior en la siguiente imagen.



Ejemplo

Para tener una idea más clara del tema, en el siguiente video hay un ejmplo, el cual puedes descargar aqui, para poder ejecutarlo en tu computadora, sólo necesitas tener instalado Visual Studio.




Referencias




COM/DCOM


COM (Component Object Model)
Es una arquitectura de componentes de software que permite que las aplicaciones y sistemas se construyan a partir de componentes producidos por distintos proveedores de software.
Está diseñado para permitir que los clientes se comuniquen con otros objetos en forma transparente independientemente del lugar donde se estén ejecutando, ya sea en el mismo proceso, la misma computadora o una computadora diferente.
Provee acceso transparente a los servidores locales y remotos a través de objetos proxy y stub.



Tipos de Componentes COM
  •          In-Process, se cargan en el mismo espacio de proceso que la aplicación cliente.
  •          Locales, se ejecutan en un proceso separado en la misma computadora.
  •         Remotos, se ejecutan en otra computadora.

DCOM (Distributed COM)
Es la extensión del COM a los ambientes distribuidos, que define los mecanismos de conexión y el protocolo de red necesario para hacer llamadas a procedimientos remotos, a nivel de aplicación, que lo vuelven útil para sistemas distribuidos de todo tipo basados en componentes.
COM/DCOM
Los servidores COM/DCOM se crean como ATL Object, que producen archivos .DLL o .EXE, según el tipo de servidor que se requiera.

Los clientes se crean como proyectos normales de aplicaciones Windows, y que hacen referencia a las clases contenidas en la parte servidor mediante los punteros de interfaz a objetos COM/DCOM.


Ejemplo

Para poder comprender mejor la teoría, a continuación se muestra el video de un ejemplo, para el cual se necesitarán las siguientes líneas de código.

CODIGO EN C++ DENTRO DEL TRY
 MessageBox(0, "Hola desde mi C++ Bulder Com component!", "COM", 0 | MB_ICONINFORMATION);


CODIGO EN C# DENTRO DEL BOTON
MyComponent.MyComObject MyTest = new MyComponent.MyComObject();
            MyTest.ShowMyMessage();




Para poder realizar el ejemplo, debes tener instalado el  Embarcadero RAD studio.

Referencias


RMI (Remote Method Invocation)

RMI (Java Remote Invocation)

Es un mecanismo ofrecido por Java para invocar un método de manera remota. Proporciona un mecanismo simple para la comunicación de servidores en aplicaciones distribuidas basadas exclusivamente en Java.
Algunas de sus principales características son:
  •   Facilidad de uso en la programación, por estar específicamente diseñado para java.
  •     Proporciona paso de objetos por referencia.
  •        Recolección de basura distribuida.
  •        Paso de tipos arbitrarios.

Arquitectura (4 capas)

Primer Capa: Capa de aplicación, corresponde con la implementación real de las aplicaciones cliente y servidor.
Segunda Capa: Es la que interactúa directamente con la capa de aplicación.  Se encuentran las llamadas a objetos remotos y acciones junto con sus parámetros y retornos de objetos.
Tercer Capa: Es la de referencia remota, y es responsable del manejo de la parte semántica de las invocaciones remotas. Es la responsable de la replicación de objetos.
Cuarta Capa: Es la de transporte, es la responsable de realizar conexiones necesarias y manejo del transporte de los datos de una máquina a otra.
Skeleton y Stub: Dota a clientes y servidores de una interfaz que les permite localizar objetos remotos para invocar sus métodos como si fueran locales.



Registry: es un servidor simple que permite que una aplicación vea los objetos, que están siendo importados por un RMI.
Callback: se refiere a las llamadas y respuestas de los clientes a los servidores.

Paso de Parámetros a través de la Red

Tipos primitivos: se pasan por valor (copia). Todos son serializables.
Objetos Remotos: Se pasan por referencia (talones, usados para invocar métodos remotos).
Objetos locales: Se pasan por valor (sólo si son serializables), se crea un nuevo objeto en  la máquina virtual que recibe la copia.


Para poder utilizar los métodos y clases  de RMI, se puede instalar y consultar el API de Java. 



Ejemplo

Para tener una idea más clara en el vídeo se muestra un ejemplo de RMI, para el cuál sólo se necesita tener instalado el JDK de Java. Aquí puedes descargar los archivos y una presentación completa de RMI.



Referencias

JAVA RMI: Remote Method Invocation, Troy Bryan Downing, IDG Books Worlwide inc.