Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Realisierung verteilter Anwendungen: Teil 3 zBeim vorigen Mal: Sockets, RMI zInhalt heute yCommon Object Request Broker Architecture (CORBA) zLernziele:

Ähnliche Präsentationen


Präsentation zum Thema: "Realisierung verteilter Anwendungen: Teil 3 zBeim vorigen Mal: Sockets, RMI zInhalt heute yCommon Object Request Broker Architecture (CORBA) zLernziele:"—  Präsentation transkript:

1 Realisierung verteilter Anwendungen: Teil 3 zBeim vorigen Mal: Sockets, RMI zInhalt heute yCommon Object Request Broker Architecture (CORBA) zLernziele: yVerständnis von bestehenden Architekturen: CORBA Ralf Möller, FH Wedel

2 Ein BeiSpiel: Simple Baseball zpublic class Bat { ypublic void play (Ball ball) { ball.hit(); } ypublic static void main (String args[]) { Ball ball = new Ball(); Bat bat = new Bat(); bat.play(ball) } } zpublic class Ball { ypublic void hit() { System.out.println("Ball has been hit.") } } $ java Bat Ball has been hit.

3 Common Object Request Broker Architecture zVergleich RPC zVerteilung bedeutet mehr als Transparenz des entfernten Aufrufs Dienste statt Prozeduren !

4 Aspekte der Heterogenität zVerschiedene Rechnerarchitekturen zVerschiedene Betriebssysteme zVerschiedene Programmiersprachen zVerschiedene Compiler-Versionen zIn CORBA: Plattform-unabhängige Interface Definition Language (IDL) z"Kleinster gemeinsamer Nenner"

5 CORBA-RMI zSprachunabhängigkeit zZusätzlich zu Java-RMI: yObject adaptor yImplementation repository yInterface repository zStandard für die Referenzierung entfernter Objekte zNamensraumverwaltung

6 CORBAservices zFundamentale Dienste, die von fast jeder Applikation oder fast jedem Objekt benötigt werden zDefiniert über IDL, Ansprechen als "normale" Objekte: yLifecycle Service yRelationship Service yNaming Service yTrader Service ySecurity Service yPersistence Service yConcurrency Control Service y...

7 CORBAfacilities zHorizontale Schicht yBranchenunabhängige Dienste yz.B. bzgl. Dokumenten bestehend aus Texten, Bildern, Tabellen zVertikale Schicht yDienste für spezifische Branchen (Gesundheitswesen, Bankwesen, Petrochemie, Telekommunikation) yz.B. zur Bearbeitung von Dokumenten yUser Interface, Information Management, Task Management, System Management

8 Koordination durch ORB

9 CORBA-RMI: Die Client-Seite zClient spricht ORB nicht direkt an zFür Serverobjekt gibt es Repräsentanten (stub) zStub übernimmt Aufgabe, mit dem ORB zu kommunizieren zStatischer vs. dynamischer Mechanismus ySchnittstelle zur Übersetzungszeit bekannt? yInterface Repository: Beschreibung aller registrierten Objekte, ihrer Methoden und Attribute

10 CORBA-RMI: Die Server-Seite zObjektadapter übernimmt ORB-Kommunikation z... registriert Klassen in Implementierungs- Repository,... zund vergibt eindeutige Objektreferenzen zCORBA schreibt Basis-Objektadapter vor (BOA) zEbenfalls standardisiert: POA (portable Objektadapter)

11 ORB: Der Broker zDefiniert durch Interface zUm ein Objekt ansprechen zu können, ist eindeutige Referenz notwendig zReferenz wird bei Objekterzeugung durch ORB zugeteilt zGültigkeit, solange Objekt existiert... z... selbst, wenn Objekt seinen Standort wechselt zHier verwendet: VisiBroker

12 Bekanntmachen einer Referenz yObjektreferenz kann anderen Objekten bekanntgemacht werden yAblegen in File oder Datenbank yHerauslesen aus Client (Ergebnis voriger Aufrufe) yClient kann sich an Dienst wenden, der Objektreferenzen zur Verfügung stellt yNaming Service (Abbildung Name -> Referenz) yTrader Service (Anbieten von Objekten mit dem gleichen Service, aber unterschiedlichen Konditionen oder mit unterschiedlichen Qualitätsmerkmalen) yClient kann eines der Objekte wählen (lassen)

