Essentially, middleware is a distributed software layer, or platform which abstracts over the complexity and heterogeneity of the underlying distributed environment with its multitude of network technologies, machine architectures, operating systems and programming languages. Different middleware platforms support different programming models. Not all middleware is object based, however. Two other popular paradigms are event based middleware and message oriented middleware both of which mainly employ single shot communications rather than the request-reply style communication found in object based middleware. Event based middleware is particularly suited to the construction of non-centralized distributed applications that must monitor and react to changes in their environment.
Examples are process control, Internet news channels and stock tracking.
It is claimed that event based middleware has potentially better scaling properties for such applications than object based middleware. Message oriented middleware, on the other hand, is biased toward applications in which messages need to be persistently stored and queued. Workflow and messaging applications are good examples.