Componentes distribuidos

Componentes distribuidos gy li7tric Ac•Ka5pR 03, 2010 pagcs 4. 1 En las primeras épocas de la computación las computadoras operaban independientemente una de otra sin tener comunicación entre ellas. Las aplicaciones de software eran comúnmente desarrolladas para un propósito especifico. Compartir los datos entre sistemas era mínimo y se hacías de una manera muy fácil, se transportaban los medios de almacenamiento (tarjetas, cintas, discos, etc. ) de un lado a otro.

El próximo paso fue conectar las computadoras a través de una red usando protocolos propietarios, luego los protocolos fueron standarizados. Luego llego la era de los sistemas abiertos y la integración de sistemas por los cuales un cliente podía elegir varios componentes de hardware de diferentes vendedores e integrarlos para crear una confi uracian necesaria con costos razonables. PACE 1 S»ipeto n ut*ge Así siguió el paso del a de software se fuero uced• programación estruc orientada a objetos, s de desarrollo a, desde la a programación ir costos y aumentar la capacidad de reuso.

Si bien la programación orientada a objetos fomentó el reuso y permitió reducir costos, no se ha ogrado aún el objetivo último: comprar componentes de varios proveedores e integrarlos para formar aplicaciones que a su vez se integren para formar sistemas completos. Para lograr la integración total de componentes realizados por terceras partes es necesario llegar a un acuerdo común en el que se establezcan los mecanismos necesarios para que esa integración se haga efectiva.

Será necesario especificar de manera independiente al lenguaje de programación en el que se desarrolló el componente cuáles son sus puntos de acceso ( funciones) Swlpe to vlew nexr page unciones), luego será necesario establecer los mecanismos de comunicación entre componentes, que podrían estar ejecutándose en una máquina remota. En este sentido, y buscando satisfacer esa necesidad de mecanismos estándar e interfaces abiertas, son tres los esfuerzos que más han sobresalido. por un lado, Microsoft ha introducido en el mercado sus tecnologías COM, DCOM y COME Otro participante es Sun Microsystems, que ha presentado Java Beans.

El tercero es el Object Management Group, un consorcio integrado por varias industrias importantes, que ha desarrollado CORBA (Common Request Broker Architecture). COM / DCOM Microsoft Distributed COM (DCOM) extiende COM (Component Object Model) para soportar comunicación entre objetos en ordenadores distintos, en una LAN, WAN, o incluso en Internet. Con DCOM una aplicación puede ser distribuida en lugares que dan más sentido al cliente y a la aplicación. Como DCOM es una evolución lógica de COM, se pueden utilizar los componentes creados en aplicaciones basadas en COM, y trasladarlas a entornos distribuidos.

DCOM maneja detalles muy bajos de protocolos de red, por lo que uno se puede centrar en la realidad de los negocios: proporcionar soluciones a clientes. Actualmente DCOM viene con los sistemas operativos Windows 2000, NT, 98 y también está disponible una versión para Windowsg5 en la página de Microsoft. También hay una implementación de DCOM para Apple Macintosh y se está trabajando en implementaciones para plataformas UNIX como Solaris. La arquitectura DCOM DCOM es una extensón de COM, y éste define como los componentes y sus clientes interactúan entre sí.

Esta interacción es definida de tal manera que el cliente y el componente puede conectar sin la necesidad de un sistema intermedio. El cliente lla 2 3 omponente puede conectar sin la necesidad de un sistema intermedio. El cliente llama a los métodos del componente sin tener que preocuparse de niveles más complejos En los actuales sistemas operativos, los procesos estén separados unos de otros. Un cliente que necesita comunicarse con un componente en otro proceso no puede llamarlo directamente, y tendrá que utilizar alguna forma de comunicación entre procesos que proporcione el sistema operativo.

