Common Object Request
Broker Architecture
CORBA
Computación de objetos distribuidos y
CORBA
 CORBA es una solución para la distribución de objetos
 OMG ha definido CORBA:
 Un modelo de objetos
 Cómo interaccionan los objetos
 Una arquitectura del sistema que soporta la
interacción
 de objetos
 Un lenguaje para definir las interacciones entre
objetos
 Servicios básicos para aplicaciones distribuidas
CORBA: un bus software
 Todos los componentes en CORBA son
objetos
 Cada objeto tiene una interfaz y una
identidad única
 Cada objeto se puede implementar con un
lenguaje de programación distinto, y
ejecutarse sobre cualquier plataforma HW y
sistema operativo
 CORBA define el bus software que permite la
interacción de esa diversidad de objetos
IDL: Interface Definition Lang.
 IDL separa la interfaz de la implementación
 Lenguaje de especificación de interfaces
públicas, con herencia múltiple y
fuertemente tipado
 Independiente de cualquier lenguaje de
programación
 OMG define correspondencias con muchos
lenguajes
 No es un lenguaje de programación
 Permite la interoperabilidad
 Soporta el mecanismo de invocación dinámica
IDLs
Conceptos y terminología
 CORBA. Common Object Request Broker Adapter
– Ofrece interfaces de programación independientes de la
plataforma y modelos para aplicaciones portables basadas
en objetos distribuidos.
 ORB (Object Request Broker). Permite la comunicación
transparente entre clientes de objetos.
 Objeto CORBA: entidad virtual que puede ser localizada
por un ORB y que puede aceptar peticiones de clientes.
– Es virtual, se concreta en un determinado lenguaje de
programación.
Conceptos y terminología
 Objeto destino. Objeto CORBA al que se le hace una petición.
 Cliente. Entidad que hace una petición sobre un objeto
CORBA.
– Puede existir en un espacio de direcciones distinto
 Servidor. Aplicación en la que residen uno o más objetos
CORBA.
 Petición. Invocación de una operación de un objeto CORBA
realizada por un cliente.
 Referencia a objeto. Manejador que se usa para identificar,
localizar y dar la dirección de un objeto CORBA.
 Sirviente. Entidad de un lenguaje de programación que
implementa uno o más objetos CORBA. Los sirvientes encarnan
objetos CORBA
Arquitectura CORBA
Componentes de la arquitectura
CORBA
Componentes de la arquitectura
CORBA
Flujo general de peticiones
 El cliente realiza una petición usando stubs
estáticos (previamente compilados) o la Interfaz de
invocación dinámica (DII) y la dirige a su ORB.
 El ORB cliente transmite las peticiones al ORB
enlazado con el servidor.
 El ORB del servidor redirige la petición al adaptador
de objetos que ha creado el objeto destino.
 El adaptador de objetos dirige la petición al servidor
que implementa el objeto destino. Puede utilizar
esqueletos estáticos o la interfaz de esqueleto
dinámico.
 El servidor devuelve su respuesta.
Invocación de peticiones
 Para que un cliente envíe un mensaje a un objeto
necesita tener una referencia de dicho objeto.
 Las operaciones se realizan a través de la referencia
al objeto.
 Cuando un cliente llama a una operación, el ORB:
 Localiza al objeto destino.
 Activa a la aplicación servidor, si no está activa.
 Transmite los argumentos.
 Activa un sirviente para el objeto si es necesario.
 Espera hasta que se complete la operación.
 Devuelve cualquier parámetro out e inout al
cliente.
 Devuelve una excepción cuando falla la llamada.
Estilos de peticiones
 Petición síncrona. El cliente se bloquea
esperando la respuesta. Idénticas a las
llamadas a procedimientos remotos.
 Petición de sentido único (oneway). El cliente
no espera respuesta.
 También existen peticiones asíncronas.
Componentes de la arquitectura
CORBA
Componentes de la arquitectura
CORBA
Funciones del ORB
 Entrega las peticiones a los objetos destino (locales o remotos)
y devuelve las respuestas a los clientes que hicieron las
peticiones
 El ORB se basa en la referencia al objeto destino
 Transparencias soportadas:
 Localización de objetos
 Implementación de objeto
 Estado de ejecución del objeto
 Mecanismos de comunicación con el objeto
 Entiende IDL y mantiene un Repositorio de Interfaces
 También mantiene un Repositorio de Implementaciones
 Puede federar esta información a través de varios
 sistemas:
 UNA WEB DE ORBs INTERCONECTADOS
