CORBA (Common Object Request Broker Architecture)

Anuncio
Corba
1
Corba
Corba (Common Object Request Broker Architecture) es un conjunto de trabajo
distribuido (distributed framework*) creado para ofrecer soporte a la comunicación de
arquitecturas heterogéneas en hw/sw.
Mientras que RMI (Java) ofrece soporte a arquitecturas homogéneas, siempre y cuando
Java ocupe ambos extremos y exista un cableado en el medio, CORBA permite la
conexión de sistemas de sistemas con hardware, software y aplicaciones de distintos
fabricantes.
Java IDL ofrece una implementación de la especificación 2.0 de CORBA.
CORBA es el resultado del trabajo de un grupo de ingenieros de Object Management
Group (OMG).
Como resultado de dicho trabajo se ha creado una especificación que cubre los
elementos necesarios para permitir la comunicación entre un sistema hw/sw y otro.
Actualmente, OMG es un consorcio que incluye aproximadamente 700 empresas.
Toda la información referente a CORBA puede encontrarse en http://www.omg.org
* "framework" hace referencia a un conjunto de códigos reutilizables prácticamente
"listos para usar" que pueden aplicarse para solucionar problemas con alguna
personalización (customing).
2
Qué es
• CORBA no es un producto.
• El estándar denominado CORBA define el modo en que las
empresas pueden implantar el estándar.
• Una típica implantación de CORBA incluye:
• 1. Una aplicación ORB (Object Request Broker)
• 2. Un compilador IDL (Interface Definition Language)
• 3. Una o mas aplicaciones de COS (Common Object Services)
• (conocidas también como CORBAServices)
• 4. Aplicaciones comunes, conocidas como CORBAFacilities
• En CORBA 2.0 se introdujo el protocolo IIOP Internet Inter-ORB
Protocol, un estándar que especifica cómo los ORB se comunican
a través de la red.
3
ORB
•
•
•
•
•
•
•
Object Request Broker
Es el mecanismo que permite la conexión de objetos entre espacios de direcciones
remotos.
Cuando dos sistemas CORBA quieren comunicarse entre sí en un espacio de
dirección remoto, el ORB asegura su realización, independientemente del hardware,
del sistema operativo y del lenguaje de las aplicaciones implicadas. ORB asegura la
correcta invocación al objeto remoto.
Es responsabilidad del objeto ORB:
a) establecer la comunicación con el sistema remoto.
b) empaquetar/transformar los parámetros para la llamada remota (marshaling).
c) gestionar las peticiones simultaneas procedentes de múltiples clientes.
4
Marshaling
•
•
Marshaling es la técnica utilizada para empaquetar los parámetros, los
valores de retorno y las excepciones para su envío a los sistemas.
Básicamente se trata de convertir los datos en un formato de plataforma
independiente para finalmente convertirlos en el tipo especifico de la
plataforma de destino.
5
COS
Common Object Services
Son servicios de CORBA para asistir a ORB.
1. Naming Service.
El Servicio de Nombres permite a clientes y servidores encontrar objetos en la red. Un
servidor registra un objeto con un Service Naming utilizando una representación
jerárquica. Los clientes pueden utilizar el Service Naming para encontrar objetos.
2. Event Service.
Este servicio permite a clientes y servidores enviar mensajes a uno o mas recibidores.
Los objetos puede registrarse a la escucha (listen) de un determinado canal de evento.
El Servicio de Eventos almacena los eventos antes de transmitirlos, por lo que no es
necesario que clientes y servidores estén conectados.
3. Security Service.
Este servicio se encarga de autentificar los mensajes, autorizar el acceso a objetos y
garantizar la comunicación.
6
COS
4. Transaction Service.
Este servicio permite la gestión de las transacciones hacia un database.
Otros servicios menores son:
- Persistent Object Service.
- Concurrency Control Service.
- Lyfe Cycle Service.
- Relationship Service.
- Externalization Service.
- Query Service.
- Licensing Service.
- Property Service.
- Time Service.
- Object Trader Service.
- Object Collections Service.
7
IDL
• Interface Definition Language
• La definición de las interfaces se crean utilizando el lenguaje IDL.
• IDL es similar a C, C++ o Java si bien no puede compilarse
directamente en un programa en binario. IDL se entiende como un
lenguaje intermediario que define las interfaces que un cliente tiene
que utilizar y el servidor implementar.
• También puede decirse que con IDL se genera un vínculo entre el
sistema que utiliza un objeto y el sistema que lo implementa.
• Una vez desarrolladas las interfaces, éstas se compilan utilizando
una herramientas que es especifica para cada lenguaje (C, C++,
Java, SmallTalk, Ada).
• En Java se utiliza idlj.exe que es un programa que viene con el
J2SDK1.4.
8
IDL
- Un fichero IDL está formado por varios
elementos que juntos crean un espacio de
nombres.
- Los identificadores no son sensibles al tamaño
de las letras.
- Los identificadores pueden utilizarse sólo una
vez en el mismo espacio de nombres.
- IDL no soporta la sobrecarga y/o la sobre
escritura de las operaciones.
- IDL soporta herencia simple y múltiple.
9
Módulo IDL
Módulo IDL
El módulo es un contenedor de un grupo de interfaces IDL (un paquete
en Java).
Un módulo puede contener en su interior una o varias interfaces,
además de otros módulos.
Ejemplo:
module calculator{
interface Functions{
float square_root(in float number);
float power (in float base, in float exponent);
};
};
10
IDL
11
IDL
Ficheros generados
Utilizando el comando idlj -fall Xxx.idl se generarán los ficheros fuente
en Java para sus asociaciones del lado servidor y del lado cliente:
idlj generará 6 ficheros:
1. Xxx.java - interfaz sin operaciones.
2. XxxOperations.java - las operaciones declaradas en el fichero IDL.
3. XxxHelper.java - funcionalidades auxiliares para CORBA.
4. XxxHolder.java - sirve para gestionar los parámetros in o inout.
5. _XxxStub.java - es el fichero stub para el lado cliente.
6. XxxPOA.java - es el fichero skeleton para el lado servidor; extiende
XxxOperations
12
Implementaciones
lado cliente – lado servidor
Obviamente falta la implementación lado
servidor y la aplicación lado cliente.
XxxImpl.java - el servant (objeto que hay
que servir) - tiene que extender de
XxxPOA.
XxxServer.java - el servidor (crea el objeto
servant y la da de alta en el servidor de
nombres).
XxxClient.java - la aplicación lado cliente.
13
IDL
Ficheros generados en el ejemplo Calculadora
Lado servidor
Functions.java
FunctionsOperations.java
FunctionsPOA.java
Lado Cliente
_FunctionsStub.java
Functions.java
FunctionsHelper.java
FunctionsHolder.java
FunctionsOperations.java
14
IDL
Las interfaces de IDL pueden tener atributos, excepciones y operaciones.
Un atributo define un tipo de variable CORBA al que se puede acceder desde
métodos predefinidos.
Los tipos CORBA pueden ser de tipo IDL u otra interfaz IDL.
Un atributo generará métodos de obtención e impostación (getter/setter).
Ejemplo:
attribute float price;
se convierte en los siguientes métodos Java:
float price();
void price(float arg);
Los atributos pueden ser “read only” y en este caso se generará sólo el método
de obtención de la variable.
Comprobar que el compilador IDL no declara ninguna variable price sino sólo
los métodos de acceso a dicha variable.
15
IDL
Las operaciones se convierten en métodos Java.
Cada operación tiene que declarar un tipo de retorno y cero o más
argumentos.
Los argumentos pueden ser de tipo in, out o inout.
Un parámetro in se refiere a un atributo de tipo paso por valor.
Un parámetro out se refiere a un atributo de tipo paso por referencia.
Un parámetro inout se refiere a un atributo de tipo paso por
valor/retorno de paso por referencia.
Excepciones:
Las operaciones pueden lanzar excepciones.
Ejemplo:
interface ordenes{
void ordenar(in Orden o, out res) raises (ProductoException);
};
16
IIOP
• Internet Inter-ORB Protocol es una implementación
TCP/IP de GIOP (General Inter-ORBProtocol). GIOP
especifica cómo comunican los ORBS, envían los
mensajes, especifica cómo se ordenan los byte para los
integer y los float y el marshalling de los parámetros y
los valores de retorno.
• Gracias a GIOP se puede desarrollar un servidor con un
ORB y un IDL de un vendedor distinto al del cliente y
realizar un juego de servicios intermediarios utilizando
ORB y IDL de un tercero vendedor; distintos OS, distinto
HW y SW...
• Todo esto será posible si el vendedor declara que
cumple con CORBA 2.0.
17
Ejemplo
Calculadora
En este ejemplo se desarrollará una calculadora utilizando un sistema
cliente/servidor CORBA.
Partiendo del fichero “calculadora.zip” habrá que extraer los ficheros y
ponerlos en un directorio del disco duro como c:\corba.
Winzip creará varios directorios: calculadora - server - cliente.
En el directorio raíz de la aplicación habrá varios ficheros cmd
numerados. Habrá que ejecutarlos siguiendo la numeración.
Se necesita el j2sdk1.4 y las siguientes variables de entorno
configuradas del siguiente modo:
JAVA_HOME=c:\j2sdk1.4.0
path= %JAVA_HOME%\bin;%path%s
classpath= .;%classpath%
-fin18
Descargar