martes, 23 de abril de 2013

4.8 ASIMILACION DE UNA IMPLEMENTACION DE CORBA: VISIBROKER FOR JAVA


4.8 ASIMILACION DE UNA IMPLEMENTACION DE CORBA: VISIBROKER FOR JAVA
Tener una visión global de las tecnologías de  integración de aplicaciones heterogéneas y su aplicación Centrarse en un caso de estudio: CORBA y  Servicios Web con Java,  Aprender lo esencial de ambos frameworks  Aprender técnicas de diseño (patrones)
n ¡ Reusables con otras tecnologías !
n Aprender técnicas de implementación (idiomas)
n Realización de prácticas para consolidar  conocimientos
Los objetos CORBA se describen mediante interfaces IDL
La OMG IDL Interface Definition Language compatible con la especificación de las interfaces de los objetos. Una interfaz de objeto indica las operaciones que el objeto admite, pero no cómo se implementan.Es decir, en IDL no hay manera de declarar el estado del objeto y los algoritmos. La implementación de un objeto CORBA se presenta en un lenguaje de programación estándar, tales como el lenguaje de programación Java o C + +. Una interfaz especifica el contrato entre el código que utiliza el objeto y el código de la aplicación del objeto. Los clientes sólo dependen de la interfaz.
Interfaces IDL del lenguaje de programación neutral. IDL define enlaces de lenguaje de muchos lenguajes de programación diferentes. Esto permite que un implementador objeto de elegir el lenguaje de programación adecuado para el objeto. Del mismo modo, permite que el desarrollador del cliente de elegir el lenguaje de programación adecuado y posiblemente diferentes para el cliente. En la actualidad, la OMG ha estandarizado en enlaces de lenguaje para el C, C + +, Java, Ada, COBOL, Smalltalk, Objective C, y los lenguajes de programación Lisp.
Así mediante el uso de OMG IDL, el siguiente puede ser descrita sin relación a cualquier lenguaje de programación:
Modularizados interfaces de objetos
Las operaciones y los atributos que un objeto admite
Las excepciones planteadas por la operación
Tipos de datos de un valor de retorno operación, sus parámetros y atributos de un objeto
Los tipos IDL datos son:
Tipos de datos básicos ( largo , corto , cadena , boya …)
Construidos los tipos de datos ( struct , union , enumeración , secuencia )
Referencias con tipo de objetos
La de cualquier tipo, un valor de tipo dinámico
Una vez más, IDL dice nada acerca de la implementación de objetos. Aquí está la interfaz IDL para los objetos de ejemplo de acciones:
El módulo define un ámbito de aplicación de estos nombres. Dentro del módulo, una estructura de datos Cita y una excepción desconocida se definen y utilizan a continuación en el archivo de interfaz. Elarchivo de interfaz se utiliza en la definición de la StockFactory interfaz. También tenga en cuenta que los parámetros de las operaciones están etiquetados con las palabras clave en , a , o INOUT . El depalabra clave indica que los datos se pasa del cliente al objeto. El cabo por palabra clave indica que los datos se devuelven desde el objeto hasta el cliente, y INOUT indica que los datos se pasan desde el cliente al objeto y luego se devuelve al cliente.
Declaraciones IDL se compilan con un compilador de IDL y se convierten en sus representaciones asociadas en los idiomas de destino de programación de acuerdo a la unión de lengua estándar. (Este curso utiliza el Java el lenguaje obligatorio en todos los ejemplos. Más tarde podrás ver el enlace de Java con más profundidad.)
De referencias a objetos y Solicitudes
Clientes emitir una solicitud de un objeto CORBA usando una referencia de objeto . Una referencia de objeto identifica el objeto distribuido que va a recibir la solicitud. Aquí hay un lenguaje de programación Java fragmento de código que se obtiene un archivo objeto de referencia y luego lo utiliza para obtener el precio actual de la población. Tenga en cuenta que el fragmento de código no utiliza directamente los tipos CORBA, sino que utiliza los tipos de Java que se han producido por el compilador de IDL a Java.
Foto theStock = … try { Cita current_quote = theStock.get_quote (); } Catch (Throwable e) { }
Las referencias a objetos se puede pasar todo el sistema de objetos distribuidos, es decir, como parámetros para las operaciones y se devuelve como resultados de las solicitudes. Por ejemplo, observe que el StockFactory interfaz define un create () operación que devuelve una instancia de un archivo . Aquí hay un cliente Java fragmento de código que envía una solicitud en el objeto de fábrica y recibe la referencia de archivo objeto resultante.
Fábrica de StockFactory = … Foto theStock = … try { theStock factory.create = ( “GII”, “Global Industries, Inc.”); } Catch (Throwable e) { }
Tenga en cuenta que la emisión de una petición en un objeto CORBA no es tan diferente de la emisión de una petición en un objeto de Java en un programa local. La principal diferencia es que los objetos CORBA pueden estar en cualquier lugar. El sistema CORBA proporciona transparencia de ubicación, lo que implica que el cliente no puede saber si la solicitud es un objeto en el mismo proceso, en la misma máquina, por el pasillo, o en todo el planeta.
Otra diferencia de un local de objetos de Java es que el tiempo de vida del objeto CORBA no está vinculado al proceso en el que el cliente se ejecuta, ni al proceso en el que se ejecuta el objeto CORBA. Las referencias a objetos persisten, sino que puede ser guardado como una cadena y recreado a partir de una cadena.
El siguiente código de Java convierte el archivo de referencia de objeto a una cadena:
Cadena stockString = orb.object_to_string (theStock);
La cadena puede ser almacenada o comunicada fuera del sistema de objetos distribuidos. Cualquier cliente puede convertir la cadena de nuevo a una referencia de objeto y emitir una solicitud en el objeto distribuido.
Este código Java convierte la cadena de texto a un archivo objeto de referencia:
org.omg.CORBA.Object obj = orb.string_to_object (stockString); Foto theStock = StockHelper.narrow (obj);
Tenga en cuenta que el tipo resultante de la string_to_object () método es objeto , no de archivo . La segunda línea se reduce el tipo de la referencia de objeto a partir de objetos de archivo . IDL es compatible con una jerarquía de interfaces, el estrecho () llamada al método es una operación en la jerarquía.
IDL sistema de tipos
Interfaces IDL se puede definir en términos de otras interfaces IDL. Usted ya vio a un archivo de interfaz que representa el comportamiento básico de un objeto de archivo.
Considere la posibilidad de otro módulo IDL:
ReportingObjects módulo { EventChannelFailure excepción {}; {interfaz de informes / / Recibe los eventos en modo de inserción CosEventComm :: PushSupplier push_events ( en CosEventComm :: PushConsumer consumidor) plantea (EventChannelFailure); / / Recibe los eventos en el modo de tracción CosEventComm :: PullSupplier pull_events ( en CosEventComm :: PullConsumer consumidor) plantea (EventChannelFailure); }; };
La presentación de informes interfaz es compatible con el registro de interés en los acontecimientos. (No te preocupes por los detalles de usar el servicio de sucesos CORBA.)
Teniendo en cuenta la definición del archivo de interfaz y un Informe de la interfaz, ahora es posible definir un nuevo ReportingStock interfaz en términos de presentación de informes y archivo .
ReportingStock interfaz: Presentación de informes, archivo { };
Un ReportingStock soporta todas las operaciones y atributos definidos por la presentación de informes de interfaz, así como todos los que se definen por el archivo de interfaz. El ReportingStock interfaz hereda el archivo de interfaz y la presentación de informes de la interfaz. Gráficamente esto se representa como:

