Está en la página 1de 24

TEMA 4: ARQUITECTURAS DE OBJETOS DISTRIBUIDOS

Aplicaciones Telemticas
David Melendi Palacio Abel Rionda Rodrguez

NDICE
Introduccin RPCs Sistemas de Objetos Distribuidos Lenguajes de Descripcin de Interfaces CORBA
OMA ORB Especificacin de Interfaces Protocolos Servicios Fundamentales

RMI RMI vs. CORBA

Introduccin Las organizaciones empresariales siguen una determinada lgica distribuida

Atencin al Cliente

Ingeniera

Cobros Ventas Facturacin

Gestin Almacn

Fabricacin

Aprovisiona miento

Introduccin Un Sistema Distribuido

Est constituido por componentes lgicos

Que se ejecutan en mltiples computadores Integrados entre ellos para cumplir una serie de objetivos Se sustenta en una red de comunicaciones

Introduccin Es necesario solucionar problemas de:


Comunicacin o intercambio de datos Heterogeneidad Integracin con otros sistemas (existentes, )

Debe garantizarse la Interoperabilidad


Colaboracin de aplicaciones heterogneas Independencia del entorno de ejecucin Portabilidad

Introduccin Para solucionar estos problemas, es necesario disponer de:

Una infraestructura de red comn Un protocolo de comunicacin comn o estndar Un mecanismo de interaccin entre componentes Un conjunto de funciones de conversin La implantacin entre las diferentes plataformas materiales y lgicas de una plataforma nica (middleware)

Importancia de Normas y estndares

NDICE
Introduccin RPCs Sistemas de Objetos Distribuidos Lenguajes de Descripcin de Interfaces CORBA
OMA ORB Especificacin de Interfaces Protocolos Servicios Fundamentales

RMI RMI vs. CORBA

RPC o Llamadas a Procedimientos Remotos


Puede aprovecharse uno de los paradigmas fundamentales de la programacin:
La descomposicin modular en funciones

En local: Se llama a una funcin en una librera En programacin distribuida: se llama a una funcin que se ejecuta en otro computador

RPC o Llamadas a Procedimientos Remotos Ventajas de RPC:


Se ocultan detalles de la comunicacin

No hay diferencias entre una llamada local y una remota Tiene una alta intuitividad

Con RPC, un aplicacin distribuida consiste en:


Una batera de funciones que se ejecutan en un servidor Programas que llaman a esas funciones

RPC o Llamadas a Procedimientos Remotos Llamadas a procedimiento convencionales:


Proceso A Bloque de Cdigo Paso de Argumentos Programa Funcin Retorno de Resultados Bloque de Cdigo

RPC o Llamadas a Procedimientos Remotos Llamadas a procedimientos remotos:


Proceso A Bloque de Cdigo Paso de Argumentos Programa Cliente Declaracin Funcin STUB Cliente 3 7 Transporte de Solicitud Retorno de Resultados

Proceso B Definicin Funcin Definicin Funcin Definicin Funcin Definicin Funcin 4 Desembalaje de Argumentos 5 Ejecucin de Funcin 6 Embalaje de Resultado

STUB Servidor

Programa Servidor

Retorno de Resultados Bloque de Cdigo

1 Embalaje de Argumentos 2 Invocacin 8 Desembalaje de Resultado

RPC o Llamadas a Procedimientos Remotos


Los stubs:
Son libreras que emplean los programadores Se generan de forma automtica Se emplea un lenguaje de descripcin de interfaces para su generacin (IDL) Estas descripciones se procesan por un precompilador que genera el cdigo fuente de los stubs cliente y servidor Resuelven problemas de heterogeneidad gracias a XDR o

eXternal Data Representation

Formato independiente de datos

NDICE
Introduccin RPCs Sistemas de Objetos Distribuidos Lenguajes de Descripcin de Interfaces CORBA
OMA ORB Especificacin de Interfaces Protocolos Servicios Fundamentales

RMI RMI vs. CORBA

Sistemas de Objetos Distribuidos


