Realisierung verteilter Anwendungen: Teil 3 zBeim vorigen Mal: Sockets, RMI zInhalt heute yCommon...

28
Realisierung verteilter Anwendungen: Teil 3 Beim vorigen Mal: Sockets, RMI Inhalt heute Common Object Request Broker Architecture (CORBA) Lernziele: Verständnis von bestehenden Architekturen: CORBA Ralf Möller, FH Wedel

Transcript of Realisierung verteilter Anwendungen: Teil 3 zBeim vorigen Mal: Sockets, RMI zInhalt heute yCommon...

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

Realisierung verteilter Anwendungen: Teil 3

Beim vorigen Mal: Sockets, RMIInhalt heute

Common Object Request Broker Architecture (CORBA)Lernziele:

Verständnis von bestehenden Architekturen: CORBA

Ralf Möller, FH Wedel

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

Ein BeiSpiel: Simple Baseball

public class Bat { public void play (Ball ball) { ball.hit(); } public static void main (String args[]) {

Ball ball = new Ball(); Bat bat = new Bat(); bat.play(ball)  } }

public class Ball { public void hit() {

System.out.println("Ball has been hit.") } }

$ java BatBall has been hit.

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

Common Object Request Broker Architecture

Vergleich RPC

Verteilung bedeutet mehr alsTransparenz des entfernten Aufrufs

Dienste stattProzeduren !

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

Aspekte der Heterogenität

Verschiedene RechnerarchitekturenVerschiedene BetriebssystemeVerschiedene ProgrammiersprachenVerschiedene Compiler-Versionen

In CORBA: Plattform-unabhängigeInterface Definition Language (IDL)

"Kleinster gemeinsamer Nenner"

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

CORBA-RMI

SprachunabhängigkeitZusätzlich zu Java-RMI:

Object adaptor Implementation repository Interface repository

Standard für die Referenzierung entfernter Objekte

Namensraumverwaltung

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

CORBAservices

Fundamentale Dienste, die von fast jeder Applikation oder fast jedem Objekt benötigt werden

Definiert über IDL, Ansprechen als "normale" Objekte: Lifecycle Service Relationship Service Naming Service Trader Service Security Service Persistence Service Concurrency Control Service ...

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

CORBAfacilities

Horizontale Schicht Branchenunabhängige Dienste z.B. bzgl. Dokumenten bestehend aus

Texten, Bildern, TabellenVertikale Schicht

Dienste für spezifische Branchen (Gesundheitswesen, Bankwesen, Petrochemie, Telekommunikation)

z.B. zur Bearbeitung von Dokumenten User Interface, Information Management, Task

Management, System Management

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

Koordination durch ORB

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

CORBA-RMI: Die Client-Seite

Client spricht ORB nicht direkt anFür Serverobjekt gibt es Repräsentanten

(stub)Stub übernimmt Aufgabe, mit dem ORB zu

kommunizierenStatischer vs. dynamischer Mechanismus

Schnittstelle zur Übersetzungszeit bekannt? Interface Repository:

Beschreibung aller registrierten Objekte, ihrer Methoden und Attribute

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

CORBA-RMI: Die Server-Seite

Objektadapter übernimmt ORB-Kommunikation

... registriert Klassen in Implementierungs-Repository, ...

und vergibt eindeutige ObjektreferenzenCORBA schreibt Basis-Objektadapter vor

(BOA)Ebenfalls standardisiert: POA (portable

Objektadapter)

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

ORB: Der Broker

Definiert durch InterfaceUm ein Objekt ansprechen zu können, ist

eindeutige Referenz notwendigReferenz wird bei Objekterzeugung durch ORB

zugeteiltGültigkeit, solange Objekt existiert ...... selbst, wenn Objekt seinen Standort

wechseltHier verwendet: VisiBroker

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

Bekanntmachen einer Referenz Objektreferenz kann anderen Objekten

bekanntgemacht werden Ablegen in File oder Datenbank Herauslesen aus Client (Ergebnis voriger Aufrufe) Client kann sich an Dienst wenden, der

Objektreferenzen zur Verfügung stellt Naming Service (Abbildung Name -> Referenz) Trader Service (Anbieten von Objekten mit dem

gleichen Service, aber unterschiedlichen Konditionen oder mit unterschiedlichen Qualitätsmerkmalen)