COM proporciona este tipo de comunicación de una forma transparente: intercepta las llamadas del cliente y las reenvía al componente que está en otro roceso. Cuando el cliente y el componente residen en distintas máquinas, DCOM simplemente reemplaza la comunicación entre procesos locales por un protocolo de red. Ni el cliente ni el componente se enteran de que la unión que los conecta es ahora un poco más grande. Las librería de COM proporcionan servicios orientados a objetos a los clientes y componentes, y utilizan RPC y un proveedor de seguridad para generar paquetes de red estándar que entienda el protocolo estándar de DCOM.

Los Componentes y su reutilización Muchas aplicaciones distribuidas no están desarrolladas Al existir infraestructuras de hardware, software, componentes, al igual que herramientas, se necesita poder integrarlas y nivelarlas para reducir el desarrollo y el tiempo de trabajo y coste. DCOM toma ventaja de forma directa y transparente de los componentes COM y herramientas ya existentes. Un gran mercado de todos los componentes disponibles haría posible reducir el tiempo de desarrollo integrando soluciones estandarizadas en las aplicaciones de usuario.

Muchos desarrolladores están familiarizados con COM y pueden aplicar fácilmente sus conocimientos a las aplicaciones distribuidas basadas en 33 pueden aplicar fácilmente sus conocimientos a las aplicaciones distribuidas basadas en DCOM. 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.

Diseñando para COM y DCOM se asegura que los componentes creados serán útiles ahora y en el futuro. Independencia de la localización Cuando se comienza a implementar una aplicación distribuida en na red reak, aparecen distintos conflictos en el dlseño: • Los componentes que interactúan más a menudo deberían estar localizados más cerca. • Algunos componentes solo pueden ser ejecutados en máquinas especificas o lugares especificas. • Los componentes más pequeños aumentan la flexibilidad, pero aumentan el tráfico de red. • Los componentes grandes reducen el tráfico de red, pero también reducen la flexibilidad.

Con DCOM, estos temas crítlcos de diseño pueden ser tratados se forma bastante sencilla, ya que estos detalles no se especifican en el código fuente. 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 idéntica. 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 reconflguración cambia la forma en la que los componentes se conectan entre sí.

La independencia de localización en DCOM simplifica enormemente las tarea de los componentes de aplicaciones distribuida 4 33 ocalización en DCOM simplifica enormemente las tarea de los componentes de aplicaciones distribuidas para alcanzar un nivel de funcionamiento óptimo. Supongamos, por ejemplo, que cierto componente debe ser localizado en una máquina especfica en un lugar determinado. Si la aplicación tiene numerosos componentes pequeños, se puede reducir la carga de la red situándolos en la misma LAN, en la misma máquina, o incluso en el mismo proceso.

Si la aplicación está compuesta por un pequeño número de grandes componentes, la carga de red es menor y no es un problema, por tanto se pueden poner en las máquinas ás rápidas disponibles independientemente de donde estén situadas. Con la independencia de localización de DCOM, la aplicación puede combinar componentes relacionados en máquinas «cercanas» entre si, en una sola máquina o incluso en el mismo proceso. Incluso si un gran número de pequeños componentes implementan la funcionalidad de un gran módulo lógico, podrán interactuar eficientemente entre ellos.

Independencia del lenguaje de programación Una cuestión importante durante el diseño e implementación de una aplicación distribuida es la elección del lenguaje o erramienta de programación. La elección es generalmente un termino medio entre el coste de desarrollo, la experiencia disponible y la funcionalidad. Como una extensión de COM, DCOM es completamente independiente del lenguaje. Virtualmente cualquier lenguaje puede ser utilizado para crear componentes COM, y estos componentes puede ser utilizado por muchos más lenguajes y herramientas.

Java, Microsoft Visual C++, Microsoft Visual Basic, Delphi, PowerBuilder, y Micro Focus COBOL interactúan perfectamente con DCOM. Con la independencia de lenguaje de DCOM, los desarrolladores e aplicaciones puede elegir las herram s 3 independencia de lenguaje de DCOM, los desarrolladores de aplicaciones puede elegir las herramientas y lenguajes con los que estén más familiarizados. La independencia del lenguaje permite crear componentes en lenguajes de nivel superior como Microsoft Visual Basic, y después reimplementarlos en distintos lenguajes como C++ o Java, que permiten tomar ventaja de características avanzadas como multihilo.

