23
CORBA IDL CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

Embed Size (px)

Citation preview

Page 1: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

CORBA IDLCORBA IDL

Ramón Mª Gómez Labrador

Deptº Lenguajes y Sistemas Informáticos

Universidad de Sevilla

Page 2: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

ÍndiceÍndice

Esquemas generales sobre CORBA.Módulos e interfaces IDL.Ejemplo: cliente/servidor chat.Herencia.Partes de un interfaz IDL.Ejemplos.Comparativa de ORBs.Más información.

Page 3: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

CORBACORBA

Page 4: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

CORBACORBA

•Interfaces

Page 5: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

CORBACORBA

• Cliente

Page 6: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

CORBACORBA

•Servidor

Page 7: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

Características del IDLCaracterísticas del IDL

Describe operaciones y parámetros de cada interfaz.

Lenguaje declarativo. Sintáxis similar al ANSI C++. Preprocesado como C++ (más #pragma). Usa el código de caracteres ISO-Latin1.

Common Object Request Broker Architecture and Specifications (revisión 2.1) del OMG.

PARA MÁS INFORMACIÓN...

Page 8: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

Sintaxis IDLSintaxis IDL

Palabras reservadas:any attribute boolean case char

const context default double enum exception

FALSE fixed float in inout interface

long module Object octet oneway

out raises readonly sequence

short string struct switch TRUE typedef

unsigned union void wchar wstring

Signos de puntuación:; { } : , = + - ( ) < > [ ] ‘ “ \ | ^ & * / % ~

Preprocesado: # ## ! || &&

Page 9: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

Especifiación IDLEspecifiación IDL

Módulos:– Declaración de tipos globales.– Declaración de constantes globales.– Declaración de excepciones globales.– Interfaces.– Módulos.

module identificador

{ /* Descripción */

}

Page 10: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

Especifiación IDLEspecifiación IDL

Interfaces:– Declaración de tipos.– Declaración de constantes.– Declaración de excepciones.– Declaracion de atributos.– Declaración de operaciones.

interface ident [ : herencia , ... ]

{ /* Descripción */

}

Page 11: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

Especifiación IDL (ejemplo)Especifiación IDL (ejemplo)

Cliente / servidor IRC: Definiciones IDL

– Broadcaster.idl– Receiver.idl

Interfaces Java– Broadcaster_impl.java– Receiver_impl.java

Interfaces C++/Xwindows– Broadcaster_impl.cpp– Receiver_impl.java y X11/Receiver_impl.cpp

Page 12: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

HerenciaHerencia

Características:– Herencia múltiple.– Operador de resolución de nombre: ::

– No pueden redefinirse las operaciones.– No se permiten declaraciones ambiguas.

interface A {exception E;void f() raises E; }

interface B: A {void g() raises E; }

–La excepción E tiene los nombres globales:

::A::E

::B::E

Page 13: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

Tipos de datosTipos de datos

Tipos básicos:– Enteros:

short long long long

unsigned short unsigned long unsigned long long

– Coma flotante:float double long double

– Carácter: char wchar

– Booleano: boolean

– Octal: octet

– Cualquier tipo básico: any

Page 14: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

Tipos de datosTipos de datos

Tipos de plantilla:– Cadena: string wstring

– Secuencia: sequence

– Coma fija: fixed

Tipos compuestos:– Estructura: struct

– Unión: union

– Enumeración: enum

Vectores: tipo[n]

Page 15: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

OperacionesOperaciones

Formato de una operación[ atributo ] tipo identificador parámetros [ excepciones ]

Atributos:– Sentido único: oneway

Parámetros:( [ atributo tipo identificador [ , ... ] ] )

– Atributos: in out inout

Excepciones:raises ( excepción [ , excepción ] )

Page 16: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

Otras declaracionesOtras declaraciones

Constantes:const tipo identificador = expresión ;

Atributos:[ readonly ] attribute tipo ident [ , ... ] ] ;

Excepciones:exception ident { [ miembros ] } ;

Page 17: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

ExcepcionesExcepciones

Estados:– Operación terminada:

COMPLETED_YES

– Oper. no terminada: COMPLETED_NO

– Indetermiante: COMPLETED_MAYBE

Tipos:– Sin excepción: NO_EXCEPTION

– Del usuario: USER_EXCEPTION

– Del sistema: SYSTEM_EXCEPTION

Page 18: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

Ejemplo 1Ejemplo 1

module CORBA {

interface ORB {

typedef sequence<string> arg_list;

typedef string Oaid;

BOA BOA_init (inout arg_list argv,

in BOA boa_identifier);

// De igual modo, pueden definirse rutinas para otros AO.}

}

–Iniciación del BOA:

Page 19: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

Ejemplo 2Ejemplo 2

module CORBA {

interface ORB {

typedef string ObjectId;

typedef sequence<ObjectId> ObjectIdList;

exception InvalidName {};

ObjectList list_initial_services ();

Object resolve_initial_refernces

(in ObjectId identifier)

raises (InvalidName); }

}

–Referencia niciación de un objeto:

Page 20: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

Ejemplo 3Ejemplo 3

module CORBA {

typedef unsigned long PolicyType;

interface Policy {

readonly attribute PolicyType policy_type;

Policy copy ();

void destroy ();

}

typedef sequence<Policy> PolicyList;

}

–Política de seguridad de un objeto:

Page 21: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

Ejemplo 4Ejemplo 4

module CORBA {

interface DomainManager {

Policy get_domain_policy

(in PolicyType policy_type); }

const PolicyType SecConstruction = 11;

interface ConstructionPolicy: Policy {

void make_domain_manager

(in CORBA::InterfaceDef object_type,

in boolean const_policy); }

typedef sequence<DomainManager> DomaninManagerList;}

–Gestión de dominios:

Page 22: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

ORBs comercialesORBs comerciales

Comparativa de características de los núcleos.

Comparativa de los servicios CORBA ofrecidos.

Comparativa de las plataformas en que pueden ejecutarse.

Page 23: CORBA IDL Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla

Más informaciónMás información

OMG: http://www.omg.org/Especificaciones CORBA/IIOP 2.2:

http://www.omg.org/corbiiop.htm

Java-IDL:http://java.sun.com/products/jdk/1.2/docs/

guide/idl/index.html

Programas CORBA:http://www.infosys.tuwien.ac.at/Research/

Corba/software.html