Many people perceive the Open Software
Foundation (OSF) Distributed Computing Environment (DCE)
and Object Management Group (OMG) Common Object Request Broker Architecture (CORBA) as
competing technologies. Indeed, both support the construction and integration of client-server applications
in heterogeneous distributed environments, and both do so in very similar ways with very similar
capabilities.
Figure 1 depicts at a very high
level the manner in which service requests are handled by DCE and CORBA.
Both define an Interface Definition Language (IDL).
DCE IDL is based on the C programming
language; CORBA IDL is based on C++. IDL is used to define the
interface that a server implements, that is, the set of
services that clients may request
of it. Both DCE IDL and CORBA IDL compile into client and server stubs.
A client application calls a client stub to request a service. The client stub interfaces to the runtime
system,
which eventually invokes server code that implements the requested service through the appropriate server
stub.
Figure 1. Requesting Services Using DCE or CORBA
The transmission of service requests and responses
between clients and servers is handled by both DCE
and CORBA so that applications need not deal with concerns like: where clients and servers are located
on
the network; differences between hardware platforms, operating systems, and implementation languages
(for example, data formats or calling conventions); networking protocols; and others.
There are many other similarities between DCE and
CORBA, as one would expect. However, our purpose
here is not to present a litany of the similarities between these two technologies. It is our intention
to
examine how they differ from one another.
Comparisons of DCE and CORBA are commonplace; however,
they typically focus either on differences
between individual capabilities or on differences between the relative maturity of specifications and
of
products that conform to them. There is a fundamental difference between DCE and CORBA, however, that
we feel far overshadows either of these criteria as a basis for selecting a platform for distributed
computing.
The purpose of this document is to discuss the
differences between DCE and CORBA on all of these levels.
Before doing so, we summarize the features that DCE and CORBA offer. After presenting what we feel is
the
most important difference between the two technologies, we discuss the differences between the individual
capabilities they provide and the relative maturity of both the specifications and the products that
conform
to them. Then we present our view of how an organization should select the technology most appropriate
for its distributed computing goals.