Adaptadores de Objeto
 Un adaptador de objeto es un objeto que
adapta la interfaz de un objeto a una interfaz
esperada por un usuario.
– Crean referencias de objetos
– Aseguran que cada objeto destino esté
encarnado en un sirviente
– Reciben las peticiones emitidas por el ORB del
servidor y las redirigen a los sirvientes que
encarnan a los objetos destino.
Interoperabilidad en CORBA:
GIOP/IIOP
Resumen
 CORBA es una solución a la computación de
objetos distribuidos.
 Los elementos básicos de la arquitectura
CORBA son el ORB, stub y skeletons en
cliente y servidor respectivamente, el
repositorio de interfaces, y las interfaces de
invocación y skeleton dinámicas
 IDL es el lenguaje que permite especificar
interfaces, y el elemento central para
soportar la interoperabilidad
Introdución a CORBA
¿Cómo funciona el Cliente /
Servidor CORBA?
Client Hello Object
getTime()
The current time is Mon Jun 10 15:41:14
EST 2002
module test {
interface Hello {
string getTime();
};
};
¿Cómo funciona el Cliente /
Servidor CORBA?
Client Hello Object
getTime()
The current time is Mon Jun 10 15:41:14
EST 2002
module test {
interface Hello {
string getTime();
};
};
CORBA Cliente Servidor
Client Hello Object
GIOP/IIOP
ORB CORE
ORB CORE
module test {
interface Hello {
string getTime();
};
};
CORBA Cliente Servidor
Client
GIOP/IIOP
ORB CORE
ORB CORE
Hello Object
getTime()
The current time is Mon Jun 10 15:41:14 EST 2002
module week1 {
interface Hello {
string getTime();
};
};
CORBA Cliente Servidor
Client Hello Object
Stub
Object
Ref
ORB Interface
ORB CORE
GIOP/IIOP
OS Kernel
OS I/O Sub System
Network Adaptor
OS Kernel
OS I/O Sub System
Network Adaptor
Connection
Management
IDL
Skeleton
Object Adaptor
getTime()
The current time is Mon Jun 10 15:41:14 EST 2002
getTime()
Construct
Request Object
Marshall/
Unmarshall
Find the
Object
Marshall/
Unmarshall
getTime()
module test {
interface Hello {
string getTime();
};
};
CORBA Cliente Servidor
Client
Stub
Object
Ref
ORB Interface
ORB CORE
GIOP/IIOP
OS Kernel
OS I/O Sub System
Network Adaptor
OS Kernel
OS I/O Sub System
Network Adaptor
Connection
Management
IDL
Skeleton
Object Adaptor
getTime() Hello Object
The current time is Mon Jun 10 15:41:14 EST 2002
Week1 project completed successfully
module test {
interface Hello {
string getTime();
};
};
¿Cómo funciona el
Object Adapter?
Object Adaptor
Hello CORBA Cliente Servidor
Client
Stub
Object
Ref
ORB Interface
ORB CORE
GIOP/IIOP
OS Kernel
OS I/O Sub System
Network Adaptor
OS Kernel
OS I/O Sub System
Network Adaptor
Connection
Management
getTime() Hello Servant
The current time is Mon Jun 10 15:41:14 EST 2002
IDL
Skeleton
Object Adaptor
Invocando getTime()
Client
Stub
Object
Ref
ORB Interface
ORB CORE
GIOP/IIOP
OS Kernel
OS I/O Sub System
Network Adaptor
OS Kernel
OS I/O Sub System
Network Adaptor
Connection
Management
getTime()
getTime()
Construct
Request Object
Marshall/
Unmarshall
Find the
Object
Marshall/
Unmarshall
IDL
Skeleton
Object Adaptor
Hello Servant
Incoming
requests
Comportamiento del Object
Adapter, luego de recibir la
petición
ORB POA Manager POA
POA
POA
Servant
Servant
Servant
Servant
Servant
Hello Servant
Servant
Servant
Servant
Object Adaptor
Ejecutar la llamada getTime()
y retornar el resultado
Client
Stub
Object
Ref
ORB Interface
ORB CORE
GIOP/IIOP
OS Kernel
OS I/O Sub System
Network Adaptor
OS Kernel
OS I/O Sub System
Network Adaptor
Connection
Management
IDL
Skeleton
getTime()
The current time is Mon Jun 10 15:41:14 EST 2002
getTime()
Construct
Request Object
Marshall/
Unmarshall
Find the
Object
Marshall/
Unmarshall
getTime()
Hello Servant

