Go backward to WWW-Related Technologies
Go up to Appendix: Technologies for Distributed Systems
Go forward to Network Computing Systems
The term middleware denotes a set of general-purpose services that sits between platforms (various types of hardware and operating systems) and applications [Ber96]. A standardized interface allows applications to request services over the network without knowing how or even where the service is implemented. Middleware therefore facilitates the design of distributed systems whose configuration may dynamically change and where multiple applications implemented in different languages and running on different systems communicate with each other.
Modern middleware is based on the model of distributed objects [OaE96]. Services are encapsulated as objects with well-defined interfaces; middleware allows the invocation of methods from objects located on other nodes (remote requests). Typically the method caller (the client) is blocked until the remote object method has terminated and delivered its answer (remote procedure call, synchronous message passing). Thus client/server applications can be easily implemented in a network-transparent fashion.
Distributed object technology can be utilized to break complex applications into small components. Each component is in charge of a specific task and may run on a different machines; still all components may be seamlessly integrated in a common application. E.g. a document may be compound of multi-media objects of different types (potentially stored in different locations); when one of the components is processed, the corresponding methods are activated (document-centered processing).
CORBA (Common Object Request Broker Architecture) [Gro95a] is an emerging open distributed object computing infrastructure being standardized by the OMG (Object Management Group). CORBA automates many common network programming tasks such as object registration, location, and activation, request demultiplexing, framing and error-handling, parameter marshalling and demarshalling, and operation dispatching.
CORBA thus provides the mechanisms by which objects transparently make requests and receive responses, as defined by OMG's ORB (Object Request Broker). The CORBA ORB is an application framework that provides interoperability between objects, built in (possibly) different languages, running on (possibly) different machines in heterogeneous distributed environments. It is the cornerstone of OMG's Object Management Architecture.
OpenDoc [Ope96] is the distributed component builder standard chosen by the OMG on the basis of a multi-vendor specification based on IBM's SOM (System Object Model). This standard provides the specifications for creating distributed component software that can be shared and customized across heterogeneous environments. While having its origin in a compound document architecture, OpenDoc has evolved into a general distributed software builder.
CORBA/OpenDoc are currently the industry standards in distributed object technology; however they are based on a client/server model of computation which makes it more difficult to build peer-to-peer applications [Gro96].
In contrast to the OMG standards, Microsoft pursues its proprietary COM (Component Object Model) [COM96] as the fundamental object technology for Windows 95 and Windows NT. COM provides the low-level object-binding mechanism that enables objects to communicate with each other; it is the basis of OLE (Object Linking and Embedding) which allows to build compound documents whose components (COM objects) stem from different applications. COM is platform-specific (Intel-based Windows systems) and only works within a machine. For communication with objects on other machines, a distributed variant DCOM [DCO96] (former "Network OLE") is required. COM is also the basis of ActiveX (see the next subsection); the further development of COM/DCOM has been transferred to the ActiveX group, a subdivision of the Open Group.
The Microsoft approach to middleware is characterized by the promotion of proprietary technologies that are tightly bound to Windows/Intel systems and thus little attractive for vendors outside the "Microsoft world". Still by its market dominance, the Microsoft technologies will certainly play an important role in the future.
The JNI (Java Native Interface) allows to call external C/C++ code from Java programs and vice versa; corresponding tools are available that generate interface definitions for the respective languages.
SunSoft has developed Java RMI (Remote Methods Invocation), a distributed object architecture to provide interfaces between remote Java applications. Java IDL (Interface Definition language) is supported as an interface between Java and CORBA.
A corresponding distributed component architecture, JavaBeans [Jav96b] was developed that allows to write reusable and platform-independent components for all systems supporting the Java runtime system. JavaBeans provides both interfaces to OpenDoc and to COM.
The Java approach to distributed object middleware puts much focus on portability and platform-independence as well as interfacing to existing standards. This ensures its continued support by many vendors and its future relevance.