Client kann eines der Objekte wählen (lassen)

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

Aufrufe über CORBA: Statische AufrufeVerwendung eines Stellvertreters (Stub)Transparenz: Aufruf wie lokaler AufrufStub verpackt Parameter (Marshalling) ...... und wendet sich an ORB, der den Aufruf ...... an den Objektadapter auf Serverseite schicktObjektadapter aktiviert oder erzeugt Objekt ...... und reicht Aufruf an Skeleton.Skeleton entpackt Parameter (Demarshalling) ...... und ruft Objektimplementierung auf.

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

Die CORBA-Architektur

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

Aufrufe über CORBA: Dynamische Aufrufe

Notwendig z.B. wenn Typ des aufgerufenen Objekts nicht zur Übersetzungszeit bekannt war

Interface wird dynamisch beim ORB erfragtWeniger effizient

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

CORBA Interface Definition Language: IDL

CORBA IDL (im Ggs. etwa zu Java) definiert keine Klassen

Entfernte Objekte können als Argumente angegeben werden

Instanzen können nicht als Argumente angegeben werden

C++ Java Smalltalk

C++ Java Smalltalk

IDL

Client

Implementierung

Interface

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

CORBA-IDL Syntax (1)

Namensräume <Namensraum>::<Identifikator> module <identifier> { interface <identifier> [: <inheritance> ] { attribute <type> <identifier>; exception <exception_name>; [<op_type>] <identifier>([in|inout|out]

parameter) raises <exception_name> [ { <ctype> <context> } ];

}}

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

CORBA-IDL Syntax (2)

Basistypen: boolean, char, int, floatstruct <struct_name> { <type>

<identifier> ... };union <union_name> { <type>

<identifier> ... };typedef <type> <identifier>;enum <type> { <identifier>, ... };const <const_declaration>;

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

Der IDL-Compiler (1)

In Java: idl2java file.idlGenerierung von Client-Stub-Deklartionen

_st_<class>.java public class _st_<class>

extends org.oma.CORBA.portable.ObjectImpl implements <interface>

Fähigkeiten zur Berechnung der externen Datenrepräsentation

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

Der IDL-Compiler (2)

Generierung von Skeleton-Deklarationen _<class>ImplBase.java abstract public class _<class>ImplBase

extends org.omg.CORBA.portable.Skeleton implements <interface> { ... }

Fähigkeiten zur Rückrechnung der externen Datenrepräsentation

Generierung von Holder- und Helper-Klassen, verantwortlich für Abbildung von IDL nach Java Methoden zum Serialisieren und Deserialisieren Rückkopieren von Out. und Inout-Parameter

Eintragung in Interface und Implementation Repositories

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

Das IDL-Java-Mapping

Typedef in Java ignoriert (direkt eingesetzt)Enum in Java durch Konstanten simuliertUnion und struct in Java durch Klassen

dargestellt

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

Ein einfaches Beispiel: IDL für Baseball-Spiel

module BatBall { interface Ball { void hit(in string by);

}; };

siehe:Java in verteilten SystemenMarko Boger

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

Ein einfaches Beispiel: Java (1)

package BatBall;import org.omg.CORBA.*;public class BallServer

extends BatBall._BallImplBase { public BallServer(String bind_name) {

super(bind_name); } public void hit(String by) {

System.out.println("Ball has been hit by " + by); }

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

Ein einfaches Beispiel: Java (2)

public 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(); }}}

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

Ein einfaches Beispiel: Java (3)

package BatBall; import org.omg.CORBA.*; public class Bat {

public 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.BallServerclient$ vbjc -d Bat.java ; vbj BatBall.Batclient| I hit the ballserver| Ball has been hit by Ralf

einfacher Namensdienst

durch automatischerzeugte

Hilfsklasse

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

Ereignisorientierte Kommunikation in CORBA

Benachrichtigung statt MethodenaufrufAsynchrone KommunikationWeitere Dienste (CORBAservices) evtl.

später...

consumersupplier

proxy consumernotification

proxy supplier

event channel

notificationnotification

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

Resümee

Und wir haben noch längst nicht alles gesehen ...

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

Bevor alle davoneilen

Fortsetzung der Diskussion über Middleware ... Migration von Objekten (Voyager) Spontane Vernetzung (Jini)

... beim nächsten Mal.