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

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

C ommon O bject R equest B roker A rchitecture
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Definition von Klassen in Java
Einführung in die Programmierung Zusammenfassung
DI Christian Donner cd (at) donners.com
Internetzugriff mit Strings und Streams
Ausnahmen HS Merseburg (FH) WS 06/07.
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: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
MD 4/02 Hello World from CORBA ein erster Überblick.
Konstruktoren.
Objekte und Arbeitsspeicher
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
JAVA RMI.
Remote Methode Invocation (RMI)
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Einführung in Java1 Einführung in JAVA.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
Bestimmung des ggT zweier Zahlen
Common Object Request Broker anhand eines Beispiels Aufgabestellung ( Ein Konto wird von einem Server verwaltet. Der Stand des Kontos wird.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Monitoring von Geräten und Diensten Projektgruppe Location-based Services for Wireless Devices WS 2004/05 Tobias Beisel AG Kao Betriebssysteme und Verteilte.
Kap. 4 Der Corba-Standard zur verteilten Objektverwaltung
Kap 4-1OHO Kap. 4.2 Das Orbix CORBA-System Kurzer überblick zu der CORBA-Implementierung Orbix •Unser Fahrplan: •IDL Verwendungsbeispiel •Zoom-In: CORBA.
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.
Stellen Sie nochmals statischen und dynamischen Methodenaufruf gegenüber.
Die Architektur von Jini Präsentation von Thomas Heinis & Michea Wankerl Seminar Information & Kommunikation WS 2000/01.
Einführung in CORBA Fachseminar Informations- und Kommunikationssysteme SS99 MartinVogt, IIIC, 8. Semester.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
MD 4/02 CORBA Static/Dynamic Invocation Interface (SII/DII), Interface Repository.
Objektorientierte Programmierung (OOP)
Rusch Philipp, Spiegel Philipp, Sieber Michael, Ucar Sahin, Wetzel Markus.
Objektorientierte Datenbanken
Realisierung verteilter Anwendungen: Teil 4 zBeim vorigen Mal: RMI und Grundlagen von CORBA zInhalt heute yVerteilung und Objektorientierung (Voyager)
Realisierung verteilter Anwendungen: Teil 2 zInhalt heute: yKommunikation über Sockets yJava Remote Method Invocation, RMI zLernziele: yVerständnis eines.
Java Programme nur ein bisschen objektorientiert.
Aufbau Integrierter Informationssysteme Verteilte Objektsysteme am Beispiel von CORBA Falk Ritschel, Stefan Springer, Falko Steponat Martin-Luther-Universität.
Tutorstunde 10.
Implementieren von Klassen
 Präsentation transkript:

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

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.

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

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"

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

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...

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

Koordination durch ORB

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

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)

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

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)

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.

Die CORBA-Architektur

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

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

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

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

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

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

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

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

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

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

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

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

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

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