1 / 23

CORBA IDL

CORBA IDL. Ramón Mª Gómez Labrador Deptº Lenguajes y Sistemas Informáticos Universidad de Sevilla. Í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.

emlyn
Télécharger la présentation

CORBA IDL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Í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.

  3. CORBA

  4. CORBA • Interfaces

  5. CORBA • Cliente

  6. CORBA • Servidor

  7. Caracterí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...

  8. Sintaxis 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: # ## ! || &&

  9. Especifiación IDL • Módulos: • Declaración de tipos globales. • Declaración de constantes globales. • Declaración de excepciones globales. • Interfaces. • Módulos. moduleidentificador { /* Descripción */ }

  10. Especifiación IDL • Interfaces: • Declaración de tipos. • Declaración de constantes. • Declaración de excepciones. • Declaracion de atributos. • Declaración de operaciones. interfaceident [ :herencia, ... ] { /* Descripción */ }

  11. 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

  12. Herencia • Características: • Herencia múltiple. • Operador de resolución de nombre: :: • No pueden redefinirse las operaciones. • No se permiten declaraciones ambiguas. • La excepción E tiene los nombres globales: ::A::E ::B::E interface A { exception E; void f() raises E; } interface B: A { void g() raises E; }

  13. Tipos 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

  14. Tipos 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]

  15. Operaciones Formato de una operación [ atributo ] tipoidentificadorparámetros [ excepciones ] • Atributos: • Sentido único: oneway • Parámetros: ( [ atributotipoidentificador [ , ... ] ] ) • Atributos: in out inout • Excepciones: raises (excepción [ ,excepción ] )

  16. Otras declaraciones • Constantes: consttipo identificador=expresión; • Atributos: [ readonly ] attributetipoident [ , ... ] ] ; • Excepciones: exceptionident { [ miembros ] } ;

  17. Excepciones • 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

  18. Ejemplo 1 Iniciación del BOA: 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. } }

  19. Ejemplo 2 Referencia niciación de un objeto: 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); } }

  20. Ejemplo 3 Política de seguridad de un objeto: module CORBA { typedef unsigned long PolicyType; interface Policy { readonly attribute PolicyType policy_type; Policy copy (); void destroy (); } typedef sequence<Policy> PolicyList; }

  21. Ejemplo 4 Gestión de dominios: 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;}

  22. ORBs comerciales • Comparativa de características de los núcleos. • Comparativa de los servicios CORBA ofrecidos. • Comparativa de las plataformas en que pueden ejecutarse.

  23. Má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

More Related