La arquitectura CORBA ( Common Object Request Broker Architecture ) es un estándar definido por el Object Management Group (OMG) diseñado para facilitar la comunicación entre sistemas implementados en diversas plataformas . CORBA permite la colaboración entre sistemas con diferentes sistemas operativos, lenguajes de programación y hardware. Si bien CORBA utiliza un modelo orientado a objetos, los sistemas que lo emplean no necesariamente tienen que serlo. CORBA es un ejemplo del paradigma de objetos distribuidos .
Aunque tuvo cierta popularidad a mediados y finales de la década de 1990, la complejidad, la inconsistencia y los altos costos de licencia de CORBA la han relegado a ser una tecnología de nicho. [ 1 ]
Descripción general
CORBA permite la comunicación entre software escrito en distintos lenguajes y que se ejecuta en diferentes ordenadores. Los desarrolladores que utilizan CORBA no tienen que preocuparse por los detalles de implementación propios de los sistemas operativos, lenguajes de programación y plataformas de hardware. CORBA normaliza la semántica de las llamadas a métodos entre objetos de aplicación que residen en el mismo espacio de direcciones (aplicación) o en espacios de direcciones remotos (mismo host o un host remoto en una red). La versión 1.0 se publicó en octubre de 1991.
CORBA utiliza un lenguaje de definición de interfaz (IDL) para especificar las interfaces que los objetos presentan al mundo exterior. A continuación, CORBA especifica una asignación 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 , implementadas por agentes de solicitud de objetos (ORB) escritos para esos lenguajes. Las versiones de IDL han cambiado significativamente, con anotaciones que reemplazan algunas directivas pragma.
La especificación CORBA establece que debe existir un ORB a través del cual una aplicación interactuará con otros objetos. Así es como se implementa en la práctica:
- La aplicación inicializa el ORB y accede a un adaptador de objetos interno , que mantiene aspectos como el conteo de referencias , las políticas de instanciación de objetos (y referencias) y las políticas de ciclo de vida de los objetos.
- El adaptador de objetos se utiliza para registrar instancias de las clases de código generadas . Estas clases son el resultado de compilar el código IDL del usuario, que traduce la definición de interfaz de alto nivel a una base de clases específica del sistema operativo y del lenguaje para su uso por la aplicación del usuario. Este paso es necesario para garantizar la semántica de CORBA y proporcionar un proceso de usuario sencillo para interactuar con la infraestructura CORBA.
Algunas asignaciones de IDL son más difíciles de usar que otras. Por ejemplo, debido a la naturaleza de Java, la asignación de IDL a Java es bastante sencilla y facilita enormemente el uso de CORBA en una aplicación Java. Lo mismo ocurre con la asignación de IDL a Python. La asignación a C++ requiere que el programador aprenda tipos de datos anteriores a la Biblioteca de Plantillas Estándar (STL) de C++. Por el contrario, la asignación a C++11 es más fácil de usar, pero requiere un uso intensivo de la STL. Dado que el lenguaje C no es orientado a objetos, la asignación de IDL a C exige que el programador de C emule manualmente las características de la programación orientada a objetos.
Para construir un sistema que utilice 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 para la lógica que el sistema utilizará o implementará. Normalmente, una implementación ORB incluye una herramienta llamada compilador IDL que traduce la interfaz IDL al lenguaje de destino para su uso en esa parte del sistema. Un compilador tradicional compila el código generado para crear los archivos de objetos enlazables que se utilizarán en la aplicación. Este diagrama ilustra cómo se utiliza el código generado dentro de la infraestructura CORBA:

