Skip to content

Middleware

Fábio Nogueira edited this page Dec 7, 2016 · 3 revisions

Home -> Basic Concepts

Distributed Systems and Middleware

Developing a distributed application envolves lots of different activities that are not directly related to the domain problem. In this scenario, it is not difficult to see applications on which the business code is tangled to communication aspects such as connection management and parameter marshalling.

In fact, developing distributed applications is very hard. There are lots of different challenges that need to be addressed. First of all, distributed systems are composed of distributed elements that need to interact. Programming interprocess communicatition is very hard and error prone, once it envolves lots of low level details. Distributed system components execute concurrentlly introducing the necessity of a controlling mechanism. The network presence turns it difficult (if not impossible) to obtain a vision of the global state of the system, so it is hard to predict failures. These failures can also be partial, meaning that a particular element has failed, but the system can continue to operate. To complicate this scenario even more, distributed systems are inherently heterogeneous, and comprise different hardware elements, operating systems, programming languages, etc.

To tackle those challenges, a new layer of software, called middleware, was introduced. Middleware fits between network operating systems and application components and offer to the developers a higher level programming interface. Besides abstracting communication aspects, middleware platforms usually provide a set of services to support non-functional requirements, sush as security, transaction and naming and directory services.

Taxonomy

Middleware platforms can be classified based on primitive abstractions that they provide to enable the communication between distributed application elements. Based on this criteria, Emmerich identified four distinct categories:

  • Transactional middleware: uses the two-phase commit protocol to implement distributed transactions.
  • Message-oriented middleware: supports assynchronous communication between distributed componentes by message exchanging.
  • Remote Procedure Call(RPC) middleware: enables the calling of a remote procedure as if it were a local one.
  • Object-oriented middleware: combines object-oriented programming ideas with RPC enabling access to remote objects.

The ideas of high-coehsion and loose cowpling lead to the proposition of components and services as application elements. These technologies have various similarities, such as configuration and deployment concerns

References

Middleware explained Software Engeneering and Middleware: a Roadmap

Clone this wiki locally