Independencia del protocolo Muchas aplicaciones distribuidas tienen que ser integradas en la infraestructura de una red existente. Necesitar un protocolo specifico de red, obligará a mejorar todos los cliente, lo que es inaceptable en muchas situaciones. Los desarrolladores de aplicaclones tienen que tener cuidado de mantener la aplicacló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, IPWSPX y NetBIOS.

DCOM proporciona un marco de seguridad a todos estos protocolos. Los desarrolladores pueden simplemente utilizar las características proporcionadas por DCOM y asegurar que sus aplicaciones son completamente independiente del protocolo. CORBA CORBA es un Middeware o marco de trabajo estándar y abierto de objetos distribuidos que permite a los componentes en la red interoperar en un ambiente común sin importar el lenguaje de desarrollo, sistema operacional, tipo de red, etc.

En esta arquitectura, los métodos de un objeto remoto pueden ser invocados «transparentemente» en un ambiente distribuido y heterogéneo a través de un ORB (Object Request Broker). Además del objetivo básico de ejecutar simplemente métodos en objetos remotos, CORBA adiciona un conjunto de servicios que amplían las potencialidades de éstos objetos y conforman una nfraestru 6 3 un conjunto de servicios que amplían las potencialidades de éstos objetos y conforman una infraestructura sólida para el desarrollo de aplicaciones críticas de negocio.

CORBA es la respuesta del «Grupo de Gestión de Objetos» (Object Management Group – OMG) a la necesidad de interoperabilidad ante la gran proliferación de productos hardware y software, es decir permitir a una aplicación comunicarse con otra sin importar el tipo de red, protocolo, sistema operacional o lenguaje de CORBA automatiza muchas tareas comunes y «pesadas» de programación de redes tales como registro, localización activación de objetos; manejo de errores y excepciones; codificación y decodificaclón de parámetros, y protocolo de transmisión.

En un ambiente CORBA, cada Implementación de Objeto, define bien su Interface a través una especificación normalizada conocida como IDL (Interface Definition Language) a través de la cual en forma Estática (en el momento de compilación) o en forma Dinámica (en el momento de ejecución) un Cliente que requiera el servicio de una Implementación de Objeto, puede ser ejecutada.

Las invocaciones a métodos remotos son enviados por los clientes llamando objetos locales llamados Stubs» (generados por un compilador de IDL – Estático), el cual intercepta dichas invocaciones y continua el proceso de llevar y retornar automáticamente dicha invocación. La Implementación del objeto, no tiene que conocer el mecanismo por el cual un Cliente le ha invocado un sen,’icio.

Cuando el Cliente y una Implementación de Objeto están distribuidos por una red, ellos usan el protocolo GIOP/IIOP suministrado por la arquitectura para lograr la comunicación. La forma de cómo una Implementación de Objeto(desarrollada por un programador de aplicaciones) se conecta a un ORB, Implementación de Objeto(desarrollada por un programador de aplicaciones) se conecta a un ORB, es a través de un Adaptador de Objetos . Este adaptador recibe las peticiones por la red e invoca los serwcios a la implementación correspondiente.

Actualmente CORBA ya se han resuelto los problemas fundamentales de interoperabilidad y comunicacion entre objetos y se han definido y especificado un conjunto de servicios comunes requeridos para la construcción de las aplicaciones , pero donde hay gran actividad es en la especificación de objetos comunes por dominio de aplicación o conocidas en CORBA omo Interfaces de Dominio. Allí se trabajan en áreas como Telecomunicaciones, Medicina, Finanzas, Manufactura, etc.

CORBA esta fundamentado en dos modelos: un modelo de Objetos, el cual agrega todas las características de Orientación por Objetos como Tipos de Datos, Abstracción, Polimorfismo y Herencia y un modelo de referencia o arquitectura conocida como OMA (Object Management Architecture). Servicios Middleware Para resolver los problemas inherentes a sistemas heterogéneos y distribuidos, que dificultan la implementación de verdaderas aplicaciones empresariales, los proveedores de software están freciendo interfaces de programacón y protocolos estándares.