Esta figura ilustra el paradigma de alto nivel para las comunicaciones remotas entre procesos mediante CORBA. La especificación CORBA aborda además la tipificación de datos, las excepciones, los protocolos de red, los tiempos de espera de comunicación, etc. Por ejemplo: Normalmente, el lado del servidor tiene el Adaptador de Objeto Portátil (POA) que redirige las llamadas a los servidores locales o (para equilibrar la carga) a los otros servidores. La especificación CORBA (y por lo tanto esta figura) deja varios aspectos del sistema distribuido a la aplicación para que los defina, incluyendo la duración de los objetos (aunque las aplicaciones tienen a su disposición semánticas de conteo de referencias), la redundancia/conmutación por error, la gestión de memoria, el equilibrio de carga dinámico y los modelos orientados a la aplicación, como la separación entre la semántica de visualización/datos/control (por ejemplo, véase Modelo-Vista-Controlador ), etc.
Además de proporcionar a los usuarios una especificación de llamada a procedimiento remoto (RPC) independiente del lenguaje y de la plataforma, CORBA define servicios de uso común como transacciones y seguridad, eventos, tiempo y otros modelos de interfaz específicos del dominio.
Historial de versiones
Esta tabla presenta el historial de versiones del estándar CORBA. [ 2 ] [ 3 ] [ 4 ]
Tenga en cuenta que los cambios en IDL han avanzado, con anotaciones (por ejemplo, @unit, @topic) que reemplazan algunas directivas pragma.
Servicio
Un servidor es el destino de la invocación que contiene métodos para gestionar las invocaciones de métodos remotos . En las versiones más recientes de CORBA, el objeto remoto (en el lado del servidor) se divide en el objeto (que está expuesto a las invocaciones remotas) y el servidor (al que la parte anterior reenvía las llamadas a los métodos) . Puede haber un servidor por objeto remoto , o el mismo servidor puede admitir varios (posiblemente todos) los objetos, asociados con el Adaptador de Objeto Portátil dado . El servidor para cada objeto se puede configurar o encontrar "una vez y para siempre" (activación del servidor) o elegir dinámicamente cada vez que se invoca el método en ese objeto (ubicación del servidor). Tanto el localizador como el activador del servidor pueden reenviar las llamadas a otro servidor. En conjunto, este sistema proporciona un medio muy potente para equilibrar la carga, distribuyendo las solicitudes entre varias máquinas. En los lenguajes orientados a objetos, tanto el objeto remoto como su servidor son objetos desde el punto de vista de la programación orientada a objetos.
La encarnación es el acto de asociar un servidor a un objeto CORBA para que pueda atender solicitudes. La encarnación proporciona una forma concreta de servidor para el objeto CORBA virtual. La activación y la desactivación se refieren únicamente a objetos CORBA, mientras que los términos encarnación y eterealización se refieren a servidores. Sin embargo, la vida útil de los objetos y los servidores es independiente. Siempre se encarna un servidor antes de llamar a activate_object(), pero también es posible lo contrario: create_reference()activa un objeto sin encarnar un servidor, y la encarnación del servidor se realiza posteriormente bajo demanda con un Administrador de Servidores.
ElEl Adaptador de Objeto Portátil (POA) es el objeto CORBA responsable de dividir el controlador de invocación remota del servidor en elobjetoy suservidor auxiliar. El objeto remoto se expone para las invocaciones remotas, mientras que el servidor auxiliar contiene los métodos que gestionan las solicitudes. El servidor auxiliar para cada objeto se puede seleccionar de forma estática (una sola vez) o dinámica (para cada invocación remota), permitiendo en ambos casos el reenvío de la llamada a otro servidor.
En el lado del servidor, los POA forman una estructura de árbol, donde cada POA es responsable de uno o más objetos atendidos. Las ramas de este árbol pueden activarse/desactivarse de forma independiente, tener códigos distintos para la ubicación o activación del servidor y políticas de gestión de solicitudes diferentes.
Características
A continuación se describen algunas de las formas más importantes en que se puede utilizar CORBA para facilitar la comunicación entre objetos distribuidos.
Objetos por referencia
Esta referencia se obtiene mediante una URL ( Localizador Uniforme de Recursos ) convertida a cadena de texto, una búsqueda en el Servicio de Nombres (similar al Sistema de Nombres de Dominio (DNS)) o se pasa como parámetro de un método durante una llamada.
Las referencias a objetos son objetos ligeros que coinciden con la interfaz del objeto real (remoto o local). Las llamadas a métodos en la referencia dan como resultado llamadas subsiguientes al ORB y el bloqueo del hilo mientras se espera una respuesta, éxito o fracaso. Los parámetros, los datos de retorno (si los hay) y los datos de excepción son serializados internamente por el ORB según el lenguaje local y la asignación del sistema operativo.
Datos por valor
El lenguaje de definición de interfaz CORBA proporciona la definición de comunicación entre objetos, independiente del lenguaje y del sistema operativo. Los objetos CORBA se pasan por referencia, mientras que los datos (enteros, números decimales, estructuras, enumeraciones, etc.) se pasan por valor. La combinación de objetos por referencia y datos por valor permite garantizar una tipificación de datos precisa durante la compilación de clientes y servidores, a la vez que se conserva la flexibilidad inherente al entorno CORBA.
Objetos por valor (OBV)
Además de los objetos remotos, CORBA y RMI-IIOP definen el concepto de OBV y Valuetypes. El código dentro de los métodos de los objetos Valuetype se ejecuta localmente por defecto. Si el OBV se ha recibido del lado remoto, el código necesario debe ser conocido de antemano por ambos lados o descargarse dinámicamente del remitente. Para que esto sea posible, el registro que define el OBV contiene la base de código, que es una lista de URL separadas por espacios desde donde se debe descargar este código. El OBV también puede tener métodos remotos.
Modelo de componentes CORBA (CCM)
El modelo de componentes CORBA (CCM) es una adición a la familia de definiciones CORBA. [ 5 ] Se introdujo con CORBA 3 y describe un marco de aplicación estándar para componentes CORBA. Aunque no depende de los " Enterprise Java Beans (EJB) dependientes del lenguaje", es una forma más general de EJB, que proporciona cuatro tipos de componentes en lugar de los dos que define EJB. Proporciona una abstracción de entidades que pueden proporcionar y aceptar servicios a través de interfaces con nombre bien definidas llamadas puertos .
El CCM cuenta con un contenedor de componentes donde se pueden implementar los componentes de software. Este contenedor ofrece un conjunto de servicios que los componentes pueden utilizar. Estos servicios incluyen (entre otros) notificaciones , autenticación , persistencia y procesamiento de transacciones . Estos son los servicios más utilizados en cualquier sistema distribuido y, al trasladar la implementación de estos servicios de los componentes de software al contenedor de componentes, la complejidad de los componentes se reduce drásticamente.
interceptores portátiles
Los interceptores portátiles son los "ganchos" que utilizan CORBA y RMI-IIOP para mediar en las funciones más importantes del sistema CORBA. El estándar CORBA define los siguientes tipos de interceptores:
- Los interceptores IOR median en la creación de las nuevas referencias a los objetos remotos presentados por el servidor actual.
- Los interceptores de cliente suelen gestionar las llamadas a métodos remotos en el lado del cliente (quien realiza la llamada). Si el objeto Servant existe en el mismo servidor donde se invoca el método, también gestiona las llamadas locales.
- Los interceptores del servidor gestionan las llamadas a métodos remotos en el lado del servidor (controlador).
Los interceptores pueden adjuntar información específica a los mensajes que se envían y a los IOR que se crean. Esta información puede ser leída posteriormente por el interceptor correspondiente en el lado remoto. Los interceptores también pueden generar excepciones de reenvío, redirigiendo la solicitud a otro destino.
Protocolo general InterORB (GIOP)
GIOP es un protocolo abstracto mediante el cual se comunican los intermediarios de solicitudes de objetos (ORB). El Object Management Group (OMG) mantiene los estándares asociados con el protocolo . La arquitectura GIOP proporciona varios protocolos concretos, entre ellos:
- Protocolo InterORB de Internet (IIOP) : El Protocolo InterORB de Internet es una implementación del GIOP para su uso en Internet y proporciona una correspondencia entre los mensajes GIOP y la capa TCP/IP .
- Protocolo SSL InterORB (SSLIOP) : SSLIOP es IIOP sobre SSL , que proporciona cifrado y autenticación .
- Protocolo InterORB de Hipertexto (HTIOP) : HTIOP es IIOP sobre HTTP , que proporciona una omisión transparente del proxy.
- IOP comprimido (ZIOP) : una versión comprimida de GIOP que reduce el uso de ancho de banda.
VMCID (ID del conjunto de códigos menores del proveedor)
Cada excepción estándar de CORBA incluye un código secundario para designar la subcategoría de la excepción. Los códigos de excepción secundarios son de tipo unsigned long y constan de un "Vendor Minor Codeset ID" (VMCID) de 20 bits, que ocupa los 20 bits de orden superior, y el código secundario propiamente dicho, que ocupa los 12 bits de orden inferior.
Los códigos menores para las excepciones estándar están precedidos por el VMCID asignado a OMG, definido como la constante larga sin signo CORBA::OMGVMCID, que tiene el VMCID asignado a OMG ocupando los 20 bits de orden superior. Los códigos de excepción menores asociados con las excepciones estándar que se encuentran en la Tabla 3-13 en la página 3-58 se combinan mediante una operación OR con OMGVMCID para obtener el valor del código menor que se devuelve en la estructura ex_body. [ 6 ]
Dentro de un espacio asignado por el proveedor, la asignación de valores a los códigos secundarios queda a criterio del proveedor. [ 7 ] [ 8 ]
Los VMCID 0 y 0xfffff están reservados para uso experimental. Los VMCID OMGVMCID [ 9 ] y del 1 al 0xf están reservados para uso de OMG. [ 10 ]
Ubicación de Corba (CorbaLoc)
Corba Location (CorbaLoc) se refiere a una referencia de objeto en formato de cadena para un objeto CORBA que se parece a una URL.
Todos los productos CORBA deben admitir dos URL definidas por OMG: " corbaloc: " y " corbaname: ". El propósito de estas es proporcionar una forma legible y editable para especificar la ubicación donde se puede obtener un IOR.
A continuación se muestra un ejemplo de corbaloc:
- corbaloc::160.45.110.41:38693/StandardNS/NameServer-POA/_root
Un producto CORBA puede admitir opcionalmente los formatos " http: ", " ftp: " y " file: ". Estos formatos proporcionan detalles sobre cómo descargar un IOR en formato de cadena (o, recursivamente, descargar otra URL que eventualmente proporcionará un IOR en formato de cadena). Algunos ORB ofrecen formatos adicionales que son propietarios de dicho ORB.
Beneficios
Entre las ventajas de CORBA se incluyen la independencia del lenguaje y del sistema operativo, la ausencia de implementaciones vinculadas a la tecnología, una fuerte tipificación de datos, un alto nivel de capacidad de ajuste y la ausencia de las complejidades de las transferencias de datos distribuidas.
Independencia lingüística
CORBA se diseñó para liberar a los ingenieros de las limitaciones que implica vincular sus diseños a un lenguaje de programación específico. Actualmente, existen numerosos lenguajes compatibles con diversos proveedores de CORBA, siendo Java y C++ los más populares. También existen implementaciones para C++11, C-only, Smalltalk, Perl, Ada, Ruby y Python, entre otras.
Históricamente, Java admitía CORBA como parte de su biblioteca estándar , en el paquete org.omg.CORBA.*. Estos fueron posteriormente descontinuados en Java 9 y eliminados en Java 11. [ 11 ]
Independencia del sistema operativo
El diseño de CORBA está pensado para ser independiente del sistema operativo. CORBA está disponible en Java (independiente del sistema operativo), así como de forma nativa para Linux/Unix, Windows, Solaris, OS X, OpenVMS, HPUX, Android, LynxOS, VxWorks, ThreadX, INTEGRITY y otros.
Libertad de las tecnologías
Una de las principales ventajas implícitas es que CORBA proporciona un entorno neutral para que los ingenieros puedan estandarizar las interfaces entre diversos sistemas, tanto nuevos como heredados. Al integrar C, C++, Object Pascal, Java, Fortran, Python y cualquier otro lenguaje o sistema operativo en un único modelo de diseño de sistema coherente, CORBA facilita la estandarización y permite que equipos dispares desarrollen sistemas y pruebas unitarias que posteriormente se pueden integrar en un sistema completo. Esto no elimina la necesidad de tomar decisiones básicas de ingeniería de sistemas, como la gestión de hilos, la sincronización, el ciclo de vida de los objetos, etc. Estas cuestiones son inherentes a cualquier sistema, independientemente de la tecnología. CORBA permite normalizar los elementos del sistema en un único modelo de sistema coherente.
Por ejemplo, el diseño de una arquitectura multicapa se simplifica mediante el uso de Java Servlets en el servidor web y diversos servidores CORBA que contienen la lógica de negocio y gestionan los accesos a la base de datos. Esto permite modificar la implementación de la lógica de negocio, mientras que los cambios en la interfaz se gestionan como en cualquier otra tecnología. Por ejemplo, una base de datos gestionada por un servidor puede modificar su esquema para optimizar el uso del disco o el rendimiento (o incluso cambiar de proveedor de base de datos por completo), sin afectar a las interfaces externas. Al mismo tiempo, el código heredado de C++ puede comunicarse con el código heredado de C/Fortran y el código de la base de datos Java, y proporcionar datos a una interfaz web.
Tipificación de datos
CORBA ofrece tipado de datos flexible, por ejemplo, el tipo de dato "ANY". Además, garantiza un tipado de datos estrechamente acoplado, lo que reduce los errores humanos. En situaciones donde se intercambian pares nombre-valor, es posible que un servidor devuelva un número en lugar de una cadena. El lenguaje de definición de interfaz de CORBA proporciona el mecanismo para asegurar que el código del usuario cumpla con los nombres de los métodos, los tipos de retorno y de parámetros, y las excepciones.
Alta capacidad de ajuste
Muchas implementaciones (por ejemplo, ORBexpress (implementación en Ada, C++ y Java) [ 12 ] y OmniORB (implementación de código abierto en C++ y Python)) [ 13 ] ofrecen opciones para ajustar las funciones de gestión de conexiones y subprocesos. No todas las implementaciones de ORB ofrecen las mismas funciones.
Libertad respecto a los detalles de la transferencia de datos
Al gestionar conexiones y subprocesos de bajo nivel, CORBA proporciona un alto nivel de detalle en las condiciones de error. Esto se define en el conjunto de excepciones estándar de CORBA y en el conjunto de excepciones extendidas específicas de la implementación. Mediante las excepciones, la aplicación puede determinar si una llamada falló por motivos como "Problema menor, inténtelo de nuevo", "El servidor no está disponible" o "La referencia no tiene sentido". La regla general es: si no se recibe una excepción, significa que la llamada al método se completó correctamente. Esta es una característica de diseño muy potente.
Compresión
CORBA organiza sus datos en formato binario y admite compresión. IONA, Remedy IT y Telefónica han trabajado en una extensión del estándar CORBA que ofrece compresión. Esta extensión se llama ZIOP y ahora es un estándar oficial de OMG.
Problemas y críticas
Aunque CORBA aportó mucho en la forma en que se escribía el código y se construía el software, ha sido objeto de críticas. [ 14 ]
Gran parte de las críticas a CORBA se deben a implementaciones deficientes del estándar, más que a deficiencias del estándar en sí. Algunos de los fallos del estándar se debieron al proceso de creación de la especificación CORBA y a las concesiones inherentes a la política y los negocios que implica la elaboración de un estándar común con múltiples implementadores competidores.
Incompatibilidades de implementación inicial
Las especificaciones iniciales de CORBA definían únicamente el IDL, no el formato de transmisión. Esto significaba que la compatibilidad del código fuente era la mejor disponible durante varios años. Con CORBA 2 y versiones posteriores, este problema se resolvió.
Transparencia de ubicación
La noción de transparencia de ubicación de CORBA ha sido criticada; es decir, que los objetos que residen en el mismo espacio de direcciones y son accesibles con una simple llamada a una función se tratan igual que los objetos que residen en otro lugar (diferentes procesos en la misma máquina o en diferentes máquinas). Este es un defecto de diseño fundamental, [ 15 ] ya que hace que todo acceso a objetos sea tan complejo como el caso más complejo (es decir, una llamada de red remota con una amplia clase de fallos que no son posibles en las llamadas locales). También oculta las diferencias ineludibles entre las dos clases, lo que hace imposible que las aplicaciones seleccionen una estrategia de uso apropiada (es decir, una llamada conLa latencia de 1 μs y el retorno garantizado se utilizarán de forma muy diferente a una llamada conLatencia de 1 s con posible fallo de transporte, en el que el estado de entrega es potencialmente desconocido y podría tardar30 segundos para que se agote el tiempo.
Deficiencias de diseño y proceso
La creación del estándar CORBA también se cita a menudo por su proceso de diseño por comité . No existía un proceso para arbitrar entre propuestas contradictorias ni para decidir la jerarquía de problemas a abordar. Por lo tanto, el estándar se creó mediante la unión de las características de todas las propuestas, sin tener en cuenta su coherencia. [ 16 ] Esto hizo que la especificación fuera compleja, costosa de implementar por completo y, con frecuencia, ambigua.
Un comité de diseño compuesto por una mezcla de proveedores de implementación y clientes creó un conjunto diverso de intereses. Esta diversidad dificultó la creación de un estándar coherente. Los estándares y la interoperabilidad aumentaron la competencia y facilitaron la migración de clientes entre implementaciones alternativas. Esto provocó muchas luchas políticas dentro del comité y frecuentes lanzamientos de revisiones del estándar CORBA que algunos implementadores de ORB se aseguraron de que fueran difíciles de usar sin extensiones propietarias. [ 14 ] Los proveedores de CORBA menos éticos fomentaron la dependencia del cliente y obtuvieron buenos resultados a corto plazo. Con el tiempo, los proveedores de ORB que fomentan la portabilidad ganaron cuota de mercado.
Problemas con las implementaciones
A lo largo de su historia, CORBA se ha visto afectado por deficiencias en implementaciones deficientes de ORB. Lamentablemente, muchos de los artículos que critican a CORBA como estándar son simplemente críticas a una implementación particularmente mala de ORB de CORBA.
CORBA es un estándar integral con muchas características. Pocas implementaciones intentan implementar todas las especificaciones, [ 16 ] y las implementaciones iniciales fueron incompletas o inadecuadas. Como no había requisitos para proporcionar una implementación de referencia, los miembros tenían libertad para proponer características que nunca se probaron en cuanto a su utilidad o implementabilidad. Las implementaciones se vieron aún más obstaculizadas por la tendencia general del estándar a ser prolijo y la práctica común de llegar a un compromiso adoptando la suma de todas las propuestas presentadas, lo que a menudo creaba API incoherentes y difíciles de usar, incluso si las propuestas individuales eran perfectamente razonables.
En el pasado, era muy difícil conseguir implementaciones robustas de CORBA, pero ahora son mucho más fáciles de encontrar. Algunas implementaciones mal diseñadas resultaron ser complejas, lentas, incompatibles e incompletas. Empezaron a aparecer versiones comerciales robustas, pero a un precio elevado. A medida que se dispuso de implementaciones gratuitas de buena calidad, las deficientes implementaciones comerciales desaparecieron rápidamente.
Cortafuegos
CORBA (o más precisamente, GIOP ) no está vinculado a ningún protocolo de comunicación específico. Una especialización de GIOP es el Protocolo Inter-ORB de Internet (IIOP). IIOP utiliza conexiones TCP/IP directas para transmitir datos.
Si el cliente se encuentra detrás de un firewall muy restrictivo o un entorno de servidor proxy transparente que solo permite conexiones HTTP al exterior a través del puerto 80, la comunicación puede resultar imposible, a menos que el servidor proxy en cuestión también permita el método HTTP CONNECT o las conexiones SOCKS . En el pasado, incluso era difícil obligar a las implementaciones a usar un único puerto estándar; en su lugar, solían elegir varios puertos aleatorios. Actualmente, los ORB actuales presentan estas deficiencias. Debido a estas dificultades, algunos usuarios han optado cada vez más por los servicios web en lugar de CORBA. Estos se comunican mediante XML / SOAP a través del puerto 80, que normalmente se deja abierto o se filtra mediante un proxy HTTP dentro de la organización para la navegación web a través de HTTP. Sin embargo, las implementaciones recientes de CORBA admiten SSL y se pueden configurar fácilmente para funcionar en un solo puerto. Algunos ORB, como TAO , omniORB y JacORB, también admiten GIOP bidireccional, lo que le da a CORBA la ventaja de poder usar la comunicación de devolución de llamada en lugar del enfoque de sondeo característico de las implementaciones de servicios web. Además, la mayoría de los cortafuegos modernos son compatibles con GIOP e IIOP y, por lo tanto, son compatibles con CORBA.
Véase también
Tecnologías de software basadas en componentes
- Infraestructura de lenguaje común : especificación abierta para entornos de ejecución.
- Modelo de objetos componentes (COM) : tecnología de componentes de software de Microsoft .
- Modelo de objetos de componentes distribuidos : software para la comunicación entre componentes de software (COM/DCOM distribuido).
- Bonobo (GNOME) : marco de componentes obsoleto para el entorno de escritorio gratuito GNOME.
- IBM System Object Model ( SOM ) – Marco de programación SOM y DSOM – Sistemas de componentes de IBM utilizados en OS/2 y AIX
- Motor de comunicaciones de Internet : marco para llamadas a procedimientos remotos (ICE)
- Plataforma Java, Edición Empresarial : conjunto de especificaciones que extienden las páginas de Java SE que muestran descripciones breves de los destinos de redireccionamiento (Java EE).
- Invocación remota de métodos en Java – Interfaz de programación de aplicaciones Java (Java RMI)
- Llamada a procedimiento remoto : Mecanismo que permite al software ejecutar un procedimiento remoto (RPC).
- Arquitectura de comunicaciones por software : marco de arquitectura abierta para radio definida por software (SCA).
- SOAP – Protocolo de mensajería para servicios web
- Motor de comunicaciones de Internet : marco para llamadas a procedimientos remotos.
Enlaces de lenguaje
- Interfaz binaria de la aplicación (ABI) : interfaz para el software definida en términos de acceso a código máquina dentro del proceso.
- Interfaz de programación de aplicaciones : conexión entre ordenadores o programas. Páginas que muestran breves descripciones de destinos de redirección : API.
- Convención de llamada : Mecanismo de llamadas a funciones en computadoras
- Interfaz de funciones externas : interfaz para llamar a funciones desde otros lenguajes de programación.
- Enlace de lenguaje : Interfaz que permite que un lenguaje de programación utilice una biblioteca escrita en otro.
Referencias
- "CORBA" . Actual . Especificación. OMG .
- ↑ Henning, Michi (1 de agosto de 2008). "El auge y la caída de CORBA" . Communications of the ACM . 51 (8). Association for Computing Machinery : 52–57 . doi : 10.1145/1378704.1378718 .
- ↑ "Historia de CORBA" . Object Management Group . Consultado el 12 de marzo de 2017 .
- ↑ "Historia de CORBA" . Object Management Group . Consultado el 4 de junio de 2017 .
- ↑ "OMG IDL Corba Version" . Object Management Group . Consultado el 4 de diciembre de 2023 .
- ↑ "El modelo de componentes CORBA" . Dr. Dobb's Journal . 1 de septiembre de 2004. Consultado el 13 de marzo de 2017 .
- ↑ Véase la Sección 3.17.1, "Definiciones de excepciones estándar", en la página 3-52 y la Sección 3.17.2, "Códigos de excepciones menores estándar", en la página 3-58.
- ↑ Los proveedores pueden solicitar la asignación de VMCID enviando un correo electrónico a tagrequest
omg.org . - ↑ Puede encontrar una lista de los VMCID asignados actualmente en el sitio web de OMG en: https://www.omg.org/cgi-bin/doc?vendor-tags
- ↑ Sección 3.17.1, "Definiciones de excepciones estándar", en la página 3-52
- ↑ El Agente de Solicitudes de Objetos Comunes: Arquitectura y Especificación (CORBA 2.3)
- ↑ "java.corba (Java SE 10 y JDK 10)" . docs.oracle.com . Consultado el 10 de octubre de 2025 .
- ↑ "ORBexpress: Una visión general" .
- ↑ "omniORB: ORBE CORBA gratuito" . Consultado el 10 de octubre de 2024 .
- 1 2 Chappel, David (mayo de 1998). "Problemas con CORBA" . davidchappel.com. Archivado del original el 3 de diciembre de 2012. Recuperado el 10 de octubre de 2024 .
- ↑ Waldo, Jim; Geoff Wyant; Ann Wollrath; Sam Kendall (noviembre de 1994). "Una nota sobre computación distribuida" (PDF) . Sun Microsystem Laboratories . Archivado (PDF) del original el 10 de octubre de 2022. Recuperado el 10 de octubre de 2024 .
- 1 2 Henning, Michi (30 de junio de 2006). "El auge y la caída de CORBA" . ACM Queue . 4 (5). Association for Computing Machinery : 28–34 . doi : 10.1145/1142031.1142044 . S2CID 12103742 .
Lecturas adicionales
- Bolton, Fintan (2001). Pura Corba . Editorial Sams. ISBN 0-672-31812-1.
- Brose, Gerald; Vogel, Andreas; Duddy, Keith (25 de enero de 2001). Programación Java con CORBA . John Wiley & Sons. ISBN 0-471-37681-7.
- Harmon, Paul ; Morrissey, William (1996). The Object Technology Casebook . John Wiley & Sons. ISBN 0-471-14717-6.
- Hartman, Bret; Beznosov, Hartman; Vinoski, Steve; Flinn, Donald (20 de abril de 2001). Seguridad empresarial con EJB y CORBA . John Wiley & Sons. ISBN 0-471-40131-5.
- Henning, Michi; Vinoski, Steve (1999). Programación avanzada de CORBA con C++ . Addison-Wesley. ISBN 0-201-37927-9.
- Korthaus, Axel; Schader, Martín; Aleksy, Markus (22 de junio de 2005). Implementación de Sistemas Distribuidos con Java y CORBA . Saltador. ISBN 3-540-24173-6Archivado del original el 31 de octubre de 2005. Consultado el 23 de junio de 2005 .
- Mowbray, Thomas J.; Malveau, Raphael C. (1997). Patrones de diseño CORBA . John Wiley & Sons. ISBN 0-471-15882-8.
- Mowbray, Thomas J.; Zahavi, Ron (1995). The Essential Corba: System Integration Using Distributed Objects . John Wiley & Sons. ISBN 0-471-10611-9.
- Orfali, Robert (1996). La guía esencial para la supervivencia del cliente/servidor . John Wiley & Sons. ISBN 0-471-15325-7.
- Orfali, Robert; Harkey, Dan; Edwards, Jeri (1997). CORBA instantáneo . John Wiley e hijos. ISBN 0-471-18333-4.
- Orfali, Robert; Harkey, Dan; Edwards, Jeri (1996). Guía esencial de supervivencia para objetos distribuidos . John Wiley & Sons. ISBN 0-471-12993-3.
- Orfali, Robert; Harkey, Dan (1998). Programación cliente/servidor con JAVA y CORBA . John Wiley & Sons. ISBN 0-471-24578-X.
- Rosen, Michael ; Curtis, David (13 de octubre de 1998). Integración de aplicaciones CORBA y COM . John Wiley & Sons. ISBN 0-471-19827-7.
- Rosenberger, Jeremy L. (1998). Aprenda CORBA en 14 días . Sams Publishing. ISBN 0-672-31208-5.
- Schettino, Juan; Hohman, Robin S.; O'Hara, Liz (1998). CORBA para tontos . Mentes hambrientas. ISBN 0-7645-0308-1.
- Siegel, Jon (27 de abril de 2000). CORBA 3 - Fundamentos y programación . John Wiley & Sons. ISBN 0-471-29518-3.
- Siegel, Jon (7 de mayo de 2001). Quick CORBA 3. John Wiley & Sons. ISBN 0-471-38935-8.
- Slama, Dirk; Garbis, Jason; Russell, Perry (1999). Enterprise CORBA . Prentice Hall. ISBN 0-13-083963-9.
- Zahavi, Ron (2000). Integración de aplicaciones empresariales con CORBA: Soluciones basadas en componentes y en la web . John Wiley & Sons. ISBN 0-471-32720-4.
Enlaces externos
- Página oficial de componentes OMG CORBA
- Página no oficial del modelo de componentes CORBA
- Comparación de IDL con C++ y de IDL con C++11
- CORBA: Se fue, pero (esperemos) no será olvidado.
- Especificación OMG XMI
- Arquitectura de agente de solicitud de objetos comunes
- Ingeniería de software basada en componentes
- GNOMO
- Comunicación entre procesos
- Normas ISO
- Programación orientada a objetos