infraestructura IT
CORBA
Definición y propósito
- CORBA (Common Object Request Broker Architecture) es un estándar para sistemas distribuidos definido por el OMG (Object Management Group).
- Permite que objetos ubicados en diferentes procesos, lenguajes y plataformas se comuniquen de forma transparente.
- Se clasifica como Middleware, actuando como capa intermedia entre aplicaciones y sistemas operativos/red.
- Fue ampliamente adoptado en entornos empresariales complejos antes de la popularización de REST, SOAP y gRPC.
Arquitectura general
- Basada en el patrón cliente-servidor orientado a objetos.
- El núcleo es el ORB (Object Request Broker), responsable de:
- Localizar objetos remotos.
- Serializar y deserializar datos.
- Gestionar llamadas remotas como si fueran locales.
- Componentes principales:
- ORB
- Interfaces definidas en IDL
- Stubs y Skeletons
- Adaptadores de objetos (POA)
Object Request Broker (ORB)
- El ORB actúa como intermediario de comunicación.
- Funciones clave:
- Transparencia de ubicación.
- Independencia de lenguaje y plataforma.
- Gestión del ciclo de vida de objetos distribuidos.
- Detalles conceptuales:
- El cliente no conoce si el objeto está local o remoto.
- El ORB traduce llamadas a mensajes de red.
- Referencias:
- Object Request Broker - Wikipedia, la enciclopedia libre-Object_Request_Broker
- Middleware - Wikipedia, la enciclopedia libre-Middleware
IDL (Interface Definition Language)
- Lenguaje neutral usado para definir contratos entre cliente y servidor.
- Características:
- Independiente de lenguaje (Java, C++, Python, Ada, etc.).
- Describe métodos, tipos de datos y excepciones.
- Flujo típico:
- Definición en IDL
- Compilación IDL → generación de stubs/skeletons
- Implementación concreta en el lenguaje objetivo
- Relación directa con Java:
- Uso de Java IDL
- Integración nativa histórica en el JDK
- Referencia:
Flujo de comunicación
- Pasos generales:
- El cliente invoca un método del stub.
- El stub empaqueta la llamada.
- El ORB envía la petición al ORB remoto.
- El skeleton desempaqueta y llama al objeto real.
- La respuesta sigue el camino inverso.
- Transparencia:
- El desarrollador programa como si fuera una llamada local.
- La complejidad de red queda abstraída.
Lenguajes y plataformas soportadas
- Lenguajes comunes:
- java
- C++
- Python
- C
- Ada
- Plataformas:
- Sistemas UNIX
- Windows
- Mainframes
- Uso frecuente en sistemas heterogéneos heredados.
CORBA como middleware empresarial
- Utilizado en:
- Sistemas bancarios
- Telecomunicaciones
- Defensa y aeroespacial
- Integración de sistemas legacy
- Relación con productos empresariales:
- IBM Integration Bus 10.0.0-10.0topic=corba-common-object-request-broker-architecture
- Ventajas en su contexto histórico:
- Interoperabilidad real multi-lenguaje.
- Contratos estrictos.
- Alto rendimiento en redes internas.
Implementaciones y ecosistema
- Implementaciones conocidas:
- TAO (The ACE ORB)
- omniORB
- JacORB
- OpenORB
- Recursos y descargas:
- Free CORBA® Downloads
- Free CORBA® Downloads-corbadownloads.htm
- Desarrollo y mantenimiento moderno:
Seguridad en CORBA
- Mecanismos incluidos:
- CORBA Security Service
- Autenticación
- Autorización
- Cifrado a nivel de transporte
- Limitaciones:
- Configuración compleja.
- Difícil adaptación a modelos Zero Trust modernos.
Ventajas
- Interoperabilidad entre lenguajes y plataformas.
- Modelo fuertemente tipado.
- Alto rendimiento en entornos controlados.
- Adecuado para sistemas distribuidos complejos.
Limitaciones y declive
- Curva de aprendizaje elevada.
- Verbosidad y complejidad de configuración.
- Poco amigable para internet abierta.
- Desplazado por:
- SOAP
- REST
- gRPC
- Mensajería basada en eventos
Estado actual
- Considerado tecnología legacy, pero aún en producción.
- Uso predominante en:
- Sistemas críticos heredados.
- Infraestructuras que no pueden migrarse fácilmente.
- Relevante para:
- Mantenimiento
- Integración
- Auditorías técnicas
- Comprensión de arquitecturas distribuidas clásicas
CORBA – Casos de uso, ejemplos y patrones
Casos de uso concretos
- Sistemas financieros:
- Comunicación entre servidores bancarios en diferentes lenguajes y plataformas.
- Ejemplo: intercambio de transacciones entre mainframes y aplicaciones Java modernas.
- Telecomunicaciones:
- Gestión de switches y sistemas de señalización usando objetos distribuidos.
- Ejemplo: control de llamadas y registro de eventos en tiempo real.
- Defensa y aeroespacial:
- Sistemas de simulación y control de aeronaves distribuidas.
- Ejemplo: coordinación de sensores y módulos de misión en tiempo real.
- Integración de sistemas legacy:
- Conectar aplicaciones antiguas con nuevos servicios corporativos.
- Ejemplo: una aplicación CORBA existente expone servicios a un bus de integración moderno (ESB).
Ejemplo de flujo mínimo en Java
IDL
module Banking {
interface Account {
float getBalance();
void deposit(in float amount);
};
};
`
Servidor Java
import Banking.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
public class AccountImpl extends AccountPOA {
private float balance = 0;
public float getBalance() { return balance; }
public void deposit(float amount) { balance += amount; }
public static void main(String[] args) {
try {
ORB orb = ORB.init(args, null);
POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
rootPOA.the_POAManager().activate();
AccountImpl account = new AccountImpl();
rootPOA.activate_object(account);
org.omg.CORBA.Object ref = rootPOA.servant_to_reference(account);
System.out.println("CORBA server ready: " + ref);
orb.run();
} catch(Exception e) { e.printStackTrace(); }
}
}
Cliente Java
import Banking.*;
import org.omg.CORBA.*;
public class AccountClient {
public static void main(String[] args) {
try {
ORB orb = ORB.init(args, null);
org.omg.CORBA.Object objRef = orb.string_to_object("IOR:000000...");
Account account = AccountHelper.narrow(objRef);
account.deposit(150);
System.out.println("Balance actual: " + account.getBalance());
} catch(Exception e) { e.printStackTrace(); }
}
}
Configuración típica de ORB
- Configuración mediante archivo
orb.propertieso parámetros de inicio:- Puerto y host del ORB.
- Estrategias de transporte (TCP, SSL).
- Políticas de persistencia de objetos.
- Ejemplo:
ORBInitialHost=127.0.0.1
ORBInitialPort=1050
Patrones de diseño relacionados
- Servant Locator: permite instanciar objetos bajo demanda para optimizar memoria.
- Factory: creación de objetos distribuidos de manera centralizada.
- Adapter: adaptación de interfaces CORBA a servicios externos o legacy.
- Observer: notificación de eventos entre objetos distribuidos.
- Proxy (Stub): cliente interactúa con el stub como si fuera el objeto remoto.
Comparativa con alternativas modernas
| Característica | CORBA | REST/JSON | gRPC/Protobuf |
|---|---|---|---|
| Interoperabilidad | Alta, multi-lenguaje | Media, limitado a HTTP | Alta, multi-lenguaje |
| Tipado | Fuerte, definido en IDL | Débil | Fuerte, definido en proto |
| Rendimiento | Alto en LAN interna | Medio | Alto |
| Complejidad | Alta, verbose | Baja | Media |
| Seguridad integrada | Parcial (CORBA Security) | Depende de HTTPS/OAuth | TLS + autenticación |
| Uso actual | Legacy, sistemas críticos | Web y microservicios | Microservicios y RPC |
Buenas prácticas actuales
- Mantener ORB actualizado con parches de seguridad.
- Usar SSL/TLS y políticas de autenticación donde sea posible.
- Documentar interfaces IDL de manera clara para facilitar migración futura.
- Integrar CORBA con ESB o gateways modernos para exponer servicios a REST/gRPC.
- Evitar exponer CORBA directamente a internet abierta.
CORBA – Estado a 2025 y recursos actualizados
Estado actual y situación en 2025
- CORBA sigue siendo un estándar de interoperabilidad administrado por el Object Management Group (OMG) y disponible oficialmente en la web de OMG, donde se puede consultar la especificación y recursos relacionados con la arquitectura y su uso. omg.org
- Aunque su versión principal (3.4) fue publicada hace años, CORBA mantiene relevancia en nichos industriales, sistemas embebidos, telecomunicaciones y aplicaciones legacy. Wikipedia CORBA
- Existen versiones y proyectos activos de ORBs y librerías que se actualizan todavía en 2025, por ejemplo artefactos como glassfish-corba-omgapi con versiones liberadas en 2025. Maven Repository
- Rocket Software ofrece soluciones comerciales que integran CORBA con modelos modernos como REST, contenedores y soporte IoT, indicando inversión activa en evolución y modernización de CORBA para entornos actuales. Rocket Software
- En el ecosistema open source existen muchos proyectos de CORBA listados en repositorios como SourceForge, incluyendo ORBs estables como omniORB y herramientas de desarrollo actualizadas por la comunidad. SourceForge CORBA
Implementaciones y proyectos activos (2025)
- omniORB – ORB open source ampliamente usado para C++ y Python, con actividad reciente en 2025. SourceForge CORBA
- TAO (The ACE ORB) – Implementación open source de CORBA para C++ con enfoque real-time y soporte extendido para DRE (Distributed Real-time and Embedded) sistemas. Wikipedia TAO
- Axcioma / CIAO – Evolución del modelo de componentes CORBA (CCM), integrando aspectos de calidad de servicio y soporte a DDS. Wikipedia CIAO
- DotNetOrb – Proyecto activo en GitHub para soporte CORBA en aplicaciones C#/.NET, ampliando la interoperabilidad de CORBA con lenguajes modernos. GitHub DotNetOrb
- Artefactos de CORBA para Java EE y GlassFish (por ejemplo glassfish-corba-orbEDL) con versiones liberadas en 2025. Maven Repository
Recursos y documentación útiles en 2025
Oficiales / especificaciones
- OMG CORBA oficial – Página central con especificaciones, descargas y documentación. omg.org
- ORB Basics (OMG) – Documentación básica de cómo funcionan los ORBs, sus interfaces y modelos de activación. omg.org ORB Basics
Open Source / repositorios
- SourceForge CORBA directory – Listado de implementaciones open source de CORBA actualizadas y filtradas por lenguaje y estado. SourceForge CORBA
- GitHub: DotNetOrb – Biblioteca .NET para usar CORBA en aplicaciones C# con integración moderna. GitHub DotNetOrb
Implementaciones de referencia
- TAO (The ACE ORB) – Referencia de ORB con soporte real-time, multiplataforma y alta interoperabilidad. Wikipedia TAO
- Axcioma / CIAO – Evolución del modelo CCM de CORBA con soporte de calidad de servicios y distribución avanzada. Wikipedia CIAO
Tendencias y futuro
- Integración con tecnologías modernas: iniciativas comerciales y de terceros están combinando CORBA con servicios web, contenedores y API REST para facilitar su uso en arquitecturas híbridas. Rocket Software
- Uso continuado en sistemas críticos y legacy: CORBA sigue vigente en sectores como aeroespacial, telecomunicaciones o defensa que requieren estabilidad y compatibilidad multi-lenguaje. Wikipedia CORBA
- Creación de bibliotecas para nuevos lenguajes y ecosistemas como .NET y Python indica que CORBA no solo se mantiene, sino que recibe nuevas integraciones en la comunidad open source. GitHub DotNetOrb
- La comunidad de desarrollo sigue manteniendo proyectos y ORBs, con librerías actualizadas y descargas disponibles en 2025. SourceForge CORBA
Buenas prácticas recomendadas en 2025
- Reutilizar implementaciones open source activas como omniORB o TAO para nueva infraestructura distribuida o mantenimiento de legacy. SourceForge CORBA
- Documentar claramente las interfaces en IDL y utilizar herramientas modernas de CI/CD para compilación automática de stubs/skeletons.
- Considerar el uso de gateways o adaptadores para exponer servicios CORBA a APIs más modernas como REST o gRPC, especialmente en integraciones con sistemas web.
- Mantener actualizadas las dependencias de ORB con parches de seguridad y actualizaciones de protocolo.
Referencias a aprender y explorar
- Sitio oficial de OMG CORBA: omg.org
- Proyectos open source listados en SourceForge (omniORB, MICO, etc.): SourceForge CORBA
- Repositorio DotNetOrb en GitHub para .NET/C#: GitHub DotNetOrb
¿Te gusta este contenido? Suscríbete vía RSS