Upload
harold-sanchez
View
428
Download
3
Embed Size (px)
Citation preview
2013
Modelos de computacion distribuida, rmi, com/dcom/active x/com+, servicios webGerardo Sanchez Gutierrez
|
Estamos en la etapa inicial de la computación distribuida. La idea básica de nuestro enfoque
es el desarrollo de la infraestructura de aplicaciones de tal manera que el usuario no
necesite saber nada sobre computadoras, redes, sistemas operativos, lenguajes de
programación, componentes, módulos, etcétera. Para resolver este problema ofrecemos una
organización basada en interfaces de los componentes para la computación distribuida que
hemos usado para el desarrollo de sistemas de configuración de objetos complejos. Para
lograr esta meta proponemos una arquitectura sofisticada de ambiente de aplicaciones
distribuidas donde agentes de toma de decisiones interoperan y cooperan sobre objetos
distribuidos y configurados a través de middleware especial. La arquitectura de este
middleware se ha desarrollado como ambiente distribuido apoyado por agentes inteligentes
de proyectos.
La integridad de propiedades y consistencia parcial de proyectos distribuidos complejos
están soportados por métodos especiales basados en la integración de bases de datos y
bases de conocimiento, así como en reglas de gramática de grafos.
Sistema distribuido
_ “Sistema en el cual componentes de hardware y software, localizadas en computadores en
red, se comunican y coordinan sus acciones sólo por paso de mensajes”
(Coulouris, 2002)
_ “Conjunto de computadores independientes que se muestran al usuario como un sistema
único coherente”
(Tanenbaum, 2001)
Computación distribuida
Sistema distribuido
Esquemas de computación:
Monolítica
Paralela
Paralela
Distribuida
Cooperativa
Computación distribuida:
Servicio de red
Aplicación de red
Computación distribuida
Reducción del coste del computador y del acceso a la red.
Ventajas:
Compartición de recursos.
Escalabilidad.
Tolerancia a fallos.
Inconvenientes:
Múltiples puntos de fallo.
Seguridad.
Computación distribuida
Conectividad (usuarios y recursos)
Desempeño (tiempo de respuesta, productividad)
Robustez (disponibilidad y consistencia)
Seguridad (autenticación, privacidad y control de acceso
Transparencia (ubicación, acceso, fallas, partición, replicación, migración, etc.)
Escalabilidad (tamaño, distancia y gestión)
Apertura (Openess) (interfaces, interoperabilidad y portabilidad)
Capas de servicios hardware y software en un Sistema Distribuido
(Vinoski, 2002)
Qué es y dónde está el Middleware?
Cuáles tecnologías han soportado el Middleware?
• CORBA/DCOM
• RMI de Java
• XML-RPC (Progenitor de los servicios Web)
• Objetos y Agentes de Software Móviles
• Remote Procedure Call
•Pipes
•Sockets
PIPES: CANALES (I)
* Forma de comunicación de procesos.
* Un proceso envía datos por un extremo del tubo y otro proceso lee los datos en el otro
extremo.
ANONYMOUS PIPES (I)
* Pipes sin nombre
* En una sola dirección
* No trabajan sobre la red, el cliente y el servidor deben habitar la misma máquina.
* Procesos relacionados: Padre – Hijo
LOS NUMEROS DE PUERTO
REMOTE METHOD INVOCATION
• RMI permite que un objeto que se ejecuta bajo el control de una JVM pueda invocar
métodos de un objeto que se encuentre en ejecución bajo el control de una JVM instalada
en un host diferente.
• La máquina que contiene el objeto cuyos métodos se pueden invocar se llama servidor.
• La máquina que invoca métodos sobre el objeto remoto se llama cliente.
SEGURIDAD
• RMI no implementa ninguna política de seguridad en la capa de transporte.
• Las comunicaciones se realizan en "texto plano", por lo que, conceptos de seguridad no
se tienen en cuenta.
• El servidor RMI no autentifica las peticiones de acceso sobre sus objetos, de forma que un
posible cliente ilícito podría tener acceso a los objetos.
MODELOS FUNDAMENTALES PARA RAZONAR
SOBRE SISTEMAS DISTRIBUIDOS
1. Modelo de Interacción: Aborda las prestaciones y dificultad de poner límites temporales
en un sistema distribuido.
2. Modelo de fallos: Intenta dar una especificación precisa de los posibles fallos en procesos
y canales de comunicación.
3. Modelo de seguridad: Discute sobre las posibles amenazas para los procesos y canales
de comunicación.
VARIANTES DEL MODELO DE INTERACCIÓN
1. Sistemas distribuidos síncronos:
1. Tiempo de ejecución de cada etapa de un proceso tiene ciertos límites inferior y superior.
2. Cada mensaje transmitido sobre un canal se recibe en un tiempo limitado conocido.
3. Cada proceso tiene un reloj local cuya tasa de deriva sobre el tiempo real tiene un límite
conocido.
2. Sistemas distribuidos asíncronos. No hay limitaciones sobre:
1. La velocidad de procesamiento.
2. Los retardos de transmisión de mensajes.
3. Las tasas de deriva de reloj son arbitrarias.
COM / DCOM / ActiveX / COM+
Introducción
DCOM (Distributed Component Object Model) es el resultado de la evolución y
convergencia de dos tecnologías: la comunicación inter-procesos en los ambientes Windows
de Microsoft y los esfuerzos del la OSF (Open Software Foundation) para desarrollar un
ambiente de computación distribuido (DCE, Distributed Computing Environment), en
particular un protocolo para la invocación de procesos remotos (RPC, Remote Procedure
Calls).
La Figura 1 muestra la evolución de DCOM
Los primeros computadores personales tenían capacidades limitadas y empleaban sistemas
operativos simples que solo podían ejecutar un proceso (programa) a la vez. Con el
desarrollo de procesadores más poderosos y de sistemas operativos más sofisticados se
hizo posible la ejecución de varios procesos de forma (aparentemente) simultánea
incorporando técnicas de tiempo compartido. Debido a la modalidad de uso de los
computadores personales (interacción directa hombre-máquina) pronto se sintió la
necesidad de contar con mecanismos de intercambio de información entre procesos.
Los primeros intentos de ofrecer comunicación entre procesos en los ambientes Windows
fueron el DDE (Dynamic Data Exchange) y el Clipboard. El DDE era un mecanismo de
intercambio de mensajes que resultó complejo para los programadores y muy pocas
aplicaciones lo usaron exitosamente. El Clipboard, por otra parte, permitió a los usuarios de
una forma simple la creación de documentos compuestos, es decir, con diferentes tipos de
contenidos generados por diversos procesos.
La principal limitación del Clipboard es que los documentos creados son estáticos: si
cualquiera de los elementos de un documento compuesto cambia, se deberá modificar el
documento compuesto manualmente. Para atacar este problema, Microsoft introdujo en
1992 la tecnología OLE (Object Linking and Embedding). OLE introduce los conceptos de
objeto y componente, acordes con los paradigmas modernos de programación.
COM surge para satisfacer la necesidad de Microsoft de modularizar las complejas
aplicaciones modernas, incluyendo sistemas operativos tales como Windows
9x/ME/NT/2000.
COM permite la creación de componentes reutilizables que pueden ser desarrollados de
manera independiente los unos de los otros. Con esto se logra dividir sistemas complejos en
subsistemas que pueden ser asignados a diferentes grupos de programadores. Un
componente COM puede contener uno o más objetos.
Por otra parte la OSF se estableció en los años 1980s como un consorcio de empresas del
ramo de tecnologías de información con la misión de definir estándares independientes en el
área. DCE es de los estándares propuestos por la OSF cuyo objetivo es la de proveer un
ambiente para el desarrollo de sistemas distribuidos. Uno de los componentes de DCE es
una especificación para la comunicación entre computadores. Esta especificación, conocida
como RPC, permite que aplicaciones en computadores diferentes se comuniquen.
La integración de COM y RPC dio origen a DCOM. Este último permite crear aplicaciones
cuyos componentes no necesariamente residen en un computador sino que pueden estar
distribuidos en varios computadores conectados en red.
Los componentes ActiveX se basan en COM/DCOM y sustituyen/incluyen a OLE. La
funcionalidad de ActiveX se implementa mediante un conjunto específico de interfaces
definidas sobre diversos objetos y secuencias de operación específicas, tanto en clientes
como en servidores.
¿Qué es COM?
Esta pregunta puede responderse de cualquiera de las siguientes maneras:
COM es una especificación.
COM es una porción de código que forma parte de varios sistemas operativos.
COM es una filosofía para el desarrollo de aplicaciones.
COM es un estándar binario para la construcción de componentes.
La especificación de COM es un documento que puede obtenerse de
http://www.microsoft.com/com/. Este documento describe todos los aspectos que un
programador debe conocer para desarrollar aplicaciones COM.
Por otra parte, el sistema operativo debe proveer un número de facilidades para que las
aplicaciones COM puedan ejecutarse. En la actualidad solo algunas versiones de Windows
proveen este soporte en modo nativo.
Otra forma de describir COM es como una filosofía para el diseño y desarrollo de
aplicaciones. En la medida en que las aplicaciones se hacen más grandes y complejas, el
desarrollo de programas monolíticos se vuelve impráctica. El desarrollo de aplicaciones se
facilita si éstas se modularizan dividiéndolas en componentes que pueden ser desarrollados
de manera independiente y que además pueden reutilizarse en el futuro.
Por último, COM es un estándar binario porque los componentes pueden ser utilizados sin
necesidad de tener acceso al código fuente: solo se requiere acceso al componente en
forma binaria. Esto permite que componentes elaborados por diversos proveedores puedan
conectarse e interactuar en forma significativa.
ActiveX
ActiveX ha sido definido de varias formas:
Un término de mercadeo de Microsoft.
Un término de Microsoft para identificar sus tecnologías que pueden aplicarse al
Internet.
Un componente COM que implementa IUnknown y tiene capacidad para auto-registrarse.
El nuevo nombre de los controles OLE.
El hecho de que las últimas dos definiciones son contradictorias (los controles OLE son
objetos COM que se comunican con su entorno mediante un conjunto de interfaces bien
definidas) hace pensar que probablemente la primera definición sea la más correcta, sobre
todo si se toma en cuenta que la gente de mercadeo ha acogido ampliamente la idea
(inicialmente propuesta por Humpty Dumpty) de que las palabras significan cualquier cosa
que se desee que signifiquen.
Tomando la definición más amplia de AvtiveX, se puede representar la relación entre
COM, OLE y ActiveX como se muestra en la figura 3
La funcionalidad de ActiveX incluye tres áreas:
Automatización,
Documentos ActiveX, y
Objetos (controles) ActiveX.
La automatización ActiveX permite una capacidad de programación a nivel de Macro que
pueda abarcar varias aplicaciones.
Los documentos ActiveX proveen la habilidad de alojar información de otras aplicaciones en
un documento central, promoviendo una interface de usuario centrada en documentos.
Por último los controles ActiveX (antes controles OLE) definen un conjunto de interfaces
que deben ser implementadas para que un objeto pueda calificar como un ActiveX, así como
las interfaces necesarias para crear un contenedor de controles ActiveX. Los controles
ActiveX se implementan como componentes COM InProcess.
COM+
COM+ se distribuye a partir de 1.999 con la introducción de Windows 2000. COM+ integra
el modelo de objetos de COM con algunos servicios que son necesarios para la creación de
aplicaciones empresariales, de una forma tal que los programadores puedan concentrarse
en la lógica del negocio y no tengan que gastar tiempo y esfuerzos en desarrollar
infraestructura ni otros servicios comunes. Com+ trata de lograr esto de forma tal que sea
fácil de usar, implementar y mantener. En cierto modo COM+ es la convergencia de COM,
MTS (Microsoft Trasaction Server) y otros.
Para permitir que los componentes COM+ participen en servicios, se agregan dos
elementos adicionales a los componentes COM: un contexto y un conjunto de atributos. Esto
permite determinar las características de ejecución del objeto: si es transaccional, si se va
usar balance de carga, si se va a usar una cola de componentes, etc. Cuando se invoca un
objeto, COM+ intercepta la llamada para examinar el contexto y ejecuta cualquier acción
necesaria antes de invocar al objeto. Al terminar el objeto su trabajo, el interceptor examina
nuevamente el contexto para determinar si se requiere alguna otra acción antes de retornar
el control a la aplicación. La figura 5 ilustra la estructura de un componente COM+ y su
interacción con un cliente.
Ente los beneficios de COM+ el primero es la simplificación mediante reducción. Se
proveen nuevos servicios mediante un modelo basado en atributos en vez de un API
tradicional. COM+ también intenta reducir al mínimo la infraestructura de programación de
forma que los clientes no tengan que preocuparse de cosas tales como aspectos
transaccionales, entre otros.
En segundo lugar se está tratando de imponer un modelo simple y escalable. Los clientes
crean objetos, los usan y los liberan inmediatamente. También se intenta que los clientes no
tengan mucho que hacer, que los servidores se hagan cargo del trabajo.
Por último, COM+ es una arquitectura simple y extensible. Los interceptores examinan el
contexto y hacen lo que sea necesario. Para agregar nuevos servicios solo debe ingresarse
la información necesaria al contexto.
La funcionalidad de COM+ se puede describir en siete categorías básicas:
Desarrollo de servidores
Servicios transaccionales
Seguridad
Administración
Colas de componentes (procesamiento diferido)
Manejo de eventos
Balance de carga
(Microsoft, 2000)
Servicios Web
Aplicaciones auto-contenidas, auto-descritas que pueden ser publicadas, localizadas e
invocadas a través de la Web
Una vez desarrolladas, otras aplicaciones (y otros servicios
Web) pueden descubrirlas e invocar el servicio dado
Posible definición:
Aplicaciones auto-contenidas, auto-descritas que pueden ser publicadas, localizadas e
invocadas a través de la Web.
Una vez desarrolladas, otras aplicaciones (y otros servicios Web) pueden descubrirlas e
invocar el servicio dado.
Nota: No todos los servicios Web están publicados para ser descubiertos automáticamente
(Gayo, 2006)
¿Qué son los Servicios Web?
Existen múltiples definiciones sobre lo que son los Servicios Web, lo que muestra su
complejidad a la hora de dar una adecuada definición que englobe todo lo que son e
implican. Una posible sería hablar de ellos como un conjunto de aplicaciones o de
tecnologías con capacidad para interoperar en la Web. Estas aplicaciones o
tecnologías intercambian datos entre sí con el objetivo de ofrecer unos servicios. Los
proveedores ofrecen sus servicios como procedimientos remotos y los usuarios
solicitan un servicio llamando a estos procedimientos a través de la Web.
¿Para qué sirven?
Estos servicios proporcionan mecanismos de comunicación estándares entre
diferentes aplicaciones, que interactúan entre sí para presentar información dinámica
al usuario. Para proporcionar interoperabilidad y extensibilidad entre estas
aplicaciones, y que al mismo tiempo sea posible su combinación para realizar
operaciones complejas, es necesaria una arquitectura de referencia estándar.
¿Cómo funcionan?
El siguiente gráfico muestra cómo interactúa un conjunto de Servicios Web:
Figura 1 - Los servicios Web en Funcionamiento
Según el ejemplo del gráfico, un usuario (que juega el papel de cliente dentro de los
Servicios Web), a través de una aplicación, solicita información sobre un viaje que desea
realizar haciendo una petición a una agencia de viajes que ofrece sus servicios a través
de Internet. La agencia de viajes ofrecerá a su cliente (usuario) la información requerida.
Para proporcionar al cliente la información que necesita, esta agencia de viajes solicita a
su vez información a otros recursos (otros Servicios Web) en relación con el hotel y la
compañía aérea. La agencia de viajes obtendrá información de estos recursos, lo que la
convierte a su vez en cliente de esos otros Servicios Web que le van a proporcionar la
información solicitada sobre el hotel y la línea aérea. Por último, el usuario realizará el
pago del viaje a través de la agencia de viajes que servirá de intermediario entre el
usuario y el servicio Web que gestionará el pago.
En todo este proceso intervienen una serie de tecnologías que hacen posible esta
circulación de información. Por un lado, estaría SOAP (Protocolo Simple de Acceso a
Objetos). Se trata de un protocolo basado en XML, que permite la interacción entre varios
dispositivos y que tiene la capacidad de transmitir información compleja. Los datos
pueden ser transmitidos a través de HTTP , SMTP , etc. SOAP especifica el formato de
los mensajes. El mensaje SOAP está compuesto por un envelope (sobre), cuya
estructura está formada por los siguientes elementos: header (cabecera)
y body (cuerpo).
Figura 2 - Estructura de los mensajes
Para optimizar el rendimiento de las aplicaciones basadas en Servicios Web, se han
desarrollado tecnologías complementarias a SOAP, que agilizan el envío de los mensajes
(MTOM) y los recursos que se transmiten en esos mensajes (SOAP-RRSHB).
Por otro lado, WSDL (Lenguaje de Descripción de Servicios Web), permite que un servicio y
un cliente establezcan un acuerdo en lo que se refiere a los detalles de transporte de
mensajes y su contenido, a través de un documento procesable por dispositivos. WSDL
representa una especie de contrato entre el proveedor y el que solicita. WSDL especifica la
sintaxis y los mecanismos de intercambio de mensajes.
Durante la evolución de las necesidades de las aplicaciones basadas en Servicios Web de
las grandes organizaciones, se han desarrollado mecanismos que permiten enriquecer las
descripciones de las operaciones que realizan sus servicios mediante anotaciones
semánticas y con directivas que definen el comportamiento. Esto permitiría encontrar los
Servicios Web que mejor se adapten a los objetivos deseados. Además, ante la complejidad
de los procesos de las grandes aplicaciones empresariales, existe una tecnología que
permite una definición de estos procesos mediante la composición de varios Servicios Web
individuales, lo que se conoce como coreografía.
(http://www.w3c.es/, 2013)
ReferenciasArcos, G. (2009). Computacion Distribuida. Universidad Carlos III de Madrid.
Coulouris. (2002). Sistema Distribuido.
Gayo, J. E. (2006). Introduccion a los Sevicios Web.
http://www.w3c.es/. (8 de Septiembre de 2013). Guía Breve de Servicios Web. Obtenido de http://www.w3c.es/Divulgacion/GuiasBreves/ServiciosWeb
Microsoft. (2000). COM/DCOM/Active X/ COM+.
Tanenbaum. (2001). Sistema Distribuido.
Vinoski, S. (2002). Where is Middleware? IEEE Internet Computing.