Servicio Web

jueves, 20 de noviembre de 2014
"Un servicio Web XML es una entidad programable que proporciona un elemento de funcionalidad determinado, como lógica de aplicación, al que se puede tener acceso desde diversos sistemas potencialmente distintos mediante estándares de Internet muy extendidos, como XML y HTTP."

"Un servicio Web XML puede ser utilizado internamente por una aplicación o bien ser expuesto de forma externa en Internet por varias aplicaciones. Dado que a través de una interfaz estándar es posible el acceso a un servicio Web XML, éste permite el funcionamiento de una serie de sistemas heterogéneos como un conjunto integrado."
Modelos de desarrollo
El hecho de poder comunicar componentes de software entre sí tiene una enorme importancia. Hasta no hace tantos años era muy típico hacer aplicaciones de una sola pieza, "monolíticas":
Aplicación "monolítica" aunque distribuida


Estos programas podían acceder a un sistema gestor de datos a través de la red, pero toda la lógica del flujo de datos, la seguridad y las interacciones con las personas se encontraban en el ordenador del usuario en forma de un gran ejecutable
Una metodología de desarrollo mucho mejor aunque más laboriosa a la hora de programar es el modelo Cliente-Servidor en tres capas:
Aplicación Cliente Servidor en tres capas

En este modelo toda la lógica de los datos, su validación, los permisos, etc., residen en un servidor intermedio y son utilizados por todos los clientes a través de una red. En este caso en el ordenador del usuario lo único que hay es una capa de presentación que se ocupa básicamente de recoger y recibir datos, es decir, actúa de intermediario entre el usuario y las reglas de negocio residentes en la capa intermedia.
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:
Arquitectura de desarrollo basada en componentes

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.
La belleza de este modelo radica en que cada uno de ellos (o cada grupo de ellos) puede residir en un servidor diferente, siendo transparente su ubicación para los clientes que los utilizan.
El concepto de Arquitectura Orientada a Servicios o SOA se basa en el uso de este tipo de componentes que suplen las necesidades de una o varias aplicaciones, son independientes entre sí y trabajan independientemente del sistema operativo o la plataforma.

Comunicación entre componentes

Servicios y protocolos específicos orientados a la interacción distribuida de componentes:

 DCOM (Distributed Common Object Model), la propuesta de Microsoft, ligada a sus sistemas Windows. Se trata de algo más que un protocolo de invocación remota de procedimientos (RPC) ya que su última encarnación, COM+, incluye servicios avanzados para balanceado de carga, gestión de transacciones o llamadas asíncronas. Los parámetros son transmitidos a través de la red mediante un formato binario propio llamado NDR (Network Data Representation).
 RMI (Remote Method Invocation), es la metodología de llamada remota a procedimientos de Java. No se centra en la definición de interfaces para compatibilidad binaria de componentes, ni en otros conceptos avanzados, y se basa en la existencia de un cliente y un servidor que actúan de intermediarios entre los componentes que se quieren comunicar. Es una tecnología bastante simple que es fácil de utilizar para aplicaciones básicas.
 CORBA (Common Object Request Broker Architecture). Se trata de una serie de convenciones que describen cómo deben comunicarse los distintos componentes, cómo deben transferir los datos de las llamadas y sus resultados o cómo se describen las interfaces de programación de los componentes para que los demás sepan cómo utilizarlos. Fue desarrollado por el OMG (Object Management Group) en la segunda mitad de la década de los '90 y es el modelo que más éxito ha tenido en el mundo UNIX. Su método de empaquetado y transmisión de datos a través de la red se llama CDR (Common Data representation).