Surgen de aplicar los conceptos de RPCs al paradigma de la orientacin a objetos Las tecnologas de distribucin de objetos o DOT permiten la distribucin de objetos entre clientes y servidores
Los servidores implementan objetos Los clientes invocan objetos

Una aplicacin puede exportar su funcionalidad en forma de objetos Las aplicaciones interactan en forma de invocaciones a distancia de mtodos pertenecientes a objetos

Sistemas de Objetos Distribuidos Existen diferentes plataformas para DOT:


CORBA: solucin del OMG RMI: solucin de Sun para Java DCOM/COM+: Solucin de Microsoft IBM Component Broker Microsoft Windows DNA Enterprise JavaBeans (EJB)

Sistemas de Objetos Distribuidos Arquitectura general:


Skeleton del Servidor Implementacin del Servidor Especificacin Especificacin Interfaz Interfaz (IDL oosimilar) (IDL similar) Almacenamiento de objetos Servicio de registro Gestor de Objetos Servicio de Nombrado

Compilador

Stub del Cliente

Programa Cliente

Sistemas de Objetos Distribuidos Servicio de registro/nombrado


Basado en el esquema de URL Permite identificar unvocamente un recurso <protocolo>//<usuario>:<clave>@<idmquina>:<puerto>/<ruta> Ejemplo RMI:
rmi://localhost:6789/nombreObjeto

Sistemas de Objetos Distribuidos Funcionamiento en tiempo de ejecucin:


Servicio de Nombrado 1

Programa Cliente

3 Stub del Cliente

Gestor de Objetos

Skeleton del Servidor

Almacenamiento de objetos

4 Servidor

1 Solicitud de objeto

2 Creacin e inicializacin del objeto

3 Manejador de objeto

4 Interaccin con el objeto

NDICE
Introduccin RPCs Sistemas de Objetos Distribuidos Lenguajes de Descripcin de Interfaces CORBA
OMA ORB Especificacin de Interfaces Protocolos Servicios Fundamentales

RMI RMI vs. CORBA

Lenguajes de Descripcin de Interfaces


Permiten separar el interface de los objetos de su implementacin Enmascaran los problemas de la heterogeneidad de los lenguajes Se utilizan para:
Definir tipos: Objetos y Datos intercambiados por los objetos

Generar ficheros: Skeletons y Stubs

Algunas alternativas:

IDL o Interface Definition Language usado en CORBA Directamente en Java: RMI ISL o Interface Specification Language de Xerox DCOM de Microsoft

Lenguajes de Descripcin de Interfaces Ejemplo en IDL:


enum TMonth {January, February, March, April, May, June, July, August, September, October, November, December}; typedef unsigned short TDay; typedef unsigned short TYear; struct Date { TDay day; TMonth month; TYear year; }; interface Calendar { Date getCurrentDate (); }; };