Estos servicios se denominan usualmente servicios middleware, porque se encuentran en una capa intermedia, por encima del sistema operativo y del software de red y por debajo de las aplicaciones de los usuarios finales. En esta sección se describen las características principales de los servicios middleware [2]. Un servicio middlewarees un servicio de propósito general que se ubica entre plataformas y aplicaciones.

Por plataformas se entiende el conjunto de servicios de bajo nivel ofrecidos por la arquitectura de un pr 33 lataformas se entiende el conjunto de servicios de bajo nivel ofrecidos por la arquitectura de un procesador y el conjunto de API’ s de un sistema operativo. Como ejemplos de plataformas se pueden cltar. Intel x85 y Win-32, SunSPARCStation y Solaris, IBM RS/6000 y AIX, entre otros. Un servicio middleware está definido por las API • s y el conjunto de protocolos que ofrece.

Pueden existir varias implementaciones que satisfagan las especificaciones de protocolos e interfaces. Los componentes middleware se distinguen de aplicaciones finales y de servicios de plataformas específicas por cuatro importantes ropiedades: • Son independientes de las aplicaciones y de las industrias para las que éstas se desarrollan. • Se pueden ejecutar en múltiples plataformas. • Se encuentran distribuidos. • Soportan interfaces y protocolos estándar.

Debido al importante rol que juegan una interfaz estándar en la portabilidad de aplicaciones y un protocolo estándar en la interoperabilidad entre aplicaciones, varios esfuerzos se han realizado para establecer un estándar que pueda ser reconocido por los mayores participantes en la industria del software. Algunos de ellos han alcanzado instituciones como ANSI e ‘SO; tros han sido propuestos por consorcios de industrias como ser la Open Software Foundation y el Object Management Group y otros han sido impulsados por industrias con una gran cuota de mercado.

Este último es el caso de Microsoft con su Windows Open Services Architecture. CORBA es el estándar propuesto por el OMG. EL OMG fue fundado en 1 989 y es el más grande consorcio de industrias de la actualidad, con más de 700 compañías que son miembros del grupo. Opera como una organización no comercial Sln fines de lucro, cuyo objetivo es lograr establecer todos los estándares necesa omercial sin fines de lucro, cuyo objetivo es lograr establecer todos los estándares necesarios para lograr interoperabilidad en todos los niveles de un mercado de objetos.

Originalmente los esfuerzos de la OMC se centraron en resolver un problema fundamental: cómo lograr que sistemas distribuidos orientados a objetos implementados en diferentes lenguajes y ejecutándose en diferentes plataformas interactúen entre ellos. Más allá de los problemas planteados por la computación distribuida, problemas más simples como la falta de comunicación entre dos sistemas generados por compiladores e C++ distintos que corren en la misma plataforma frenaron los esfuerzos de integracion no bien comenzados.

Para opacar aún más el escenario, distintos lenguajes de programaclón ofrecen modelos de objetos distintos. Los primeros años de la OMG estuvieron dedicados a resolver los principales problemas de cableado. Como resultado se obtuvo la primer versión del Common Object Request groker, publicado en 1991. Hoy en día, el último estándar aprobado de CORBA está por la versión 2. 3, y la versión 3. 0 está a punto de ser lanzada. Desde sus principios, el objetivo de CORBA fue permitir la nterconexión abierta de distintos lenguajes, implementaciones y plataformas.

De esta forma, CORBA cumple con las cuatro propiedades enumeradas como deseables de los servicios middleware. para lograr estos objetivos, la OMG decidió no establecer estándares binarios (como es el caso de COM); todo está estandarizado para permitir implementaciones diferentes y permitir que aquellos proveedores que desarrollan CORBA pueden ofrecer valor agregado. La contrapartida es la imposibilidad de interactuar de manera eficiente a nivel binario. Todo producto que sea compatible con CORBA debe utilizar los costosos protocol