MOM is software that resides in both portions of client/server architecture and typically supports asynchronous calls between the client and server applications. Message queues provide temporary storage when the destination program is busy or not connected. MOM reduces the involvement of application developers with the complexity of the master-slave nature of the client/server mechanism.
MOM comprises a category of inter-application communication software that generally relies on asynchronous message-passing, as opposed to a request-response metaphor.
Most message-oriented middleware depend on a message queue system, but there are some implementations that rely on broadcast or multicast messaging systems.
The bank had stored all its customer details on its large mainframe since the 1960s. This mainframe remained in heavy use and underwent several upgrades.
Although ground-breaking in its day, the mainframe's usefulness to the bank’s staff diminished as the bank introduced new, separate applications based on personal computers (PCs), allowing the bank’s staff to offer customers new services that the mainframe could not support.
One of the early stages, a member of the WebSphere family from IBM, WebSphere MQ (formerly MQSeries) is the most popular system for messaging across multiple platforms, including Windows, Linux, IBM mainframe and midrange, and Unix. WebSphere MQ is often referred to as "MQ" or "MQSeries"
An ideal situation would allow the PC-based application to link to the older mainframe application and allow the mainframe and the PCs to share each others' data. Accessing the mainframe’s data offers two advantages:
new front-end PC applications can replace the old user-unfriendly mainframe terminals
PC-based systems can use the data from the mainframe in new ways — previously impracticable due to the constraints of the mainframe’s software
Up until the late 1980s systems builders had no easy way to link these different applications together. Developers faced several challenges:
the developers would have to construct a separate software ‘adapter’ on both systems to translate data from source applications into a format that the destination system could understand (and vice versa).
the processing speed of each system would constrain the other system. For example, if the mainframe ran slowly, the PC-based application would have to wait until the mainframe caught up, thereby slowing down the PC application. Conversely, processing that had been offloaded to distributed servers for cost reasons would run slowly and the mainframe would have to wait until the server caught up.
communications programmers would need to install a network gateway system to form a bridge between the mainframe’s network and the PC network if the different systems used different network protocols. The gateway would translate the network packets from the source system and pass them on to the destination system using the destination system’s protocol.
Such issues made integration between applications difficult. Much of such integration also required re-engineering every time two applications on disparate platforms needed linking together, as every situation differed to some extent. By devoting effort to linking together applications on different systems, IT departments started to spend nine or ten times the amount spent on original development per sub-system.
Developers apparently needed a separate piece of software that would literally sit in the middle of two or more applications and would handle all the ‘plumbing’ between the two systems. Such software needed the intelligence to handle different platforms, different programming languages, various network protocols and diverse hardware. Developers allegedly wanted to remove themselves from the complexities of the underlying computing infrastructure so that they could focus on functionality within actual applications.
Towards the end of the 1980s middleware began to emerge that attempted to address these issues. Initial middleware offerings addressed specific handfuls of platforms or languages and thus had limited usefulness. Over time, however, middleware products have become more and more advanced, supporting multiple platforms, languages and protocols.
The ability of middleware to link together disparate systems across a heterogeneous network environment offers only one example of the benefits of this dominant technology. Middleware as of 2006 provides a whole raft of new functionality that augments and enhances the existing applications that it interconnects.
The primary advantage of a message-based communications protocol lies in its ability to store, route or transform messages in the process of delivery.
In addition, many inter-application communications have an intrinsically synchronous aspect, with the sender specifically wanting to wait for a reply before continuing (see real-time computing and near-real-time for extreme cases). Because message-based communication inherently functions asynchronously, it may not fit well in such situations. That said, most MOM systems have facilities to group a request and a response as a single pseudo-synchronous transaction.
The Java EE programming environment provides a standard API called JMS (Java Message Service), which is implemented by most MOM vendors and aims to hide the particular MOM API implementations. Microsoft's MSMQ doesn't support JMS, although there are third-party products that can offer this.
An additional trend sees message-oriented middleware functions being implemented in hardware - usually Field Programmable Gate Arrays or other specialized silicon chips.
© Wiziontech Solutions | Created by Thiyagaraaj