When going through the statistics for the Middleware Resource Center, I have noticed that from time to time the search phrase "what is middleware" brings people to the site. That's a fair question and one that deserves an answer.Of course, in the IT business, the answer is always, "That depends." Some people have claimed to me that they think software like HP OpenView is middleware. I'm not going to debate that point, but I will point out that when we refer to middleware on this site, we are generally referring to integration middleware.
That still covers a lot of ground, so let's try a few definitions on for size. These are definitions I have seen in various places.
Middleware is software glue. This doesn’t tell us much, but several definitions you’re likely to see on the web will describe it as such.
Middleware is the slash in Client/Server. That’s fine as far as it goes, but is deceptively simplistic. This definition concentrates the term on one computing paradigm and masks the complexity of what middleware as a broad category is and does.
The Free On-line Dictionary of Computing, by Denis Howe offers this definition. Software that mediates between an application program and a network. It manages the interaction between disparate applications across the heterogeneous computing platforms. The Object Request Broker (ORB), software that manages communication between objects, is an example of a middleware program.
This is actually a reasonably good definition. I would change “application program” to “piece of software” and remove the reference to a network. Middleware can be used between application programs and other software facilities such as database managers. The term “mediate” is a good one. That is exactly what middleware does.
Look beyond the ORB for examples of middleware, though. There are many kinds. We’ll mention a few later.
The online Wikipedia Middleware entry (Note that the text may change given the nature of Wiki) defines middleware thus. Middleware is computer software that connects software components or applications. It is used most often to support complex, distributed applications. It includes web servers, application servers, content management systems, and similar tools that support application development and delivery. Middleware is especially integral to modern information technology based on XML, SOAP, Web services, and service-oriented architecture. It goes on to say that it describes a piece of software that connects two or more software applications so that they can exchange data.
Middleware is an “intermediary.” This type of software is used in complex environments and it doesn’t necessarily represent one-to-one interactions between software agents. Middleware is essential to Enterprise Application Integration or EAI.
That brings the definition close to home, because as we pointed out earlier, the Middleware Resource Center (http://www.middleware.org) concentrates on application integration middleware.
At the Middleware Resource Center, we tend to use this definition. Middleware is any software that allows other software to interact. Again, it isn’t complete, but it is accurate. Completeness, however, may tax the patience of you, the reader.
So let’s list the types of middleware we look at on our site.
Message Oriented Middleware. This is a large category and includes asynchronous store and forward application messaging capabilities as well as integration brokers that perform message transformation and routing or even business process coordination.
Object Middleware. This category consists largely of Object Request Brokers that were mentioned on one of the earlier definitions.
RPC Middleware. This type of middleware provides for calling procedures on remote systems, hence the name Remote Procedure Call. Unlike message oriented middleware, RPC middleware represents synchronous interactions between systems and is commonly used within an application.
Database Middleware. Database middleware allows direct access to data structures and provides interaction directly with databases. There are database gateways and a variety of connectivity options. Extract, Transform, and Load (ETL) packages are included in this category.
Transaction Middleware. This category as used in the Middleware Resource Center includes traditional transaction processing monitors (TPM) and web application servers. One could make the case for splitting the category.
Portals. We include enterprise portal servers as middleware largely because they facilitate what we refer to as “front end” integration. They allow interaction between the user’s desktop and back end systems and services.
**This isn't a complete list. Elsewhere you will find other software included in the category and you will find other definitions of middleware.**