An Introduction to Middleware Architectures and Technologies
A software architect needs to know possible options available for software components to communicate. This is the main role of software middleware
Overview
Using an analogy, it is the equivalent of the plumbing or wiring for software applications.
- Middleware provides ways to connect the various software components in an application, so they can exchange information using relatively easy-to-use mechanisms.
- Middleware can be used to wire together numerous components in useful, well understood topologies: one-to-one, one-to-many or many-to-many.
- From the application user’s perspective, middleware is completely hidden — as long as it works, and works well, middleware is invisible infrastructure.
The distributed system provides the means for components of a single distributed application to communicate with each other, but also to let different applications communicate.

Figure 2.1 The middleware layer extends over multiple machines.
That said, there’s much more detail that must be addressed to build real systems, issues like exceptions, locating servants and multithreading to name just a few.
Middleware Classification
In reality middleware is much more complex than the simple analogy as described earlier. Different application domains tend to regard different technologies as middleware.

Figure 2.2 Classifying middleware technologies.
Brief explanations of the categories are below:
- The transport layer represents the basic pipes for sending requests and moving data between software components.
- Application servers are typically built on top of the basic transport services. They provide additional capabilities such as transaction, security and directory service.
- Message brokers exploit either a basic transport service and/or application servers and add a specialized message processing engine.
- Business process orchestrators (BPOs) augment message broker features to support workflow-style applications.