10 Nachrichtenorientierte Middleware

Slides:



Advertisements
Ähnliche Präsentationen
Kapitel 8: Nachrichtenbasierte Kommunikation mit JMS
Advertisements

Vs61 6 Verteilte Datenverwaltung. vs62 Ziel:Zusammengehöriger Datenbestand soll über mehrere Stationen verteilt werden, z.B. Fragmentierung: in mehrere.
JMS - Java Message Service ist Schnittstelle zu Implementierungen verschiedener Anbieter (z.B. IBM MQSeries) ist sehr liberal bezüglich der Semantik.
6.3 Ereignisbasierte Systeme Ereignis (event) : eine Ereignis-Quelle (event source, publisher) generiert Benachrichtigung (event notification), an der.
4 Verteilte Algorithmen
Vs Klassifizierung von Kommunikationsdiensten synonym:Nachrichtensystem/dienst(message service) Kommunikationssystem/dienst(communication service)
Real - Time Java Seminar Asynchrone Ereignisse und Asynchroner Kontrolltransfer in Real - Time Java Sönke Eilers.
Pascal Busch, WWI00B – Vergleich CORBA vs. Web Services hinsichtlich der Applikationsintegration Web Services vs CORBA Web Services vs CORBA Ein Vergleich.
Threads Richard Göbel.
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
DOM (Document Object Model)
Kommunikation in verteilten Systemen (Middleware)
Sebastian Grahn Sebastian Kühn
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Strukturänderungen Verteilte Anwendungen Wintersemester 06/07 © Wolfgang Schönfeld.
Seminar Internet Technologien
DVG Klassen und Objekte
JDBC EDV JDBC.
Einführung in die Programmierung Datensammlung
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
UML Begleitdokumentation des Projekts
Common Object Request Broker anhand eines Beispiels Aufgabestellung ( Ein Konto wird von einem Server verwaltet. Der Stand des Kontos wird.
1 Dienstbeschreibung mit DAML Ein graphischer Editor für DAML - Ting Zheng Betreuer: Michael Klein, Philipp Obreiter.
OGSI und Jini im Focus Sebastian Albrecht. 2 Gliederung OGSI Einordnung neue Komponenten Zukunft Jini Entstehung Architektur Lookup Service Bewertung.
Entwicklung verteilter eingebetteter Systeme - Einführung
Mark Doll – 1/21V3D2 Workshop 2003, Frankfurt/Main 19./ http:// Ansätze für eine Web-basierte Initiierung qualitätsbasierter Kommunikationsdienste.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Web Services Die Zukunft netzbasierter Applikationen iternum GmbH Alexanderstraße Frankfurt/Main
Monitoring von Geräten und Diensten Projektgruppe Location-based Services for Wireless Devices WS 2004/05 Tobias Beisel AG Kao Betriebssysteme und Verteilte.
PSI - Überblick und Szenarien
Durchsuchen, Suchen, Abonnieren Fotos, Musik, Media Informations- management VisualierungKlarheit.
6.5 Lindas Tupelraum Interaktion von Prozessen über zentralen Umschlagplatz für alle zwischen Prozessen ausgetauschten Daten: Tupelraum (tuple space) (Carriero/Gelernter,
Aichinger Christian, Strasser Jürgen. Inhalt JSF EJB Praxis - Integration.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Entwicklung verteilter Anwendungen II, SS 13 Prof. Dr. Herrad Schmidt SS 13 Kapitel 2 Folie 2 ASP.NET HTTP-Handler (1)
Welchen Problemen ist man bei heterogener, verteilter Programmierung ausgesetzt? Hardware: nicht einheitliche, inkompatible Systeme, verschiedene Leistungsfähigkeit.
Beschreiben Sie das Szenario wenn ein ORB einen Server aktiviert und eine Objektimplementation aufruft. Activate Server impl_is_ready Activate Object (GetID.
CGI (Common Gateway Interface)
Die Architektur von Jini Präsentation von Thomas Heinis & Michea Wankerl Seminar Information & Kommunikation WS 2000/01.
Management- und Web Services- Architekturen
Objectives Verstehen was unterDelegate verstanden wird
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Interprozess- kommunikation (IPC)
Push-Technologien 4.6 Was ist Push ? Einsatzgebiete Vor- und Nachteile
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
OQL-Anbindung an Java (1) Java als Beispiel für die Einbettung von OQL in eine Programmiersprache Die OQL-Einbettung in Java ist teilweise mit dynamischem.
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
->Prinzip ->Systeme ->Peer – to – Peer
7.2.4 Klassifikation mobilen Codes Nicht vergessen:  Sowohl das Fernkopieren als auch die Migration von Objekten setzt voraus, daß der Code entweder am.
Persistenz: Objekt-Lebensdauer In RDBMS wird Lebensdauer von Werten durch ihren Typ festgelegt: Instanzen von Relationstypen sind persistent, alle anderen.
Vordefinierte Datentypen (1)
2 Datenabstraktion Geheimnisprinzip:
Vs51 5 Verteilte Datenverwaltung. vs52 Situation:Zusammengehöriger Datenbestand ist über mehrere Stationen verteilt, z.B. Fragmentierung: in mehrere Fragmente.
5.1.2 Sequentielle Konsistenz
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
NET Remoting.Net („dotnet“) :von Microsoft eingeführte Plattform für verteilte Anwendungen, virtuelle Maschine für die verteilte Ausführung von.
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
Vs41 4 Verteilte Algorithmen. vs42 Prozesse als Systemkomponenten:  Spezifikation eines Prozesses ? (Vgl. Spezifikation eines ADT) syntaktisch:z.B. Ports.
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Praktikum Mobile Web 2.0 – 2.Teil Wolfgang Wörndl, Robert Eigner.
© 2012 TravelTainment Einführung in Enterprise JavaBeans Seminarvortrag von Ralf Penners Folie 1 von 34.
© WZL/Fraunhofer IPT Eine Gegenüberstellung von Websockets und RESTful Web Services Seminarvortrag von Lucie Mades.
Webservices SOAP und REST Nicole Fronhofs 1. Betreuer: Prof. Dr. Volker Sander 2. Betreuer: B. Sc. Sebastian Olscher.
Verteilte Anwendungen: J2EE
10 Nachrichtenorientierte Middleware
Tutorstunde 10.
 Präsentation transkript:

10 Nachrichtenorientierte Middleware vs10

10.1 Nachrichten- und Ereignisdienste Motivation: ? Defizite objektorientierter verteilter Systeme ?  Anderer Architekturstil sinnvoll für manche Anwendungen, z.B. Sensorsysteme, Unterstützung von Geschäftsprozessen, ...  Interaktion von Prozessen über Ereignisse, Nachrichten  Pipes? TCP-Verbindungen?  Keine festen Verbindungen zwischen Quellen und Senken von Informationen (mobile Geräte!)  Dienst für Vermittlung und persistente Zwischenspeicherung  E-mail? vs10

 Selektive Entgegennahme durch die Empfänger  Prioritäten, Filterung  Zusammengehörige Sendungen  als Bestandteile von Transaktionen  Ereignisdienst (event service) Nachrichtendienst (message service) (beide Begriffe sehr ähnlich, fast synonym) „Benachrichtigung über Ereignis“ vs10

Erzeuger Dienst Verbraucher (producers) (consumers) . . . Kanäle, Schlangen, mailboxes, topics, subjects, ... Informationsfluss: Quelle Senke Aufruf: Klient Dienst Aufruf: Dienst Klient (Rückruf, callback) vs10

Typisches Nachrichten/Ereignis-Modell class Message { 10.1.1 Nachrichtendienste Typisches Nachrichten/Ereignis-Modell class Message { String header; // message kind etc. int priority; // overrides FIFO handling Map properties; // for selective acceptance ..... String payload; // e.g., XML text } bezieht sich nur auf wenige elementare Typen (int,String,..) die „hoffentlich in allen Teilsystemen bekannt sind“ und auf die jeweiligen Programmiersprachen abbildbar sind Typisches Kanal-Modell: Menge von Nachrichten vs10

Schnittstelle eines Kanals: ínterface Channel { void put(Message msg); // erweitert die Nachrichtenmenge um msg Message get(); // entnimmt der Nachrichtenmenge eine Nachricht // - sobald vorhanden Message get(String filter); // entnimmt der Nachrichtenmenge eine Nachricht, // deren properties der Bedingung filter genügen } Beispiel für eine Bedingung: "temperature > 80" Typische Filtersprache: Teilsprache von SQL vs10

10.1.2 Ereignisdienste Registrierung von Verbrauchern/Erzeugern beim Dienst ermöglicht aktivere Rolle des Dienstes (Erzeuger:) Ankündigen (publish) von Nachrichten (Ereignismeldungen, notifications) zu bestimmtem Gegenstand (subject, topic) (Verbraucher:) Abonnieren (subscribe) von Nachrichten Gegenstand ≈ Kanal – aber Nachricht wird allen Interessenten zugestellt, nicht durch einen „weggenommen“ vs10

void subscribe(Handler h, String filter); ínterface Subject { void subscribe(Handler h, String filter); // sobald eine passende Nachricht eintrifft, // wird ein Thread erzeugt, der h.handle(msg) ausführt. // Beachte: dies geschieht für alle registrierten Abonnenten h! void unsubscribe(Handler h); // Registrierung löschen void publish(Generator g); // g.generate() wird zu gewissen Zeitpunkten aufgerufen, // um beim Erzeuger die nächste Nachricht abzurufen void unpublish(Generator g); } Bedeutung von publish häufig auch ‚put‘ vs10

Beachte  : Verbraucherseitig handelt es sich um eine asynchrone Variante des Beobachter-Musters (vgl. auch Java-Ereignisbehandlung) Beachte  : Erzeugerseitig handelt es sich um Polling, sofern generate bei Abwesenheit neuer Daten nicht blockiert Beachte  : Die Schnittstelle könnte zusätzlich die Operationen put und get enthalten Beachte  : Nachrichten werden nicht gespeichert, sondern gleich weitergegeben; was vor dem Abonnieren passiert war erfährt der Verbraucher nicht – es sei denn: Nachrichten tragen eine Angabe Lebensdauer (time-to-live) und werden entsprechend aufbewahrt und weitergereicht Zusätzlich Operation get? Welche Semantik?? vs10

Klassifikation entsprechend dem Initiator des Informationsflusses: Push mode: Informationsfluss wird durch Quelle angestoßen Pull mode: Informationsfluss wird durch Senke angestoßen put (Push) handle (Push) generate (Pull) get (Pull) : Wirkungsrichtung grün: Pufferung erforderlich rot: permanentes Polling vs10

10.2 IBM MQSeries (Bestandteil des IBM Application Server WebSphere) Modell Queue Manager . . . Klient Queue Manager . . . Host Host vs10

Initialisierung der MQ-Bibliothek int mqConnect(String queueManager, int mqInit() Initialisierung der MQ-Bibliothek int mqConnect(String queueManager, String host, String channel) Herstellung einer logischen Verbindung zu einem Queue Manager auf der angegebenen Station und Ablieferung einer Berechtigung (handle) dafür int mqDisconnect(int qmHandle) Lösen der Verbindung zum angegebenen QueueManager; qmHandle ist danach ungültig. vs10

int mqOpenQueue(int qmHandle, String queue, int options) „Öffnen“ einer Queue beim angegebenen Queue Manager, d.h. Beschaffen einer Berechtigung int mqCloseQueue(int qmHandle, int qHandle) „Schließen“ der angegebenen Queue beim angegebenen QueueManager; qHandle ist danach ungültig. vs10

int mqSend(int qmHandle, int qHandle, String message) hängt eine Nachricht an die angegebene Queue beim angegebenen QueueManager an, falls noch Platz - sonst wird Fehlercode geliefert String mqGet(int qmHandle, int qHandle, int maxlen, int timeout) entnimmt eine Nachricht, sofern innerhalb der angegebenen Zeit (in Zehntelsekunden) vorhanden und nicht größer als die angegebene Länge - sonst Fehler int mqSendOpt(...) dsgl. mit verschiedenen Optionen, String mqGetOpt(...) z.B. Warten auf bestimmte Nachrichtenart vs10

10.3 CORBA Notification Service (umfasst früheren Event Service) = hauptsächlich syntaktische Spezifikation von Schnittstellen mit wenig vorgeschriebener Semantik !  Kanal (channel) ist Umschlagplatz von  Ereignismeldungen (event notifications) als Nachrichten.  Nachrichtenquelle heißt supplier.  Nachrichtensenke heißt consumer. Alle diese sind CORBA-Objekte mit gewissen Schnittstellen ! vs10

10.3.1 Event Service (Modul CosEventComm) ! Für ein und denselben Kanal können Quellen und Senken wahlweise entweder im Pull- oder im Push-Modus arbeiten PushSupplier push push PushConsumer PullSupplier PullConsumer pull pull vs10

interface PushConsumer { void push(in any data) raises(Disconnected); PushSupplier push push PushConsumer interface PushConsumer { void push(in any data) raises(Disconnected); void disconnect_push_consumer(); } // nach disconnect kein push mehr möglich interface PushSupplier { void disconnect_push_supplier(); Ein PushSupplier ruft push auf, wird aber selbst nicht aufgerufen – es sei denn für ein disconnect. In: module CosEventComm vs10

interface PullSupplier { any pull() raises(Disconnected); PullConsumer pull pull interface PullSupplier { any pull() raises(Disconnected); any try_pull(out boolean has_event) raises(Disconnected); void disconnect_pull_supplier(); } // nach disconnect kein pull mehr möglich interface PullConsumer { void disconnect_pull_consumer(); Ein PullConsumer ruft pull auf, wird aber selbst nicht aufgerufen – es sei denn für ein disconnect. vs10

Kanal wird über 4 verschiedene Schnittstellen angesprochen:   Channel   PushSupplier push push PushConsumer PullSupplier PullConsumer pull pull Kanal wird über 4 verschiedene Schnittstellen angesprochen:  ProxyPushConsumer  ProxyPushSupplier  ProxyPullConsumer  ProxyPullSupplier 2 and 3 may also raise TypeError ! vs10

interface ProxyPushConsumer : PushConsumer { void connect_push_supplier(in PushSupplier ps) raises(AlreadyConnected); } // erlaubt anschließendes push durch den Supplier // und gegebenenfalls disconnect durch den Kanal // (sofern nicht ps=nil) interface ProxyPushSupplier : PushSupplier { void connect_push_consumer(in PushConsumer pc) } // ermöglicht pc.push durch den Kanal vs10

interface ProxyPullConsumer : PullConsumer { void connect_pull_supplier(in PullSupplier ps) raises(AlreadyConnected); } // ermöglicht ps.pull durch den Kanal // und gegebenenfalls disconnect durch den Kanal interface ProxyPullSupplier : PullSupplier { void connect_pull_consumer(in PullConsumer pc) } // erlaubt anschließendes pull durch den Consumer // (sofern nicht pc=nil) vs10

Kanal hat 2 Schnittstellen, über die man Zugriff auf die Schnittstellen  erhält: interface ConsumerAdmin { ProxyPushSupplier obtain_push_supplier(); ProxyPullSupplier obtain_pull_supplier(); } interface SupplierAdmin { ProxyPushConsumer obtain_push_consumer(); ProxyPullConsumer obtain_pull_consumer(); - und diese erhält man durch die „Wurzel-Schnittstelle“ des Kanals: interface EventChannel { ConsumerAdmin for_consumers(); SupplierAdmin for_suppliers(); void destroy(); // Finalisierung des Kanals } vs10

Erzeugung eines Kanal-Objekts ist – wie üblich - nicht Gegenstand von CORBA Auffinden eines Kanal-Objekts verläuft wie üblich, z.B. über Namensdienst Zur Typisierung: - Die gezeigten push/pull-Operationen sind generisch. - Ein Modul CosTypedEventComm erlaubt Typfestlegung bei der Verbindungsherstellung. - Vorzuziehen ist aber der Notification Service. (siehe aber Life Cycle Service) vs10

Erweiterung des Event Service um:  Filterung von Ereignismeldungen 10.3.2 Notification Service Erweiterung des Event Service um:  Filterung von Ereignismeldungen (beliebige Filtersprachen + default constraint language)  Steuerung der Dienstgüte (Reihenfolge, Zuverlässigkeit, Lebensdauer, …)  Information über die Kommunikationspartner (z.B. „Ist jemand an meinen Ereignissen interessiert?“)  Bessere Typisierung durch Structured Events Empfohlene Lektüre: Brose et al. 2001 vs10