ARGH - now what is middleware?
Relax. This one is easy - middleware is software that is placed between two systems (ie. in the middle).
Ok so what is it doing there? The simple answer is Middleware is facilitating. Take the following analogy:
You seat yourself, along with your friends/family at a table in a restaurant. Your goal is to get food from the kitchen onto your table. You achieve this objective by speaking with a waitress. Her name: Middleware. As a customer, you look to Middleware for information on kitchen contents, capabilities and specialties. Middleware can speak customer (smiles and prompt service) and can also speak 'kitchen' (clear, concise and demanding). Middleware will go to the kitchen to convey your orders and return the result (your food) and to the correct recipient. Should you require more food, have a complaint or even a compliment, middleware can pass on your message - That’s her job.
Software is very similar, you have two (2) disparate groups (Customer/Cook or ERP/CRM) that need to 'talk'. You need a translator, facilitator, you need middleware! Middleware will speak both languages and communicate those messages to the other party (check out my post: "Psst! I have something to share...EAI"). The messages can be between related or unrelated systems - all that matters is a need to share some information.
Give me some - I'm sold
Ok so where do you get it? The answer: it depends. There are a lot of third party vendors that offer various middleware solutions such as those offered by Microsoft ( BizTalk ), IBM and SAP. Let talk about BizTalk for a second, "BizTalk enables your organization to seamlessly integrate disparate systems and connect business partners ". In english, here’s a picture:
What this is showing is the waitress/middleware as BizTalk Server and the customers as, for example, Inventory Application. The middleware communicates with the inventory app and passes on the request to the kitchen (ERP). Ultimately this communication results in fulfillment :D
To sum it up - middleware provides a common platform where messages can be exchanged between two systems as to share information that would not have otherwise been possible.
Hope this helps and not hinders, Enjoy!