27
Contexto de la Programación Cliente/Servidor 2013 MODELOS DE COMPUTACION DISTRIBUIDA, RMI, COM/DCOM/ACTIVE X/COM+, SERVICIOS WEB GERARDO SANCHEZ GUTIERREZ INSTITUTO TECNOLOGICO VALLE DEL GUADIANA | INGENIERIA INGORMATICA SEPTIMO SEMESTRE

Computación distribuida (Gerardo Sanchez Gutierrez).docx

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

REMOTE PROCEDURE CALL(I)

REMOTE PROCEDURE CALL(II)

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

SOCKETS

SOCKETS (II)

SOCKETS EN EL MODELO OSI

INTERACCIÓN SOCKETs CLIENTE/SERVIDOR

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.

ARQUITECTURA RMI

(Arcos, 2009)

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.