Figure 17 depicts the concept of middleware as a centralized communication mechanism that shields applications from the details of inter-process communications and drastically simplifies interfaces within the system.
Middleware is a software layer residing between the application and the network infrastructure of multiple protocols. One of its purposes is to shield the application programmer from the complexities of the network. Without middleware, application programs or COTS products must communicate directly with each other through a "software bridge." The bridge software is specific to the two applications it connects, and has to be rewritten when one vendor's product is substituted for another.
There are four major types of middleware: 1) Remote Procedure Call (RPC)-based middleware, 2) messaging middleware, 4) Object Request Broker (ORB)-based middleware, and 4) database middleware. Standardization efforts for each type of middleware are underway, but vary in maturity and application development.
The most widely deployed class is RPC-based middleware. The RPC extends traditional program calls to a distributed computing paradigm by specifying calls to a procedure typically located on another platform somewhere on the network. The Distributed Computing Environment (DCE), developed by Open Software Foundation (OSF), is an attempt to standardize RPC-based middleware applications. DCE is a fairly mature standard and provides for an integrated set of services for distributed applications. Other RPC-based products include SunSoft ONC RPC, NobleNet EZ-RPC and HP Network Computing Systems (NCS).
Message-oriented middleware allows process-to-process communication by passing messages. It is well suited to both client/server and peer-to-peer models. Most message-oriented middleware applications show higher performance rates than RPC-based applications. Products include ToolTalk from SunSoft, Pipes from PeerLogic, and SmartSockets from Talarian. There is currently no interoperability between messaging middleware products, but standardization efforts are underway.
ORB-based middleware is the middleware of choice in most object-oriented applications. Messages are routed by an ORB, which also handles integrity and security issues. The Object Management Group's Common Object Request Broker Architecture (CORBA) standard is emerging as the most widely accepted middleware standard. CORBA helps standardize the interface between the application and middleware by providing a standard mechanism by which objects make requests and receive responses from other objects. Nearly every major ORB-based middleware vendor is supporting implementation of CORBA. Performance issues in the use of the ORB model have yet to be resolved. Vendors with CORBA-compliant middleware products include IBM (SOM Objects), Sun (Distributed Objects Everywhere), and Iona (Orbix).
Database middleware provides transparent access to relational databases across multi-protocol environments. Existing products include Sybase Open Server and Oracle SQL Connect.
Since middleware facilitates the plug and play of different component applications in a distributed system, it helps facilitate integration of COTS software by isolating functionality and simplifying interfaces. Simplification of interfaces is essential in this process. Several efforts are underway to standardize interfaces between COTS products. Four of these efforts are 1) the ARPA Knowledge Query and Manipulation Language (KQML), which standardizes interfaces between intelligent agents or knowledge based systems; 2) the IEEE P1201.1 standard, an effort to define a generic interface for graphical user interfaces; 3) the Manufacturing Message Specification (MMS), a widely used standard message protocol for industrial devices also being applied to satellite control, and 4) the Element Operations Center Testbed (EOCT) at Aerospace, which implements the standard interfaces cited above and provides additional standard interfaces for certain satellite control functions such as telemetry, commanding, and orbit determination COTS software.