Arquitectura de agente de solicitud de objeto común


La Common Object Request Broker Architecture ( CORBA ) es un estándar definido por Object Management Group (OMG) diseñado para facilitar la comunicación de los sistemas que se implementan en diversas plataformas. CORBA permite la colaboración entre sistemas en diferentes sistemas operativos, lenguajes de programación y hardware informático. CORBA utiliza un modelo orientado a objetos, aunque los sistemas que utilizan CORBA no tienen que estar orientados a objetos. CORBA es un ejemplo del paradigma de objetos distribuidos .

CORBA permite la comunicación entre software escrito en diferentes idiomas y que se ejecuta en diferentes computadoras. Los detalles de implementación de sistemas operativos, lenguajes de programación y plataformas de hardware específicos se eliminan de la responsabilidad de los desarrolladores que usan CORBA. CORBA normaliza la semántica de llamada a método entre objetos de aplicación que residen en el mismo espacio de direcciones (aplicación) o en espacios de direcciones remotos (mismo host o host remoto en una red). La versión 1.0 fue lanzada en octubre de 1991.

CORBA usa un lenguaje de definición de interfaz (IDL) para especificar las interfaces que los objetos presentan al mundo exterior. CORBA luego especifica un mapeo de IDL a un lenguaje de implementación específico como C ++ o Java . Existen asignaciones estándar para Ada , C , C ++ , C ++ 11 , COBOL , Java , Lisp , PL / I , Object Pascal , Python , Ruby y Smalltalk . Existen asignaciones no estándar para C # , Erlang ,Perl , Tcl y Visual Basic implementados por intermediarios de solicitud de objetos (ORB) escritos para esos lenguajes.

La especificación CORBA dicta que habrá un ORB a través del cual una aplicación interactuaría con otros objetos. Así es como se implementa en la práctica:

Algunas asignaciones IDL son más difíciles de usar que otras. Por ejemplo, debido a la naturaleza de Java, el mapeo IDL-Java es bastante sencillo y hace que el uso de CORBA sea muy simple en una aplicación Java. Esto también se aplica al mapeo de IDL a Python. El mapeo de C ++ requiere que el programador aprenda los tipos de datos anteriores a la biblioteca de plantillas estándar de C ++ (STL). Por el contrario, el mapeo de C ++ 11 es más fácil de usar, pero requiere un uso intensivo de STL. Dado que el lenguaje C no está orientado a objetos, el mapeo de IDL a C requiere que un programador de C emule manualmente las características orientadas a objetos.

Para construir un sistema que use o implemente una interfaz de objetos distribuidos basada en CORBA, un desarrollador debe obtener o escribir el código IDL que define la interfaz orientada a objetos a la lógica que el sistema usará o implementará. Por lo general, una implementación de ORB incluye una herramienta llamada compilador IDL que traduce la interfaz IDL al idioma de destino para su uso en esa parte del sistema. Luego, un compilador tradicional compila el código generado para crear los archivos de objetos enlazables para su uso en la aplicación. Este diagrama ilustra cómo se utiliza el código generado dentro de la infraestructura CORBA: