Op berichten georiënteerde systemen zijn niet nieuw. Edi, e-mail en vele robuuste transactiesystemen, zoals telebankieren, zijn gebaseerd op het store and forward-beginsel. Deze opsomming illustreert de diversiteit aan applicaties en de resulterende variëteit aan betrokken systemen.
E-mail bijvoorbeeld moet goedkoop en makkelijk zijn. Het is gericht op een breed publiek. Dat vereist vertaling van adressen, formaten etcetera in gespecialiseerde communicatiepoort-produkten. Daarentegen zal niemand lichtvaardig denken over een systeem voor financiële transacties. Beveiliging, herstel en responstijd krijgen veel aandacht. Dit betekent dat speciale connecties worden gebruikt en dat men robuustere systemen kiest. Uit het laatste volgt dat men strengere eisen stelt aan het aantal en het type systemen. Voor dergelijke specifieke applicaties zijn meestal geen communicatiepoorten nodig.
Het concept achter bericht-gebaseerde systemen is veralgemeend en gericht op een breed scala aan zakelijke applicaties. Dit betekent dat veel verschillende systemen in gebruik zijn, terwijl men toch aandacht moet besteden aan de details die horen bij robuuste transactieverwerking. Dat heeft geleid tot de introductie van gegeneraliseerde middleware (message-oriented middleware, mom), in plaats van het inbedden van functionaliteit in applicaties.
Omdat organisaties bericht-gebaseerde systemen voor zowel intern als extern verkeer benutten, is het onmogelijk om voor te schrijven welk systeem moet worden gebruikt. Het doel van middleware is om de verantwoording voor de ondersteuning van een reeks computersystemen weg te halen bij de applicatie. In plaats daarvan krijgt de applicatie een api die onafhankelijk is van het netwerk en dergelijke. Daardoor zijn ook andere systemen inzetbaar, als er middleware beschikbaar is. Er is meer kans dat een mom-leverancier die middleware kan leveren dan dat organisaties beschikken over uiteenlopende expertise op applicatieniveau.
Bij de keuze van een mom-produkt zijn twee zaken belangrijk: het platform en het netwerk. Het platform betreft de hardware, en dus de processor en het besturingssysteem. Compilers voor verschillende talen moeten de mom-api ondersteunen. In de praktijk zullen die afhankelijk zijn van zowel de taal als het besturingssysteem. Ga na of een mom-produkt uw favoriete talen en besturingssystemen ondersteunt voordat u zich eraan bindt. Het netwerk moet transparant zijn voor de mom èn verschillende transportmogelijkheden ondersteunen. Op dit moment domineren SNA en TCP/IP de berichtenmarkt, maar Decnet en X.25 hebben nog steeds een grote geïnstalleerde basis. De eenvoudige PC-netwerkprotocollen (Netbeui en IPX/SPX) zullen waarschijnlijk geen rol spelen in de mom-wereld, omdat TCP/IP ze zelfs voor simpele kantoortoepassingen al verdringt, laat staan voor robuuste transactiesystemen.
Mom biedt een consistente end-to-end api, maar het produkt zelf moet ook een gemeenschappelijk intern protocol gebruiken. Persistentie is een specifiek voorbeeld hiervan. De applicatie die iets verstuurt, heeft een eigen lokale mom-agent nodig om dat bericht te accepteren. Als het bericht geaccepteerd is, kan de applicatie doorgaan in de veronderstelling dat het afgeleverd is, of beter gezegd, dat het bezorgd zal worden. Dit is het asynchrone of onmiddellijke-return programmeermodel. Het bericht is echter nog niet bezorgd; de twee mom-agents moeten dat alsnog doen, en wel betrouwbaar en niet meer dan één keer. Op dit niveau wordt functionaliteit als prioriteitsstelling, multi-cast en fragmentatie uitgevoerd. Dat gebeurt onafhankelijk van de applicaties, maar moet wel beheerd worden. Daarvoor zijn tabellen nodig, waarin de voor de diverse berichtentypen en eigenaars relevante regels vastliggen en worden onderhouden.
Cruciaal zijn de ‘onderhandelingen’ tussen de twee mom-subsystemen. Dit aspect is transparant voor de applicaties. Mom’s onderhandelen bijvoorbeeld over betrouwbare aflevering. De afzender bewaart het bericht op een niet-vluchtig opslagmedium tot de ontvanger meldt dat het in goede staat ontvangen is. Dit heet persistentie. Om transacties te initiëren, te bewaken en te beheren zijn mom-to-mom-protocollen nodig. Mom-produkten zijn dus alleen compatibel als zowel de api als de mom-to-mom-protocollen compatibel zijn. Gemeenschappelijke api’s garanderen nog geen samenwerking. Daarom blijven communicatiepoorten nodig voor het koppelen van diverse mom’s.