Message Oriented Middleware (MOM)

Post on 13-Dec-2014

3352 Views

Category:

Education

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Was ist Middleware? Unterschiedliche Middleware Arten Grundlagen und Eigenschaft von Message Oriented Middleware Implementierungsdetails Beispiele (JMS)

Transcript

Seminar „Enterprise Applications“Daniel Kersting

11.12.2008

Ein Beispielszenario

2» MotivationMessage Oriented Middleware (MOM)

Was ist Middleware? Unterschiedliche Middleware Arten Grundlagen und Eigenschaft von MOM Implementierungsdetails Beispiele

3» InhaltsverzeichnisMessage Oriented Middleware (MOM)

Erste AnnäherungEigenschaften

BeispieleDefinition

4» Was ist MiddlewareMessage Oriented Middleware (MOM)

Erste Annäherungen• Das Wort Middleware

Deutsch: „Zwischenanwendung“ Bezeichnet Software „in der Mitte“

Bezeichnung manchmal missverständlich Viele Middleware Produkte eher wie Server Nicht unbedingt in der Mitte

• Software Klebstoff• Der "/" in Client/Server

5» Was ist Middleware » Erste AnnäherungMessage Oriented Middleware (MOM)

Im ISO/OSI Protokollstack

6» Was ist Middleware » Im ISO/OSI ProtokollstackMessage Oriented Middleware (MOM)

Eigenschaften• Anwendungsneutrale Programme• Kommunikationsinfrastruktur• Vermittelt zwischen Anwendungen• Kommunikation zwischen Prozessen

Fast immer TCP/IP Darauf aufbauend meist HTTP, SOAP…

• Protokoll einer höheren Schicht• Setzt auf verteiltem System auf

7» Was ist Middleware » EigenschaftenMessage Oriented Middleware (MOM)

Beispiele• Die meisten EAI-Produkte beinhalten Middleware-

Funktionalität• Typische Middlewareprodukte

Enterprise Service Bus von Oracle Exchange Infrastructure von SAP (SAP XI) WebSphere Application Server von IBM Common Object Request Broker Architecture (CORBA) von

der Object Management Group (OMG)

8» Was ist Middleware » BeispieleMessage Oriented Middleware (MOM)

MIDDLEWARE KEINE MIDDLEWARE

PHP J2EE JavaScript Hardwaretreiber

Betriebssystem Datenbank Webbrowser Apache Webserver

9» Was ist Middleware » BeispieleMessage Oriented Middleware (MOM)

Allgemein Definition von Middleware:Anwendungsneutrale "Zwischenanwendung" mit Schnittstellencharakter welche zwischen zwei Stücken Software (über ein Netzwerk) vermittelt

10» Was ist Middleware » DefinitionMessage Oriented Middleware (MOM)

KommunikationsorientiertAnwendungsorientiertNachrichtenorientiert

Nachricht vs. Befehl

11» Unterschiedliche Middleware ArtenMessage Oriented Middleware (MOM)

Kommunikationsorientiert• Engl: Transaction Oriented Middleware• Abstraktion von Netzwerkprogrammierung• Entfernte Methodenaufrufe• Beispiele: RPC, Java RMI, Web Service

12» Unterschiedliche Middleware Arten » KommunikationsorientiertMessage Oriented Middleware (MOM)

Anwendungsorientiert• Engl. Distributed Objects and Components• Unterstützung verteilter Anwendungen• Beispiele: CORBA, J2EE oder .NET• Aber auch MIDP (Mobile Information Device Profile),

MHP (Multimedia Home Platform)

13» Unterschiedliche Middleware Arten » AnwendungsorientiertMessage Oriented Middleware (MOM)

Nachrichtenorientiert• Engl. Message Oriented Middleware (MOM)• Arbeitet nicht mit Methoden- oder Funktionsaufrufen

Austausch von Nachrichten Empfänger nimmt Nachricht an, sobald er bereit ist Weitgehende Entkopplung von Sender und Empfänger

• Nachrichtenformat gibt eingesetzte Middleware vor • Kann sowohl synchron als auch asynchron arbeiten• Beispiele: JMS, MSMQ, MQSeries

14» Unterschiedliche Middleware Arten » NachrichtenorientiertMessage Oriented Middleware (MOM)

NACHRICHT (MOM) BEFEHL (RPC)

1. Ein Feuer brennt2. Ein Sensor sendet Nachricht:

„Ein Feuer brennt“3. Empfänger sind beliebig

• Feuerwehr• Löschanlage• Feuertüren• …

1. Ein Feuer brennt2. Ein Sensor

• Informiert Feuerwehr• Startet Löschanlage• Schließt Feuertüren• …

15» Unterschiedliche Middleware Arten » Nachricht vs. BefehlMessage Oriented Middleware (MOM)

Nachricht vs. Befehl

16» Unterschiedliche Middleware Arten » Nachricht vs. BefehlMessage Oriented Middleware (MOM)

Nachricht vs. Befehl

17» Unterschiedliche Middleware Arten » Nachricht vs. BefehlMessage Oriented Middleware (MOM)

WarteschlangeAsynchrones Kommunikationsmodell

KomponentenVor- und Nachteile

18» Grundlagen und EigenschaftenMessage Oriented Middleware (MOM)

Warteschlange nach FIFO Prinzip

19» Grundlagen und Eigenschaften » WarteschlangeMessage Oriented Middleware (MOM)

Asynchrones Kommunikationsmodell • Nicht auf Antwort warten• Sender blockiert nicht• Vergleiche: E-Mail

20» Grundlagen und Eigenschaften » Asynchrones KommunikationsmodellMessage Oriented Middleware (MOM)

Komponenten• Nachrichten (Messages)• Warteschlangen (Queues)• Datentransfer Schnittstelle (Messaging Clients)

21» Grundlagen und Eigenschaften » KomponentenMessage Oriented Middleware (MOM)

Komponenten• Nachrichten (Messages)

Header Routing Identifikation/Authentifikation Priorität

Body Application Data Message Content

22» Grundlagen und Eigenschaften » KomponentenMessage Oriented Middleware (MOM)

23» Grundlagen und Eigenschaften » KomponentenMessage Oriented Middleware (MOM)

<? xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <login:sicherheit xmlns:login="http://example.com/login/"> <login:benutzername>Peter Muster</login:benutzername> <login:passwort>meinpasswort</login:passwort> </login:sicherheit> </soap:Header> <soap:Body> <bank:KontoStand xmlns:bank="http://example.com/bank/"> <Gutschrift>100.00</Gutschrift> </bank:KontoStand> </soap:Body></soap:Envelope>

Komponenten• Beispiel: SOAP Nachricht

Komponenten• Warteschlangen (Queues)

„Mailbox“ einer MOM (MOM-Server) Empfangen und Speichern von Nachrichten Beim Sender oder Empfänger lokalisiert Persistent

Speichern Nachrichten physikalisch Garantierte Übertragung Resourcenhungrig

Non-persistent Speichern Nachrichten nur im RAM

24» Grundlagen und Eigenschaften » KomponentenMessage Oriented Middleware (MOM)

Komponenten• Datentransfer Schnittstelle (Messaging Clients)

Sender/Empfänger Bieten API an

Nachrichten senden/empfangen Session starten Nachricht vorbereiten Routing Parameter

25» Grundlagen und Eigenschaften » KomponentenMessage Oriented Middleware (MOM)

Komponenten

26» Grundlagen und Eigenschaften » KomponentenMessage Oriented Middleware (MOM)

Vorteile• Asynchrone/synchrone Kommunikation

Server/Dienst muss nicht sofort verfügbar sein Message-Warteschlangen

• Schnellere Ausführung Im Vergleich zu Funktionsaufruf-basierten Programmen

• Lose Kopplung von Server/Clients• Mehr Toleranz für Änderungen bestehender Funktion• Verbesserte Verfügbarkeit• Parallele Verarbeitung von Nachrichten

27» Grundlagen und Eigenschaften » Vor- und NachteileMessage Oriented Middleware (MOM)

Nachteile• Ausfall legt alle angeschlossenen Systeme lahm• Designen, Testen, Debuggen und Entwicklung der

Bauteile für Synchron-Programmierer ungewohnt• Zusätzlich Komponenten bzw. Infrastruktur benötigt• Kommunikation zwischen Applikationen oft synchron• Viele unterschiedliche Standards

28» Grundlagen und Eigenschaften » Vor- und NachteileMessage Oriented Middleware (MOM)

Typen der KommunikationMOM Frameworks

29» ImplementierungsdetailsMessage Oriented Middleware (MOM)

Typen der Kommunikation• Message Passing • Message Queueing (Point-to-Point)• Broadcasting• Publish & Subscribe

30» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)

Typen der Kommunikation• Message Passing

Synchrone Kommunikation Über asynchrone Middleware

Direkte Kommunikation zwischen Applikationen Verhält sich ähnlich wie RPC Request/Reply

Sender blockiert, bis Antwort eintrifft Realisierung z.B. über zwei Warteschlangen

31» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)

Message Passing

32» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)

Typen der Kommunikation• Message Queueing

Asynchron Punkt zu Punkt Indirekte Kommunikation über eine Nachrichtenqueue

33» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)

Message Qeueing

34» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)

Typen der Kommunikation• Broadcasting

Nachricht wird an alle erreichbaren Sender versendet

35» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)

Broadcasting

36» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)

Typen der Kommunikation• Publish & Subscribe

Asynchron Broadcast-Kommunikation

Nachricht wird an alle erreichbaren Sender versendet Publisher