1065256.ppt

  • 1.
    Common Object Request BrokerArchitecture CORBA
  • 2.
    Computación de objetosdistribuidos y CORBA  CORBA es una solución para la distribución de objetos  OMG ha definido CORBA:  Un modelo de objetos  Cómo interaccionan los objetos  Una arquitectura del sistema que soporta la interacción  de objetos  Un lenguaje para definir las interacciones entre objetos  Servicios básicos para aplicaciones distribuidas
  • 3.
    CORBA: un bussoftware  Todos los componentes en CORBA son objetos  Cada objeto tiene una interfaz y una identidad única  Cada objeto se puede implementar con un lenguaje de programación distinto, y ejecutarse sobre cualquier plataforma HW y sistema operativo  CORBA define el bus software que permite la interacción de esa diversidad de objetos
  • 4.
    IDL: Interface DefinitionLang.  IDL separa la interfaz de la implementación  Lenguaje de especificación de interfaces públicas, con herencia múltiple y fuertemente tipado  Independiente de cualquier lenguaje de programación  OMG define correspondencias con muchos lenguajes  No es un lenguaje de programación  Permite la interoperabilidad  Soporta el mecanismo de invocación dinámica
  • 5.
  • 6.
    Conceptos y terminología CORBA. Common Object Request Broker Adapter – Ofrece interfaces de programación independientes de la plataforma y modelos para aplicaciones portables basadas en objetos distribuidos.  ORB (Object Request Broker). Permite la comunicación transparente entre clientes de objetos.  Objeto CORBA: entidad virtual que puede ser localizada por un ORB y que puede aceptar peticiones de clientes. – Es virtual, se concreta en un determinado lenguaje de programación.
  • 7.
    Conceptos y terminología Objeto destino. Objeto CORBA al que se le hace una petición.  Cliente. Entidad que hace una petición sobre un objeto CORBA. – Puede existir en un espacio de direcciones distinto  Servidor. Aplicación en la que residen uno o más objetos CORBA.  Petición. Invocación de una operación de un objeto CORBA realizada por un cliente.  Referencia a objeto. Manejador que se usa para identificar, localizar y dar la dirección de un objeto CORBA.  Sirviente. Entidad de un lenguaje de programación que implementa uno o más objetos CORBA. Los sirvientes encarnan objetos CORBA
  • 8.
  • 9.
    Componentes de laarquitectura CORBA
  • 10.
    Componentes de laarquitectura CORBA
  • 11.
    Flujo general depeticiones  El cliente realiza una petición usando stubs estáticos (previamente compilados) o la Interfaz de invocación dinámica (DII) y la dirige a su ORB.  El ORB cliente transmite las peticiones al ORB enlazado con el servidor.  El ORB del servidor redirige la petición al adaptador de objetos que ha creado el objeto destino.  El adaptador de objetos dirige la petición al servidor que implementa el objeto destino. Puede utilizar esqueletos estáticos o la interfaz de esqueleto dinámico.  El servidor devuelve su respuesta.
  • 12.
    Invocación de peticiones Para que un cliente envíe un mensaje a un objeto necesita tener una referencia de dicho objeto.  Las operaciones se realizan a través de la referencia al objeto.  Cuando un cliente llama a una operación, el ORB:  Localiza al objeto destino.  Activa a la aplicación servidor, si no está activa.  Transmite los argumentos.  Activa un sirviente para el objeto si es necesario.  Espera hasta que se complete la operación.  Devuelve cualquier parámetro out e inout al cliente.  Devuelve una excepción cuando falla la llamada.
  • 13.
    Estilos de peticiones Petición síncrona. El cliente se bloquea esperando la respuesta. Idénticas a las llamadas a procedimientos remotos.  Petición de sentido único (oneway). El cliente no espera respuesta.  También existen peticiones asíncronas.
  • 14.
    Componentes de laarquitectura CORBA
  • 15.
    Componentes de laarquitectura CORBA
  • 16.
    Funciones del ORB Entrega las peticiones a los objetos destino (locales o remotos) y devuelve las respuestas a los clientes que hicieron las peticiones  El ORB se basa en la referencia al objeto destino  Transparencias soportadas:  Localización de objetos  Implementación de objeto  Estado de ejecución del objeto  Mecanismos de comunicación con el objeto  Entiende IDL y mantiene un Repositorio de Interfaces  También mantiene un Repositorio de Implementaciones  Puede federar esta información a través de varios  sistemas:  UNA WEB DE ORBs INTERCONECTADOS
  • 17.
    Adaptadores de Objeto Un adaptador de objeto es un objeto que adapta la interfaz de un objeto a una interfaz esperada por un usuario. – Crean referencias de objetos – Aseguran que cada objeto destino esté encarnado en un sirviente – Reciben las peticiones emitidas por el ORB del servidor y las redirigen a los sirvientes que encarnan a los objetos destino.
  • 18.
  • 19.
    Resumen  CORBA esuna solución a la computación de objetos distribuidos.  Los elementos básicos de la arquitectura CORBA son el ORB, stub y skeletons en cliente y servidor respectivamente, el repositorio de interfaces, y las interfaces de invocación y skeleton dinámicas  IDL es el lenguaje que permite especificar interfaces, y el elemento central para soportar la interoperabilidad
  • 20.
  • 21.
    ¿Cómo funciona elCliente / Servidor CORBA? Client Hello Object getTime() The current time is Mon Jun 10 15:41:14 EST 2002 module test { interface Hello { string getTime(); }; };
  • 22.
    ¿Cómo funciona elCliente / Servidor CORBA? Client Hello Object getTime() The current time is Mon Jun 10 15:41:14 EST 2002 module test { interface Hello { string getTime(); }; };
  • 23.
    CORBA Cliente Servidor ClientHello Object GIOP/IIOP ORB CORE ORB CORE module test { interface Hello { string getTime(); }; };
  • 24.
    CORBA Cliente Servidor Client GIOP/IIOP ORBCORE ORB CORE Hello Object getTime() The current time is Mon Jun 10 15:41:14 EST 2002 module week1 { interface Hello { string getTime(); }; };
  • 25.
    CORBA Cliente Servidor ClientHello Object Stub Object Ref ORB Interface ORB CORE GIOP/IIOP OS Kernel OS I/O Sub System Network Adaptor OS Kernel OS I/O Sub System Network Adaptor Connection Management IDL Skeleton Object Adaptor getTime() The current time is Mon Jun 10 15:41:14 EST 2002 getTime() Construct Request Object Marshall/ Unmarshall Find the Object Marshall/ Unmarshall getTime() module test { interface Hello { string getTime(); }; };
  • 26.
    CORBA Cliente Servidor Client Stub Object Ref ORBInterface ORB CORE GIOP/IIOP OS Kernel OS I/O Sub System Network Adaptor OS Kernel OS I/O Sub System Network Adaptor Connection Management IDL Skeleton Object Adaptor getTime() Hello Object The current time is Mon Jun 10 15:41:14 EST 2002 Week1 project completed successfully module test { interface Hello { string getTime(); }; };
  • 27.
  • 28.
    Object Adaptor Hello CORBACliente Servidor Client Stub Object Ref ORB Interface ORB CORE GIOP/IIOP OS Kernel OS I/O Sub System Network Adaptor OS Kernel OS I/O Sub System Network Adaptor Connection Management getTime() Hello Servant The current time is Mon Jun 10 15:41:14 EST 2002 IDL Skeleton
  • 29.
    Object Adaptor Invocando getTime() Client Stub Object Ref ORBInterface ORB CORE GIOP/IIOP OS Kernel OS I/O Sub System Network Adaptor OS Kernel OS I/O Sub System Network Adaptor Connection Management getTime() getTime() Construct Request Object Marshall/ Unmarshall Find the Object Marshall/ Unmarshall IDL Skeleton Object Adaptor Hello Servant
  • 30.
    Incoming requests Comportamiento del Object Adapter,luego de recibir la petición ORB POA Manager POA POA POA Servant Servant Servant Servant Servant Hello Servant Servant Servant Servant
  • 31.
    Object Adaptor Ejecutar lallamada getTime() y retornar el resultado Client Stub Object Ref ORB Interface ORB CORE GIOP/IIOP OS Kernel OS I/O Sub System Network Adaptor OS Kernel OS I/O Sub System Network Adaptor Connection Management IDL Skeleton getTime() The current time is Mon Jun 10 15:41:14 EST 2002 getTime() Construct Request Object Marshall/ Unmarshall Find the Object Marshall/ Unmarshall getTime() Hello Servant