Advantages
-
Programming-language independent interface. Interfaces
between clients and servers are defined in OMG IDL, thus providing the
following advantages to Internet Programming:
-
multi-language and multi-platform environment,
-
separation between interfaces and implementations,
-
automatic generation of stub code through IDL mapping compiler,
-
automatic type checking.
-
Legacy integration. Using CORBA IDL, programmers can encapsulate existing
applications in wrappers and use them as objects on the ORB. CORBA-based
systems allow developers to re-use legacy applications, therefore preventing
them of rewriting everything from scratch.
-
Rich distributed object infrastructure. Distributed applications require
more functionalities than simple method invocations. CORBA offers them
a rich set of distributed object services and facilities, such as the Lifecycle
Service, the Event Service, the Naming Service (``the White Pages'' service)
or the Trading Service (``the Yellow Pages'' service). CORBA provides many
other helpful facility to manage distributed applications like automatic
server activation when the appropriate one is not already running, load
balancing to distribute charge across multiple machines, and persistence
for both object states and object references. Some CORBA products also
implement automatic server deactivation after some time-out or some specific
garbage collect mechanism, thus preventing memory leaks happening to CORBA
objects whose clients unexpectedly disappear.
-
Location transparency. In contrast with URL-based and socket-based naming
mechanism, CORBA provides location transparency: an object reference is
independent of both the object physical location and a potentially
change of this location. This means that developers can create robust CORBA-based
systems where object can be moved without breaking all the applications
that use them.
-
Network transparency. By using the IIOP protocol, an ORB that run in
a particular computer can be interconnected to any ORB elsewhere on the
network. A client making a call will receive the results he expected, or
a possible exception, without even knowing if the computation is done in
the same process, in different processes running within the same machine,
or different processes running across networks and operating systems.
-
Direct object communication. Once Java applets are downloaded and running
in the Web browser's Virtual Machine, they can talk directly to other distributed
objects, hence bypassing the HTTP server. This transparent message routing
is done through IIOP and frees the Web servers of extra communication management.
|
HTTP
Hypertext Transfer Protocol
|
IIOP
Internet Inter ORB Protocol
|
Definition |
Communication standard betweenWeb clients and web
servers
|
Communication standard betweenORBs over the Internet
|
Application |
Document-oriented
|
Communication between objects
|
Protocol |
Independent
|
TCP/IP
|
Organization |
W3C Consortium
|
OMG
|
Connection |
HTTP 1.0: session-less. Theconnection lasts only
the timeof the request
HTTP 1.1: allows caching and persistent connection
|
Session-oriented: the connection is established for
the entire communication between client & server
|
Table: HTTP's and IIOP's features
Direct object communication also allows true load
balancing. Serving HTTP requests and executing server programs can now
be done on various machines. A Web server can be installed on a dedicated
Internet host that serves only incoming requests for HTML files, while
all other client/server applications are distributed among different machines.
However, the W3C Consortium is working on new protocol
issues that will combine both HTTP and IIOP. JavaSoft is also thinking
about implementing RMI on top of IIOP.
Since Netscape 4.0 is fully integrating IIOP as a native
protocol, IIOP will soon be ubiquitous with millions of users throughout
the World.
Remote call-back support. This eliminates the need
for Java applets to repeatedly poll for events. Through the Event Service,
CORBA allows objects to receive asynchronous event notification from other
objects. Dynamic Invocation Interface. CORBA clients can both use
static and dynamic methods invocations. They either statically define their
method invocations through stubs at compile time, or have the opportunity
to discover objects' methods at run time. Regardless of the speed of execution,
clients can thus choose between the strong type checking offered by the
static option at compile time, and maximum flexibility associated with
run time binding. Interface publication and self-describing system.
With CORBA, you don't have to program at the project level, but you can
always considered your object separately. When your project is done, all
the services and projects that the developers have worked hard to write
can publish their distributed interfaces so that clients in C++, SmallTalk,
and even OLE can have access to them. That ``metadata'' that describes
every server interface known to the system is contained in the Interface
Repository of the ORB, and is used by clients that want to discover dynamically
services at run time. This is also very helpful for development tools that
can automatically generate code.