4. COMPARANDO DCE y CORBA

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:

DCE no soporta los conceptos de herencia, polimorfismo y abstracción de los sistemas orientados a objetos, sin embargo tiene una serie de características que se superponen a las tradicionales de dichos sistemas: Los tipos UUID definidos en DCE soportan de alguna forma polimorfismo y abstracción, aunque en ningún momento estamos tratando con programación orientada a objeto. No obstante podemos utilizar la programación procedural para implementar sistemas orientados a objeto, de la misma forma que C es utilizado para implementar C++. De esa misma forma muchos distribuidores están implementando ORB's utilizando la especificación DCE, algunos ya se refieren a CORBA como "RPC ++", aunque señalando la mayor facilidad de uso de CORBA.

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.

[siguiente]     [indice general]

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 
 
  1