Middleware is a computer software that connects software components or applications. It acts as a pipeline. It is a fundamental aspect of distributed architectures/applications. It includes web servers, application servers, and similar tools that support application development and delivery. Middleware is usually based on XML, SOAP, Web services, and service-oriented architecture. Examples include EAI software, telecommunications software, transaction monitors, and messaging-and-queueing software.

  • Middleware is like piping in buildings (between applications and application components to talk to each other)
  • MW usually sits between the application and OS
  • MW technologies: Business Process Orchestrator (BPO), Message Brokers, Application Servers, ….

MOM (Message Oriented Middleware)

  • There are queues/topics between senders and receivers proving a level of indirection
  • Can behave synchronously or asynchronously
  • Levels of message delivery guarantee (QoS) in MOMs: Best effort, persistent, transactional. High levels of reliability come at a performance cost though.
  • We might have one way or two way (send-receive) messaging styles
  • Queue is basically a 1-1 communication but topics are m-m or 1-m.
  • The underlying protocol a MOM uses affects performance. Most of MOM servers use tcp/ip sockets but in case of publish-subscriber (topic) a multicast messaging might work better.
  • We can have hierarchy for topics

Business Process Orchestration (BPO)

  • Is used to automate more and more business processes that must access numerous independent business applications.
  • BPO platforms are commonly built as a layer on top of a message broker. They extend message broker by adding: state management, deployment and development tools.

Application Integration

  • Heterogeneous applications directly talking to each other will result in a spaghetti architecture for which we can use a broker.
  • Another cure for spaghetti architecture is to define an enterprise data model (also known as a canonical data model) that becomes the target format for all message transformations between applications. This reduces the complexity compared to the broker but is more difficult to come to an agreement on a data model. This method is good for a set of green field enterprise applications but for already running applications it is too difficult to come to an agreement on a data model.


REpresentational State Transfer is roughly about invoking web services through special form of URLs. This is not the best definition but a good start. REST can manage systems by decoupling the information that is produced or consumed from the technologies that are involved.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License