Todas las interfaces CORBA heredan implícitamente el objeto de la interfaz. Todos ellos apoyan las operaciones definidas para el objeto . La herencia de objetos es implícita, no hay necesidad de declararlo.
Las referencias a objetos se escriben mediante interfaces IDL. En un programa en Java puede escribir una referencia de objeto a ser un ReportingStock .
ReportingStock theReportingStock;
Los clientes pueden pasar esta referencia de objeto a una operación esperando un supertipo. Por ejemplo, asumir que hay una EventManager interfaz que tiene un registro de operación que toma un objeto de referencia escrito por el Informe de la interfaz.
interfaz de EventManager { : anular la inscripción (en Reporting event_supplier); : };
La siguiente es una solicitud legal debido a que un ReportingStock es una presentación de informes .
EventManager gerente = … TheReportingStock ReportingStock = … manager-> registro (theReportingStock); / / Ok
Sin embargo, los siguientes no es un requerimiento legal debido a que un archivo no es una presentación de informes :
EventManager gerente = … Foto theStock = … manager-> registro (theStock); / / tipo de error
IDL las operaciones de tipo
Dado que las interfaces IDL pueden estar dispuestos en una jerarquía, un pequeño número de operaciones que se definen en la jerarquía. La estrecha () pone en funcionamiento una referencia de objeto a un tipo más específico:
org.omg.CORBA.Object obj = … Foto theStock = StockHelper.narrow (obj);
El is_a () la operación, determina si una referencia de objeto compatible con una interfaz en particular:
if (obj._is_a (StockHelper.id ()) …
El id () operación definida en la clase de ayuda devuelve un identificador de repositorio para la interfaz. La Identificación del repositorio es una cadena que representa la interfaz. Para el ejemplo de valores, la Identificación del repositorio es:
IDL: StockObjects o de archivo: 1.0
Finalmente, es posible ampliar un objeto de referencia, que se echó a un interfaz menos específica:
Foto theStock = theReportingStock;
No hay operaciones especiales para ampliar un objeto de referencia. Se lleva a cabo exactamente como en el lenguaje de programación Java.
Solicitar verificación de tipos
El compilador de IDL para el lenguaje de programación Java del lado del cliente genera los talones, lo que representa el objeto CORBA a nivel local en el lenguaje de programación Java. El código generado también representa en el lenguaje de programación Java de todas las interfaces IDL y tipos de datos utilizados para enviar las solicitudes. El código de cliente por lo tanto depende de la generada por el código de Java.

No hay comentarios:

Publicar un comentario