General Navigation Buttons - Home | Search | Contact Us | Site Map | Whats New
products graphic
white space
products
Software Technology Roadmap
Background & Overview
Technology Descriptions
Defining Software Technology
Technology Categories
Template for Technology Descriptions
Taxonomies
Glossary & Indexes
white space
About SEI|Mgt|Eng|Acq|Collaboration|Prod.& Services|Pubs
pixel
Rollover Popup Hints for Topic Navigation Buttons above
pixel
Middleware


Status

Advanced

Purpose and Origin

Middleware is connectivity software that consists of a set of enabling services that allow multiple processes running on one or more machines to interact across a network. Middleware is essential to migrating mainframe applications to client/server applications and to providing for communication across heterogeneous platforms. This technology has evolved during the 1990s to provide for interoperability in support of the move to client/server architectures (see Client/Server Software Architectures). The most widely-publicized middleware initiatives are the Open Software Foundation's Distributed Computing Environment (DCE) , Object Management Group's Common Object Request Broker Architecture (CORBA), and Microsoft's COM/DCOM (see Component Object Model (COM), DCOM, and Related Capabilities) [Eckerson 95].

Technical Detail

As outlined in Figure 17, middleware services are sets of distributed software that exist between the application and the operating system and network services on a system node in the network.

Figure 17: Use of Middleware [Bernstein 96]

Middleware services provide a more functional set of Application Programming Interfaces (API) than the operating system and network services to allow an application to

  • locate transparently across the network, providing interaction with another application or service
  • be independent from network services
  • be reliable and available
  • scale up in capacity without losing function [Schreiber 95]
Middleware can take on the following different forms:

  • Transaction processing (TP) monitors (see Transaction Processing Monitor Technology), which provide tools and an environment for developing and deploying distributed applications.
  • Remote Procedure Call (RPCs), which enable the logic of an application to be distributed across the network. Program logic on remote systems can be executed as simply as calling a local routine.
  • Message-Oriented Middleware (MOM), which provides program-to-program data exchange, enabling the creation of distributed applications. MOM is analogous to email in the sense it is asynchronous and requires the recipients of messages to interpret their meaning and to take appropriate action.
  • Object Request Brokers (ORBs) , which enable the objects that comprise an application to be distributed and shared across heterogeneous networks.

Usage Considerations

The main purpose of middleware services is to help solve many application connectivity and interoperability problems. However, middleware services are not a panacea:

  • There is a gap between principles and practice. Many popular middleware services use proprietary implementations (making applications dependent on a single vendor's product).
  • The sheer number of middleware services is a barrier to using them. To keep their computing environment manageably simple, developers have to select a small number of services that meet their needs for functionality and platform coverage.
  • While middleware services raise the level of abstraction of programming distributed applications, they still leave the application developer with hard design choices. For example, the developer must still decide what functionality to put on the client and server sides of a distributed application [Bernstein 96].
The key to overcoming these three problems is to fully understand both the application problem and the value of middleware services that can enable the distributed application. To determine the types of middleware services required, the developer must identify the functions required, which fall into one of three classes:

  1. Distributed system services, which include critical communications, program-to-program, and data management services. This type of service includes RPCs, MOMs and ORBs.
  2. Application enabling services, which give applications access to distributed services and the underlying network. This type of services includes transaction monitors (see Transaction Processing Monitor Technology) and database services such as Structured Query Language (SQL).
  3. Middleware management services, which enable applications and system functions to be continuously monitored to ensure optimum performance of the distributed environment [Schreiber 95].

Maturity

A significant number of middleware services and vendors exist. Middleware applications will continue to grow with the installation of more heterogeneous networks. An example of middleware in use is the Delta Airlines Cargo Handling System, which uses middleware technology to link over 40,000 terminals in 32 countries with UNIX services and IBM mainframes. By 1999, middleware sales are expected to exceed $6 billion [Client 95].

Costs and Limitations

The costs of using middleware technology (i.e., license fees) in system development are entirely dependent on the required operating systems and the types of platforms. Middleware product implementations are unique to the vendor. This results in a dependence on the vendor for maintenance support and future enhancements. This reliance could have a negative effect on a system's flexibility and maintainability. However, when evaluated against the cost of developing a unique middleware solution, the system developer and maintainer may view the potential negative effect as acceptable.

Index Categories

This technology is classified under the following categories. Select a category for a list of related topics.

Name of technology

Middleware

Application category

Client/Server (AP.2.1.2.1)
Client/Server Communication (AP.2.2.1)

Quality measures category

Interoperability (QM.4.1)

Computing reviews category

Distributed Systems (C.2.4)
Network Architecture and Design (C.2.1)
Database Management Languages (D.3.2)

References and Information Sources

[Bernstein 96] Bernstein, Philip A. "Middleware: A Model for Distributed Services." Communications of the ACM 39, 2 (February 1996): 86-97.
[Client 95] "Middleware Can Mask the Complexity of your Distributed Environment." Client/Server Economics Letter 2, 6 (June 1995): 1-5.
[Eckerson 95] Eckerson, Wayne W. "Three Tier Client/Server Architecture: Achieving Scalability, Performance, and Efficiency in Client Server Applications." Open Information Systems 10, 1 (January 1995): 3(20).
[Schreiber 95] Schreiber, Richard. "Middleware Demystified." Datamation 41, 6 (April 1, 1995): 41-45.

Current Author/Maintainer

Mike Bray, Lockheed-Martin Ground Systems

Modifications

25 June 97: modified/updated OLE/COM reference to COM/DCOM
10 Jan 97 (original)


The Software Engineering Institute (SEI) is a federally funded research and development center sponsored by the U.S. Department of Defense and operated by Carnegie Mellon University.

Copyright 2008 by Carnegie Mellon University
Terms of Use
URL: http://www.sei.cmu.edu/str/descriptions/middleware_body.html
Last Modified: 24 July 2008