SOAP
Gracias a los Servicios Web se derriban las antiguas divisiones resultantes de los modelos de componentes descritos, y la integración de las aplicaciones, la ubicuidad de sus componentes y su reutilización a través de la red se convierten en una realidad.
La tecnología que está detrás de todo ello se llama SOAP (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 de Servicio Web:



En este enlace se puede descargar el ejemplo de Servicio Web:  Servicio web

Servicios Web XML

¿Qué  es  un  servicio  web?
Los web services son similares a componentes, pero accesibles a través de internet por medio de protocolos estándar, y sin pasar por las dificultades que puede poner un FIREWALL, ya que todo viaja a través del protocolo HTTP, en formato 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 de estándar de la industria,  SOAP, XML y WSDL y esto permite a los clientes de otras plataformas interoperar con servicios Web.



¿Qué  es  un  servicio  web XML?
El significado de esta sigla es eXtensible Markup  Language, que 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 los estándares de Internet , como XML y HTTP.
Un servicio web XML puede usarse internamente por una sola aplicación o exponerse externamente a través de Internet para su uso por diversas aplicaciones. Puesto que es accesible a través de una interfaz estándar, un servicio web XML permite a sistemas heterogéneos funcionar juntos como una sencilla web de cálculo.

En lugar de seguir las funciones genéricas de portabilidad de código, los servicios web XML proporcionan una solución viable para habilitar los datos y la interoperabilidad del sistema. Los servicios web XML usan la mensajería basada en XML como un medio fundamental para la comunicación de datos y ayudar a salvar las diferencias que existen entre los sistemas que usan modelos de componentes, sistemas operativos y lenguajes de programación incongruentes. Los programadores pueden crear aplicaciones que desarrollen juntas servicios web XML de varios orígenes de la misma manera que usan tradicionalmente los componentes para crear una aplicación distribuida.

Una de las características básicas de un servicio web XML es el alto grado de abstracción que existe entre la implementación y el uso de un servicio.



Características  del  lenguaje  XML
      Es fácil representarla.
      Permite comunicar e integrar aplicaciones heterogéneas, al establecen un lenguaje común para expresar los datos.
      Es 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 problemas para saltar firewalls, ya que todo está montado sobre el puerto 80.
      Otra de las características básicas de un servicio Web XML es el alto grado de abstracción que existe entre la implementación y el uso de un servicio.

Visión general de servicios web XML
Los web services usan XML para representar los datos que viajan hacia/desde el servicio y los mensajes necesarios para coordinar la operación, mediante un protocolo llamado SOAP.
El objetivo final es la creación de un directorio online de web services, que pueda ser localizado de un modo sencillo y que tenga una alta fiabilidad.

Tecnologías subyacentes - SOAP
El XML tiene la particularidad de que es posible  definir “SUBLENGUAJES” sobre la base de este. Es decir, estableciendo que TAGS vamos a usar y como, podemos definir un nuevo lenguaje, basado en XML.
SOAP, o Simple Object Access Protocolo, no es mas que 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. Para nosotros, esto será transparente.

Tecnologías subyacentes - WSDL.
WSDL es la sigla de Web Service Description Language, 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.

Tecnologías subyacentes - UDDI.
UDDI es la sigla de Universal Description Discovery and Integration, y es un directorio donde se publican web services de distintas empresas. Son como las páginas amarillas de web services en internet.



Ejemplo de un Servicio Web



En este enlace podras descargar el ejemplo de Servicio Web XML: ejemploServWeb

 

COM/DCOM (Component Object Model / Distributed COM)

El 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.

Servidores COM
Los objetos “servidores” son aquellas instancias de las clases que contienen los métodos que resuelven el problema del que se ocupa el sistema.

Cliente COM
Los objetos “clientes” son aquellas instancias de las clases que contengan la interfaz del sistema con el usuario, que implementan los textos de ayuda del sistema, los cuadros de dialogo para introducir información al sistema o bien para mostrar resultados.

COM 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.
COM provee acceso transparente a los servidores locales y remotos a través de objetos proxy y stub.


¿Qué es un componente COM?

}  Es un contenedor binario
}  Contiene el código de una o más clases de objetos
}  Cada clase puede tener una o más interfaces
}  COM expone o publica estas interfaces para que puedan ser usadas por otras aplicaciones.
}  Una aplicación puede usar componentes COM. independientemente del lenguaje en que fueron escritos.

DCOM

DCOM es la extensión del Component Object Model a los ambientes distribuidos, que define los mecanismos de conexión y el protocolo de red necesario para hacer llamadas a procedimientos remotos orientadas a objetos, a nivel de aplicación, que lo vuelven útil para sistemas distribuidos de todo tipo basados en componentes.

Los servidores COM/DCOM se crean como ATL Object, que producen archivos.DLL o .EXE, según el tipo de servidor que se requiera, mientras que 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.



Características principales:
Los Componentes y su reutilización
Cualquier componente que sea desarrollado como una parte de una aplicación distribuida es un candidato para ser reutilizado. Organizando los procesos de desarrollo alrededor del paradigma de los componentes permite continuar aumentando el nivel de funcionalidad en las nuevas aplicaciones y reducir el tiempo de desarrollo.