Veröffentlichen Nachrichten zu einem Thema Subscriber

Abonnieren bestimmte Themen Vermittlung durch Broker Vergleichbar mit Observer Pattern

37» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)

Vermittler (Broker)

Publish & Subscribe

38» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)

MOM Frameworks• Message Queueing

Indirekte Kommunikation über eine Nachrichtenqueue Punkt zu Punkt Buffered/Persistent MQSeries (IBM)

• Message Broker Vermittler Punkt zu Mehrpunkt ESB

39» Implementierungsdetails » MOM FrameworksMessage Oriented Middleware (MOM)

Message Queueing

40» Implementierungsdetails » MOM FrameworksMessage Oriented Middleware (MOM)

Message Queueing

41» Implementierungsdetails » MOM FrameworksMessage Oriented Middleware (MOM)

Message Broker

42» Implementierungsdetails » MOM FrameworksMessage Oriented Middleware (MOM)

JMSMSMQ

MQSeries

43» BeispieleMessage Oriented Middleware (MOM)

JMS (Java Message Service)• Teil der Java2 Enterprise Edition (J2EE)• Programmierschnittstelle (API)

Ansteuerung von MOM aus einem Client heraus• Man unterscheidet zwei Rollen:

JMS-Provider: der jeweilige MOM-Server JMS-Client: Sender bzw. Empfänger von Nachrichten

• JMS unterstützt: Publish/Subscribe Point-to-Point Request-Reply Modell

• Warteschlange kann persistent sein

44» Beispiele » JMSMessage Oriented Middleware (MOM)

JMS

45» Beispiele » JMSMessage Oriented Middleware (MOM)

public class HelloProducer{ public HelloProducer() {

ConnectionFactory cf = new com.sun.messaging.ConnectionFactory(); Connection connection = cf.createConnection(); Session session = connection.createSession(…); Destination destination = session.createQueue("HelloWorld"); MessageProducer producer = session.createProducer(destination); connection.start(); TextMessage message = session.createTextMessage(); message.setText("Hello World"); producer.send(message); producer.close(); connection.close(); }

public static void main(String args[]) { new HelloProducer(); }}

46» Beispiele » JMSMessage Oriented Middleware (MOM)

public class HelloConsumer{ public HelloConsumer() {

ConnectionFactory cf = new com.sun.messaging.ConnectionFactory(); Connection connection = cf.createConnection(); Session session = connection.createSession(…); Destination destination = session.createQueue("HelloWorld"); MessageConsumer consumer = session.createConsumer(destination); connection.start(); TextMessage m = (TextMessage)consumer.receive(); System.out.println(m.toString()); consumer.close(); session.close(); connection.close(); } public static void main(String args[]) { new HelloConsumer(); } }

47» Beispiele » JMSMessage Oriented Middleware (MOM)

Microsoft Message Queue (MSMQ)• 1998 Windows NT Addon• ActiveX API• Point-To -Point Modell• Intelligentes Routing• Transaktions Management

48» Beispiele » MSMQMessage Oriented Middleware (MOM)

MQSeries• Mittlerweile „Websphere MQ“• Plattformunabhängige MOM von IBM (1992)

Austausch von Nachrichten zwischen heterogenen Anwendungen auf verschiedenen Plattformen

• Asynchrone Datenübertragung• Point-To -Point Modell• Intelligentes Routing• Weite Verbreitung

49» Beispiele » MQSeriesMessage Oriented Middleware (MOM)

MQSeries• Transaktions Management

Interne Transaktion Nachrichten im Fehlerfall neu übertragen

Externe Transaktion Selbst Transaktion

50» Beispiele » MQSeriesMessage Oriented Middleware (MOM)

MQSeries

51» Beispiele » MQSeriesMessage Oriented Middleware (MOM)

MQSeries• Programmierschnittstelle MQI

MQCONN – mit dem Queue-Manager verbinden MQDISC – vom Queue-Manager trennen MQOPEN – Message Queue öffnen MQCLOSE – Message Queue schließen MQGET – Lesen aus Message Queue MQPUT – Schreiben in Message Queue MQPUT1 – Öffnen, Schreiben & Schließen MQBEGIN – Transaktion beginnen MQBACK – Transaktion zurücknehmen MQCMIT – Transaktion bestätigen MQINQ – Attribute eines MQ-Objekts abfragen MQSET – Attribute eines MQ-Objekts setzen

52» Beispiele » MQSeriesMessage Oriented Middleware (MOM)

ZusammenfassungFragen?

53» EndeMessage Oriented Middleware (MOM)

Eine Middleware heißt nachrichtenorientierte Middleware (MOM) genau dann, wenn die Kommunikation zwischen den beteiligten Komponenten durch den Austausch von Nachrichten über eine Zwischeninstanz erfolgt.

54» Ende » ZusammenfassungMessage Oriented Middleware (MOM)

55

top related