module IDLExample{

Lenguajes de Descripcin de Interfaces Utilizacin:


Precompilador a C++ FICHERO DESCRIPCIN INTERFACES Precompilador a Java

CLIENTE C++

SERVIDOR Java

STUB C++

PROTOCOLO

SKELETON Java

NDICE
Introduccin RPCs Sistemas de Objetos Distribuidos Lenguajes de Descripcin de Interfaces CORBA
OMA ORB Especificacin de Interfaces Protocolos Servicios Fundamentales

RMI RMI vs. CORBA

CORBA
Tecnologa de distribucin de objetos desarrollada por el OMG (Object Management Group) en 1991 Consorcio internacional creado en 1989 que agrupa a ms de 850 entidades a nivel mundial:
Constructores hw: HP, Fujistsu, Hitachi, etc. Fabricantes sw: Borland, EDS, Thales, etc. Clientes: Boeing, Telefnica I+D, Visa International, etc. Instituciones y universidades: MIT, UPM, W3C, etc.

Define especificaciones para arquitecturas distribuidas y abiertas Trabaja en estndares para la integracin de aplicaciones distribuidas heterogneas a partir de tecnologas orientadas a objetos

CORBA - OMA
En 1995, el OMG propuso una visin global de la construccin de aplicaciones distribuidas que llam OMA Object Management Architecture
CORBA Applications Especficos CORBA Domains
Finanzas Sanidad Telecom

CORBA Facilities
DataWare WorkFlow Impresin

CORBA

Trader Nombrado

Ciclo de Vida

Propiedades

Externalizacin

Bsqueda

Versiones

Eventos

Mensajera

Relaciones

Persistencia

Colecciones

Seguridad

Notificacin

CORBA Services

CORBA Consiste en los siguientes elementos:


Un gestor de objetos llamado ORB Mecanismos para la especificacin de interfaces: IDL (Interface Definition Language) y DII (Dynamic Invocation Interface) Protocolos binarios para la comunicacin entre ORBs llamados GIOP (General Inter-ORB Protocol) IIOP (Internet Inter-ORB Protocol)

CORBA - ORB
ORB: Object Request Broker Es un gestor de objetos y forma el ncleo de CORBA Hace que la comunicacin entre Cliente y Servidor sea independiente de:
El lenguaje de programacin utilizado: C++, Java, La ubicacin de los elementos Aspectos relacionados con los Sistemas Operativos La utilizacin de soluciones propietarias

CORBA - ORB
Cliente y Servidor utilizan para intercambiar peticiones:
De forma transparente: las peticiones parecen locales, el bus se encarga de su encaminamiento Cliente y servidor tienen su propio ORB Cualquiera puede actuar como cliente y como servidor

Programa Cliente Stub del Cliente ORB IIOP

Programa Servidor Skeleton del Servidor ORB

CORBA - ORB
En el lado del cliente:

Acepta peticiones del cliente para invocar un objeto remoto Encuentra la implementacin de ese objeto Devuelve una referencia al objeto remoto para las llamadas a los mtodos Encamina llamadas a mtodos y las respuestas correspondientes

Programa Cliente

Stub del Cliente ORB Cliente

Servicio de Nombrado

ORB Servidor

CORBA - ORB
En el lado del servidor:

Permite a los servidores registrar sus objetos

Recibe peticiones de ORBs de clientes y activa las implementaciones correspondientes usando el skeleton correspondiente Devuelve una referencia que identifica a cada objeto Llama a los mtodos solicitados por el ORB del cliente y devuelve los resultados
Servicio de Nombrado ORB Servidor Programa Servidor

Skeleton

ORB Cliente

CORBA Especificacin de Interfaces


Se permiten invocaciones estticas y dinmicas Invocaciones estticas:
Basadas en IDL: Se utilizan los stubs y los skeletons generados durante la fase de codificacin Ms sencillas de utilizar Una invocacin remota parece local Comprobacin de tipos en tiempo de compilacin

CORBA Especificacin de Interfaces


Invocaciones dinmicas: Ejemplo
Programa Cliente

o.Imprimir (string)

qu es o?, NO IMPORTA, se resuelve en tiempo de ejecucin: Quin Implementa un Mtodo Imprimir? Impresora o Programa Servidor DocumentoPDF o DocumentoPS o

CORBA Especificacin de Interfaces


Invocaciones dinmicas:
El cliente no tiene stub Se utilizan el Interfaz de Invocaciones Dinmicas o DII, el Interfaz Skeleton Dinmico o DSI y el Repositorio de Interfaces o IR del ORB
Programa Cliente DII Programa Servidor DSI

ORB

IIOP

ORB

IR

IR

CORBA Especificacin de Interfaces


Invocaciones dinmicas:
1. 2. 3. 4.

Pasos en el programa:

Identificar el objeto a invocar Obtener su interfaz desde el IR Construir una invocacin Ejecutar la invocacin y obtener el resultado

Muy flexibles Se permite la inclusin de nuevos objetos en tiempo de ejecucin

CORBA Especificacin de Interfaces


Visin Global:
Programa Cliente Stub del Cliente ORB DII Programa Servidor Skeleton del Servidor IIOP ORB DSI

IR

IR

CORBA - Protocolos
CORBA se basa en los protocolos GIOP e IIOP El protocolo GIOP define:
Una representacin comn de los datos (CDR o Common Data Representation)

Un formato de referencia a los objetos (IOR o Interoperable Object Reference) Un conjunto de mensajes de transporte de peticiones

GIOP es un protocolo genrico; IIOP es GIOP para Internet

CORBA - Protocolos
Las referencias a los objetos (IOR) en IIOP contienen:
El nombre completo del interface IDL del objeto La direccin IP de la mquina en la que est el objeto El puerto en el que est el servidor de objetos Una clave que identifica al objeto en el servidor

CORBA permite utilizar otros protocolos:

Comunicacin simultnea con IIOP, UDP-IOP, Multicast-IOP,

CORBA - Servicios Fundamentales CORBA tambin proporciona servicios que pueden ser indispensables en la mayora de las aplicaciones distribuidas. CORBA Services Veremos algunos servicios bsicos:
Nombrado o Naming Service Eventos o Event Service Seguridad o Security Service Persistencia o Persistance Service Consulta o Query Service

CORBA - Servicios Fundamentales


Servicio de Nombrado: permite localizar dinmicamente objetos, y es el equivalente a las pginas blancas
Se definen contextos de nombrado Seran como estructuras de directorios donde los ficheros concretos son objetos

URL: corbaname::acme.com:2980/Livingthing/Animal/Man/Fred

CORBA - Servicios Fundamentales

Servicio de Eventos (y de Notificacin):

Permite a los objetos generar eventos asncronos hacia otros objetos a travs de canales de eventos Los canales funcionan de la siguiente manera:
Modo push: el objeto generador enva las notificaciones al consumidor por propia iniciativa Modo pull: El objeto consumidor informa al generador sobre los eventos que quiere recibir

CORBA - Servicios Fundamentales


Servicio de Seguridad:

Mecanismos para la autenticacin Realizacin de transferencias seguras Auditora de transferencias (para revisin posterior

Servicio de Persistencia: proporciona un soporte persistente para los objetos

Se emplea un gestor de objetos persistentes o Persistent Object Manager

Servicio de Consulta:

Permite interrogar a los objetos acerca de sus propiedades Utiliza estndares de consulta (SQL)

NDICE
Introduccin RPCs Sistemas de Objetos Distribuidos Lenguajes de Descripcin de Interfaces CORBA
OMA ORB Especificacin de Interfaces Protocolos Servicios Fundamentales

RMI RMI vs. CORBA

RMI
Remote Method Invocation Solucin DOT de SUN para la plataforma Java Muy similar a CORBA pero ms sencillo
Interfaz Java Programa Cliente Stub del Cliente Remote Reference Layer Programa Servidor Skeleton del Servidor Remote Reference Layer

RMI registry

rmic

Stub del Cliente

Skeleton del Servidor

Omitido en versiones >= Java 1.2

Servicios RMI
Al igual que CORBA, RMI dispone de algunos servicios similares:
Servicio de Nombrado (Naming) Servicio de Seguridad (RMISecurity) Excepciones remotas (RMIExceptions)

CORBA vs RMI
CORBA:

Independiente del lenguaje de programacin Ms complejo Ms potente Aparentemente poco desarrollo actual

RMI:

Slo para Java Sencillo de utilizar Muchas perspectivas de futuro Muchos servicios de Java lo utilizan

PROBLEMAS DE CORBA/RMI
FIREWALLS

Trfico restringido al puerto 80 del protocolo HTTP Un solucin fue el tunneling pero degrada el rendimiento

Este problema aument la popularidad de los Servicios Web


XML/SOAP sobre HTTP

PROBLEMAS DE CORBA/RMI
IMPLEMENTACIONES DEFICIENTES (CORBA)

Muy pocos fabricantes implementan los servicios que son esenciales para hacer CORBA realmente til. Implementaciones libres inestables y las comerciales bastante caras Sin embargo la JDK de Java viene con soporte de CORBA
idlj: Compilador de IDL-Java orbd: proceso servidor de soporte al servicio de nombrado servertool: interfaz de lnea de comandos para registrar/desregistar objetos y arrancar/parar servidores

También podría gustarte