An acronym for Message Orientated Middleware. This is software that passes data between applications by means of enscapsulating it in packet-like structures called messages. The movement of these messages is co-ordinated over the network from application to application by middleware. This is like e-mail for programs, though middleware provides other functionality too.

To give an example, suppose Widget Inc. wants to create a website to sell it's industry leading resons online. It has to connect it's existing infrastructure (production orders, invoicing, etc.) to the web frontend. This existing infrastructure is spread over various machines on its network.

How could you do this? Assuming the old applications already have some exposed APIs, one way is to invoke them directly when a customer hits the submit button on their order basket.

This is nice and simple, but potentially has a number of problems. What if the network fails while the customer's order is being processed? They might receive an invoice but no delivery of resons. Or what if slashdot posts a story about reson cooled PCs performing better than water-cooled ones? Your order system might quickly become overloaded.

Middleware can handle these problems (god, I sound like a salesperson). Here, when a user hits the submit button, messages are generated and put onto a queue server. The middleware delivers these to the legacy applications (they have to know about messages which may require some rewriting or adapter programs) which process the order in the same way as before.

But this time, if the network goes down, the middleware can preserve all the messages so that when it comes back up, nothing has been lost. Equally, if the site is suddenly hit with large numbers of orders, the middleware can start up more instances of the handling applications, in much the same way that Apache can create and shutdown extra instances of itself to handle demand for web pages.

These are some of the advantages. What are the disadvantages? It's certainly a lot of infrastructure to put in if you don't already have it. And it costs, if not for the software, then definitely for all the extra staff you'll need to put it in

An associated buzz phrase is EAI - Enterprise Application Integration.