Para un proyecto de computación distribuida que comienza hoy, sin componentes heredados, ¿existen buenas razones para investigar CORBA?
Para un proyecto de computación distribuida que comienza hoy, sin componentes heredados, ¿existen buenas razones para investigar CORBA?
Respuestas:
Todavía hay situaciones en las que CORBA podría ser una buena respuesta:
Pero dicho esto, hay alternativas que hacen lo que hace CORBA, solo que mejor ... o eso dicen. Por ejemplo , ICE de ZeroC
EDIT @fnieto interviene para decir (o insinuar) que ICE no es gratis, pero TAO sí lo es.
Esto es inexacto y engañoso .
La desventaja de ICE es la falta de interoperabilidad con las pilas de middleware CORBA, pero en mi experiencia, la interoperabilidad de diferentes implementaciones de CORBA también podría ser problemática. (Las cosas pueden haber mejorado en esa área ... pero no he hecho ningún trabajo CORBA desde ~ 2002, así que estoy un poco fuera de contacto).
De las respuestas existentes, esto entra en un tema casi religioso. Se puede ver CORBA de la misma manera que el vaso medio vacío / medio lleno: por un lado, CORBA está anticuado y por otro lado es relativamente estable con varias implementaciones disponibles y el "diablo que sabes".
En mi línea de trabajo, veo CORBA implementado en sistemas embebidos, sistemas en tiempo real (CORBA tiene extensiones RT) y similares. No hay muchas alternativas AFAIK.
Otra "ventaja" de CORBA es la disponibilidad de varias implementaciones de código abierto de alta calidad, por ejemplo, TAO, MICO, JacORB, etc., con diferentes modelos de licencia y soporte. También hay ediciones comerciales disponibles.
Con respecto a "la mayoría" de las aplicaciones CORBA que se implementan en Java, ese no es el caso en mi experiencia. Si bien el mapeo de lenguaje de CORBA a Java es uno de los mejores que hay (lo que puede no decir mucho), Java ya tiene un modelo de computación distribuida muy agradable que ofrece una riqueza más allá de CORBA, y todas las aplicaciones de Java lo usan más que CORBA. La gran mayoría del desarrollo de CORBA que he visto está en C ++ (que también es el peor mapeo de lenguaje).
Finalmente, CORBA ofrece invocaciones asincrónicas estandarizadas del lado del cliente en forma de AMI, pero nunca ofreció manejo asincrónico en el lado del servidor. TAO ofrece una implementación del lado del servidor no estándar llamada AMH.
Creo que Corba fue revivido por la especificación EJB original, ya que los EJB se pueden convertir fácilmente en beans CORBA con un poco de configuración. Sospecho que la mayoría de las implementaciones de Corba se implementaron en Java.
En cuanto a la popularidad, creo que puede que queden algunas implementaciones de alto nivel durante varias décadas, pero para la mayoría de las personas, Corba está muerta.
Hay muchas formas muy sexys de hacer las mismas cosas (excepto la gama alta mencionada anteriormente).
Pero, por supuesto, su milagro puede variar.
Obviamente, depende del tipo de servidor y de la comunicación entre procesos que esté considerando. Y creo que Stephen C y Chris Cleeland cubren muy bien los aspectos positivos de Corba.
Nuestra aplicación ha utilizado CORBA (Orbix) durante más de 10 años, por lo que ahora es un legado. Y por cómo está escrito CORBA es una buena tecnología. Sin embargo, si estuviera comenzando de nuevo, probablemente no usaría CORBA:
Ahora, dependiendo del tipo de comunicación que quisiera, probablemente consideraría:
Esto se basa más en encontrar personal y experiencia, soporte de terceros y aprovechar las bibliotecas de código abierto que en la calidad técnica de CORBA, que uso todos los días y es fuerte aunque un poco engorroso.
CORBA es ciertamente anticuado, pero también proporciona ciertas funciones de alto nivel listas para usar (ver aquí ). Toda esta funcionalidad podría realizarse utilizando servicios web modernos, pero probablemente no de manera estándar, y no sin una gran cantidad de trabajo adicional.
Sin embargo, para el 99% de los servicios distribuidos, CORBA no es deseable. Es feo, complejo y difícil de usar.
Una cosa que nadie ha mencionado aquí es ESTÁNDARES ABIERTOS, ABIERTOS. De todas las tecnologías que existen (excepto SOAP), es el único estándar de papel blanco verdaderamente abierto. El estándar no depende de las tecnologías de ninguna organización. RMI (Sun / Oracle), DCOM (ahora desaparecido - Microsoft). Es completamente neutral respecto del idioma y el proveedor. Excepto SOAP, ninguna de las otras tecnologías DOS (Tecnología de objetos distribuidos)
Soy un arquitecto de software y regularmente tengo que elegir qué DOS debe usarse en el diseño de un sistema. Si no fuera por la guerra religiosa que enfrento cada vez, sería MOM o CORBA.
Mírelo de esta manera, si estuviera tan muerto, ninguna de las redes 3 / 4G funcionaría. 3GPP está totalmente especificado en CORBA. El Sistema de Satélites Europeo es todo CORBA especificado. Pregúntense por qué. ¡Es porque deben basarse en arquitecturas neutrales al proveedor y al idioma!
Yo diría que el nivel actual de madurez de los servicios web (incluido REST) y en el mundo de Java EJB (que incluso pueden usar CORBA bajo las cubiertas) cubren lo que se necesita para los sistemas empresariales distribuidos.
Aconsejaría que un aspecto que debe considerar cuidadosamente es el grado de interacción asincrónica que necesita en su sistema distribuido. Postulo que cualquier sistema distribuido de escala no trivial necesita comunicaciones asincrónicas, y la infraestructura elegida debe soportar el procesamiento asincrónico, por lo general eso significa colas.
Eso no es inconsistente con el uso de WebServices (o de hecho CORBA) pero sí señala un aspecto de su selección de productos que puede pasarse por alto en la emoción inicial de poner en marcha algún procesamiento distribuido.