|
En el capítulo 9, vimos la teoría de las interfases en general. Ahora que entendemos la idea, veamos cómo CORBA soluciona el problema. Si usted decidió leer el capítulo 9.1, para ahora tendrá una muy buena idea de como funcionan las interfases en Microsoft COM y podrá usted darse cuenta de las diferencias tanto de filosofía como de implementación.
En 1989, los altos ejecutivos de varias compañías (desde compañías de Software hasta Bancos) se reunieron para hablar acerca de interfases, y de la importancia que éstas tendrían en el futuro. Estas empresas (que forman el llamado "Open Management Group") decidieron que, dada la enorme importancia que las interfases tendrían, sería muy util especificar un estándar para que todos los lenguajes de programación pudieran exponer interfases, sin importar el lenguaje, el sistema operativo o el vendedor de servicios de objetos.
CORBA es el resultado de muchos años de trabajo de varias compañías para definir un estándar que satisfaga a todos los lenguajes de todos los sistemas operativos. COM fué el primer transporte de interfases soportado por Delphi, pero CORBA es una tecnología mucho más madura y sólida para tranporte de interfases, por el simple y sencillo motivo de que CORBA ha estado funcionando por mucho tiempo en varios sistemas operativos y lenguajes.
Así que la primera diferencia entre COM y CORBA es que COM nos limita a tecnologías Windows, mientras CORBA nos abre las puertas a la posibilidad de usar e implementar interfases en Unix, Linux, Mainframes de IBM, Solaris, Sillicon Graphics, Windows, etcétera, en lenguajes tan dispares como Java, C, Delphi, COBOL, SmallTalk, FORTRAN, LISP y muchos otros.
¿Cómo se logra la independencia entre lenguajes? Tal como vimos en el capítulo 9, Las interfases CORBA se representan en un Lenguaje unificado llamado IDL (Interface Definition Language). Cada lenguaje (Delphi, Java, C, etc.) cuenta con un traductor (también llamado "compilador") de IDL, que traduce las sentencias de la definición de la interfase al lenguaje adecuado.
Cuando usted compra librerías de CORBA (también llamadas ORBs) para su lenguaje, las librerías normalmente vienen con programas llamados "idl2XXX", donde "XXX" es el nombre de su lenguaje. De esta manera, un ORB para java viene con un compilador de IDL llamado "idl2java", mientras que C++ vendría con un compilador llamado "idl2cpp". En delphi tenemos un caso especial, porque Delphi puede leer IDL directamente en el editor de librerías de tipos y traducirlo a PAS automáticamente (así que el compilador de IDL viene integrado en las versiones Client/Server y Enterprise).
Como ORB no es dominado por una sola compañía sino por un grupo, mientras uste pueda compilar su programa para un sistema operativo X y pueda comprar unas librerías ORB para el mismo sistema operativo (y que funcionen con su lenguaje), usted puede hablar con cualquier otro servicio en la red que exponga un ORB, sin importar qué sistema operativo o qué marca de ORB está ejecutándose en la máquina que expone el ORB.
Tal como lo hicimos en las interfases, hay que ver lo que CORBA no es:
CORBA es una especificación de como debe funcionar un set de librerías específicas para llamarse un ORB. Decir "yo sé usar CORBA" no es suficiente; usted normalmente debe decir cosas como "yo sé CORBA usando Visigenics", o "yo sé CORBA usando IONA". Visigenics e IONA son dos productos que implementan la tecnología CORBA. Los productos que implementan CORBA se llaman ORBs.
De la misma manera, Visigenics (un ORB) está disponible para varios lenguajes bajo varias plataformas (Visigenics for C++/Linux, Visigenics for C++/Windows, Visigenics for Java). Pero CORBA en sí mismo no es un lenguaje, sino una serie de librerías y servicios. Así que recuerde que cuando explique a otra persona que usted puede programar en CORBA, recuerde que debe decirlo de forma "Yo programo CORBA usando Visibroker para Delphi bajo Windows", o "Yo programo CORBA usando Visibroker para Java", etcétera.
Visibroker es un ORB que cumple con todos los requerimientos de CORBA. Visibroker se compone de lo siguiente (Los nombres de servicio entre comillas son los nombres de la implementación de Visibroker en particular):
Las librerías de CORBA le ayudan a los programas a exponer métodos CORBA y a utilizar los métodos desde los programas Clientes.
Las librerías de CORBA pueden ser de dos tipos:
El ORB es el exportador e importador de interfases. Todos los clientes y servidores deben inicializar el ORB y utilizarlo para obtener interfases. Básicamente el ORB es el que interpreta los punteros de interfases y los traduce a mensajes de red, o recibe llamadas de red y los traduce a punteros locales para su ejecución.
El adaptador de Objetos Básico (Basic Object Adaptor) es la librería que le ayuda a exportar el puntero de interfase. Se utiliza en el servidor.
Nota: En computación distribuida, los términos "servidor" y "cliente" pueden resultar intercambiables, ya que el cliente puede implementar objetos y exportarlos al servidor. En estos casos, los clientes también necesitan usar el BOA (pero solo si exportan interfases). Esto será mas claro en los ejemplos, pero recuerde que "cliente" y "servidor" son roles que puede jugar un ejecutable en cualquier momento.
El servicio SmartAgent le ayuda a exportar un objeto para su utilización en una red local. Si usted tiene el código de interfase I.O.R. en específico, usted no necesita un servicio de nombres.
Cuando usted escribe un programa COM que exporta interfases, Windows utiliza uno de sus servicios internos (TODO:Averiguar Nombre del Servicio) para ejecutar el archivo (.exe, .dll, etc) donde la interfase "vive". CORBA no es una tecnología que dependa en el sistema operativo, así que el servicio de activación tiene una lista de las interfases y los nombres de sus ejecutables para poder iniciar automáticamente el ejecutable. Note que si usted comienza el ejecutable por sí mismo, no necesita registrarlo en el OAD. De esta manera, usted puede tener varios servicios en su AUTOEXEC.BAT (o lista de servicios en Windows NT) que aceptarán peticiones de los clientes.
IDL es un lenguaje "neutral" para definición de interfases. Como tal, tiene declaraciones pero no tiene sintaxis de control (for, do while, etc). Bajo CORBA, usted describe su interfase utilizando IDL y utiliza el compilador de IDL para crear clases de apoyo a su implementación, y clases auxiliares para que los clientes puedan crear instancias del objeto.
La versión de Visibroker que viene con Delphi 4 es:
prompt> vbver oad.exe Information for: /Program Files/Borland/vbroker/Bin/oad.exe Product Name: VisiBroker for C++ Version: 03.02.00.C2.02 Copyright: (C) 1996, 1998 Company: Visigenic Software, Inc. Build Date: 03/02/1998 11:57:32
Como podrá ver, Delphi 4 utiliza una versión de Visibroker para C++. Como es el caso con todas las librerías de C++, las llamadas han sido traducidas a archivos .PAS para su uso en Delphi.