Una vez expuestas ambas concepciones de sistemas operativos distribuidos
podemos establecer la comparación entre ellas.
La diferencia fundamental entre DCE y CORBA, como ya se ha podido observar,
radica en el enfoque de la implementación del sistema operativo
distribuido. Mientras que DCE nace con la idea de soportar la programación
procedural, CORBA decide apostar por un entorno orientado a objetos.
A ) Nivel de implementación
En estos momentos la especificación de DCE está más cerca concluirse que la especificación propuesta por la OMG, que por el momento no ha concretado los servicios de seguridad entre otros, o las facilidades verticales y horizontales.
Por otra parte las especificaciones existentes de los dos modelos de sistemas operativos distribuidos, están sujetas a revisiones periódicas, intentando mantener siempre la compatibilidad entre las especificaciones anteriores y la revisada. En este sentido ambas, DCE y CORBA (solo la especificación de ORB), han alcanzado ya gran estabilidad.
En cuanto a la implementación de los dos sistemas, existen implementaciones
bastante completas de ambas, aunque en el caso de CORBA nos limitamos a
los ORB's.
También podemos encontrar implementaciones de CORBA que se han
construido en la cima de DCE.
La lista de vendedores de DCE incluye nombres tan importantes como AT&T,
Bull, Hitachi, SCO, Transarc o Siemens Nixdorf. En el otro lado, apoyando
la especificación CORBA encontramos a Expersift, IONA TEchnologies,
SunSoft o Postmodern Computing.
Otras grandes firmas han decidido apostar en ambos lados, ejemplo de
ellas son IBM, DEC o Hewelt Packard.
B ) Características Generales
CORBA soporta las características habituales de los entornos orientados a objeto:
En DCE RPC, una interface de servidor debe hacer múltiples llamadas para registrarse, y a su vez un cliente debe hacer múltiples llamadas para encontrar la interface del servidor al que desea invocar.
Además, si el cliente y el servidor están escritos orientados a objeto el uso de DCE RPC es muy complejo ya que la interface con la que interactuan es no orientada a objeto..
DCE RPC no ofrece ningún soporte a C++, aunque es usado tanto en C como en C++. Por otra parte, CORBA resulta más fácil de manejar con C++.
CORBA en su mecanismo de invocación remota el software "llamador" envía una petición y no sabe que objeto será el que le responda ni dónde va a estar localizado.
Una dirección nos da la información necesaria para que un objeto pueda asociarse a la objeto direccionado. Las direcciones DCE se llaman manejadores de bindings, las direcciones de CORBA son las referencias a objeto.
El problema del "binding" es solucionado en DCE facilitando funciones encargadas de realizar la asociación basándose en manejadores de "bindings". En CORBA cada objeto definido en la especificación de la interface posee una función de binding, que se encuentra en cada referencia a ese objeto.
Para tratar el tema de los nombres ambos sistemas proveen una serie de servicios. En el caso de DCE se suministra el Cell Directory Service, mientras el servicio de nombres de CORBA está englobado entre los Common Object Services.
Tanto las direcciones como los nombres constituyen un problema cuando se intenta traspasar la frontera del sistema implementado, es decir, si tuviésemos una red en la que parte está implementada en DCE y parte en CORBA y quisiéramos comunicar una parte con la otra. Este problema podría resolverse utilizando nombres federados y localizadores. El nombre federado tendrá varios campos y el localizador utilizará el campo correspondiente según estemos en un implementación orientada a objeto o a procedimiento.
En cuanto a los Interface Definition Languages, DCE tan solo permite un interface por IDL mientras que el número en CORBA es ilimitado. Además, como ya se ha explicado DCE permite transmitir por la red datos de tipo puntero, algo que CORBA no contempla.
EL IDL de DCE no permite, como ya se ha señalado, la herencia en los interfaces y define un espacio de nombres compartido. CORBA permite la herencia de interfaces y define su espacio de nombres de forma jerárquica.
CORBA define el Interface Repository que contiene información equivalente a la de los ficheros IDL, pero que puede ser accedida en tiempo de compilación. DCE no posee este tipo de "reposiciones".
Además del "static stub interface", CORBA define la "dynamic invocation interface" , que puede ser usada por un cliente para invocar una operación cualquiera en un tipo de objeto cualquiera en tiempo de ejecución. En DCE las stubs de RPC apropiadas deben ser linkadas en el cliente DCE.
CORBA permite la activación automática de sus servidores, de forma que, si un servidor al que va dirigida una petición está desactivado, un ORB se encargará de ponerlo en marcha. La activación de los servidores en entornos DCE debe ser manual.
Los servicios que DCE puede ofrecer a una aplicación son muy
limitados si los comparamos con los que ofrece la arquitectura de CORBA,
con un conjunto de posibilidades muy rico con las que construir más
servicios además de los que ya ofrece.
C ) Sobre los tipos de datos
D ) Conclusión:
Por todo lo expuesto debemos resumir que, si se desea un entorno distribuido podemos basarnos en cualquiera de las dos especificaciones. Si lo que queremos es un entorno distribuido orientado a objeto deberemos pensar en la especificación CORBA. Los servicios que nos ofrecen ambas son muy similares, cada uno con sus particularidades pero que viene a desempeñar el mismo trabajo.
Autor:
Susana Abadín Izquierdo
313586@cepsz.unizar.es |
Fecha
de creación: 23
de julio de 1998
Última modificación: 31 de julio de 1998 |