Independencia de la localización
DCOM olvida completamente la localización de los componentes, ya esté en el mismo proceso que el cliente o en una máquina en cualquier lugar del mundo. En cualquier caso, la forma en la que el cliente se conecta a un componente y llama a los métodos de éste es identica. No es solo que DCOM no necesite cambios en el código fuente, sino que además no necesita que el programa sea recompilado. Una simple reconfiguración cambia la forma en la que los componentes se conectan entre sí.


Independencia del lenguaje de programación
Con la independencia de lenguaje de DCOM, los desarrolladores de aplicaciones pueden elegir las herramientas y lenguajes con los que estén más familiarizados.

Independencia del protocolo
Muchas aplicaciones distribuidas tienen que ser integradas en la infraestructura de una red existente. Necesitar un protocolo específico de red, obligará a mejorar todos los cliente, lo que es inaceptable en muchas situaciones. Los desarrolladores de aplicaciones tienen que tener cuidado de mantener la aplicación lo más independiente posible de la infraestructura de la red.
DCOM proporciona esta transparencia: DCOM puede utilizar cualquier protocolo de transporte, como TCP/IP, UDP, IPX/SPX y NetBIOS. DCOM proporciona un marco de seguridad a todos estos protocolos.





Ejemplo de COM en embarcadero.



Aquí puedes descargar el programa embarcadero: Descargar Embarcadero
Aquí el código para realizar el ejemplo del vídeo: código

Remote Method Invocation (RMI)

miércoles, 19 de noviembre de 2014
Definición:
}  Es un mecanismo ofrecido por Java para invocar un método de manera remota.
}  Forma parte del entorno estándar de ejecución de Java y proporciona un mecanismo simple para la comunicación de servidores en aplicaciones distribuidas basadas exclusivamente en Java.
Características
}  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.
Invocación
1)    Encapsulado  de los parámetros.
2)    Invocación del método (del cliente con el servidor). El invocador se queda esperando una respuesta.
3)    Al terminar la ejecución, el servidor serializa el valor de retorno y lo envía al cliente.
4)  El código cliente recibe la respuesta y continúa como si la invocación hubiera sido local.
Arquitectura:
Puede verse como un modelo de cuatro capas.
} Primera Capa: es la de aplicación y 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.
}Tercera Capa: es la de referencia remota, y es responsable del manejo de la parte semántica de las invocaciones remotas. Es responsable de la replicación de objetos.
}Cuarta Capa: es la de transporte; es la responsable de realizar las 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.
API de java RMI

}  Es una interfaz de programación de aplicaciones provistas por los creadores del lenguaje java, y que da a los programadores los medios para desarrollar aplicaciones Java.
}  LA API de Java provee un conjunto de clases utilitarias para efectuar toda clase de tareas dentro de un programa.
Sistema de Nombrado Registry
Definición
}  Es un servidor simple que permite que una aplicación vea los objetos lo cuales están siendo importados por un RMI.
}  Una vez que se tiene un objeto que está siendo exportado por un servidor que utiliza métodos de RMI, la comunicación es entonces como una simple llamada a métodos de un objeto que puede existir en una máquina diferente.
Características:
}  Este  setup requiere algunos parámetros de localización de los objetos remotos.
}  Es fácil llamar a objetos remotos si  se tiene su ubicación.
}  Una vez que el objeto ha sido localizado, usarlo de manera remota es relativamente fácil.
}  Para poder inicializar  objetos remotos, hay que utilizar los servicios de registry.

Componentes de aplicaciones distribuidas
}  Clientes: Conducen el flujo de la aplicación. Localizan e invocan métodos ofertados como remotos por los servidores.
} Servidores: Conjunto de objetos de ofrecen interfaces remotas públicas cuyos métodos pueden ser invocados por clientes de cualquier procesador de la plataforma.
}  Registro: Servicio estático que se establece en cada nudo, en el que se registran los servidores con un nombre, y donde los clientes los localizan.


Paso de Parámetros a través de la Red
}  Hay 3 mecanismos básicos
1)    Tipos primitivos: se pasan por valor (copia). Todos son serializables.
2)    Objetos Remotos: Se pasan por referencia (talones, usados para invocar métodos remotos).
3)    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.



Ejemplo de RMI

En este enlace encontraras los archivos para el ejemplo de RMI      EjemploRMI