Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porAracely Borjas Modificado hace 9 años
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 Sintaxis IDL Palabras reservadas: anyattributebooleancasechar constcontextdefaultdouble enumexception FALSEfixedfloatininoutinterface longmoduleObjectoctetoneway outraisesreadonlysequence shortstringstructswitchTRUEtypedef unsignedunionvoidwcharwstring 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. module identificador {/* 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. interface ident [ : herencia,... ] {/* Descripción */ }
11
Especifiación IDL (ejemplo) Cliente / servidor IRC: Definiciones IDL –Broadcaster.idlBroadcaster.idl –Receiver.idlReceiver.idl Interfaces Java –Broadcaster_impl.javaBroadcaster_impl.java –Receiver_impl.javaReceiver_impl.java Interfaces C++/Xwindows –Broadcaster_impl.cppBroadcaster_impl.cpp –Receiver_impl.java y X11/Receiver_impl.cppReceiver_impl.javaReceiver_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. 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
13
Tipos de datos Tipos básicos: –Enteros: shortlonglong long unsigned shortunsigned longunsigned long long –Coma flotante: floatdoublelong double –Carácter: charwchar –Booleano: boolean –Octal: octet –Cualquier tipo básico: any
14
Tipos de datos Tipos de plantilla: –Cadena: stringwstring –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 ] tipo identificador parámetros [ excepciones ] Atributos: –Sentido único: oneway Parámetros: ( [ atributo tipo identificador [,... ] ] ) –Atributos: inoutinout Excepciones: raises ( excepción [, excepción ] )
16
Otras declaraciones Constantes: const tipo identificador = expresión ; Atributos: [ readonly ] attribute tipo ident [,... ] ] ; Excepciones: exception ident { [ 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 module CORBA { interface ORB { typedef sequence 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:
19
Ejemplo 2 module CORBA { interface ORB { typedef string ObjectId; typedef sequence ObjectIdList; exception InvalidName {}; ObjectList list_initial_services (); Object resolve_initial_refernces (in ObjectId identifier) raises (InvalidName);} } –Referencia niciación de un objeto:
20
Ejemplo 3 module CORBA { typedef unsigned long PolicyType; interface Policy { readonly attribute PolicyType policy_type; Policy copy (); void destroy (); } typedef sequence PolicyList; } –Política de seguridad de un objeto:
21
Ejemplo 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 DomaninManagerList;} –Gestión de dominios:
22
ORBs comerciales Comparativa de características de los núcleos. Comparativa de características de los núcleos. Comparativa de los servicios CORBA ofrecidos. Comparativa de los servicios CORBA ofrecidos. Comparativa de las plataformas en que pueden ejecutarse. 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/gui de/idl/index.html Programas CORBA: http://www.infosys.tuwien.ac.at/Research/Co rba/software.html
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.