13 Aufrufe über CORBA: Statische Aufrufe zVerwendung eines Stellvertreters (Stub) zTransparenz: Aufruf wie lokaler Aufruf zStub verpackt Parameter (Marshalling)... z... und wendet sich an ORB, der den Aufruf... z... an den Objektadapter auf Serverseite schickt zObjektadapter aktiviert oder erzeugt Objekt... z... und reicht Aufruf an Skeleton. zSkeleton entpackt Parameter (Demarshalling)... z... und ruft Objektimplementierung auf.

14 Die CORBA-Architektur

15 Aufrufe über CORBA: Dynamische Aufrufe zNotwendig z.B. wenn Typ des aufgerufenen Objekts nicht zur Übersetzungszeit bekannt war zInterface wird dynamisch beim ORB erfragt zWeniger effizient

16 CORBA Interface Definition Language: IDL zCORBA IDL (im Ggs. etwa zu Java) definiert keine Klassen zEntfernte Objekte können als Argumente angegeben werden zInstanzen können nicht als Argumente angegeben werden C++JavaSmalltalk C++JavaSmalltalk IDL Client Implementierung Interface

17 CORBA-IDL Syntax (1) zNamensräume :: ymodule { y interface [: ] { y attribute ; y exception ; y [ ] ([in|inout|out] parameter) raises [ { } ]; y}}

18 CORBA-IDL Syntax (2) zBasistypen: boolean, char, int, float zstruct {... }; zunion {... }; ztypedef ; zenum {,... }; zconst ;

19 Der IDL-Compiler (1) zIn Java: idl2java file.idl zGenerierung von Client-Stub-Deklartionen y_st_.java ypublic class _st_ extends org.oma.CORBA.portable.ObjectImpl implements yFähigkeiten zur Berechnung der externen Datenrepräsentation

20 Der IDL-Compiler (2) zGenerierung von Skeleton-Deklarationen y_ ImplBase.java yabstract public class _ ImplBase extends org.omg.CORBA.portable.Skeleton implements {... } yFähigkeiten zur Rückrechnung der externen Datenrepräsentation zGenerierung von Holder- und Helper-Klassen, verantwortlich für Abbildung von IDL nach Java yMethoden zum Serialisieren und Deserialisieren yRückkopieren von Out. und Inout-Parameter zEintragung in Interface und Implementation Repositories

21 Das IDL-Java-Mapping zTypedef in Java ignoriert (direkt eingesetzt) zEnum in Java durch Konstanten simuliert zUnion und struct in Java durch Klassen dargestellt

22 Ein einfaches Beispiel: IDL für Baseball-Spiel zmodule BatBall { y interface Ball { y void hit(in string by); }; z}; siehe: Java in verteilten Systemen Marko Boger

23 Ein einfaches Beispiel: Java (1) zpackage BatBall; zimport org.omg.CORBA.*; zpublic class BallServer extends BatBall._BallImplBase { ypublic BallServer(String bind_name) { super(bind_name); } ypublic void hit(String by) { System.out.println("Ball has been hit by " + by); }

24 Ein einfaches Beispiel: Java (2) ypublic static void main(String args[]) { try { ORB orb = ORB.init(); BOA boa = orb.BOA_init(); BallServer ball = new BallServer("Ball"); orb.connect(ball); boa.obj_is_ready(ball); boa.impl_is_ready(ball); } catch (Exception e) { e.printStackTrace(); }}}

25 Ein einfaches Beispiel: Java (3) zpackage BatBall; zimport org.omg.CORBA.*; zpublic class Bat { ypublic static void main(String args[]) { ORB.orb = ORB.init(); Ball ball = BallHelper.bind(orb,"Ball"); ball.hit("Ralf"); System.out.println("I hit the ball"); }} server$ vbjc -d BallServer.java ; vbj BatBall.BallServer client$ vbjc -d Bat.java ; vbj BatBall.Bat client| I hit the ball server| Ball has been hit by Ralf einfacher Namensdienst durch automatisch erzeugte Hilfsklasse

26 Ereignisorientierte Kommunikation in CORBA zBenachrichtigung statt Methodenaufruf zAsynchrone Kommunikation zWeitere Dienste (CORBAservices) evtl. später... consumer supplier proxy consumer notification proxy supplier event channel notification

27 Resümee Und wir haben noch längst nicht alles gesehen...

28 Bevor alle davoneilen zFortsetzung der Diskussion über Middleware... yMigration von Objekten (Voyager) ySpontane Vernetzung (Jini) z... beim nächsten Mal.


Herunterladen ppt "Realisierung verteilter Anwendungen: Teil 3 zBeim vorigen Mal: Sockets, RMI zInhalt heute yCommon Object Request Broker Architecture (CORBA) zLernziele:"

Ähnliche Präsentationen


Google-Anzeigen