Vs7.11 7.1.1 Grundzüge der Fernaufruf-Implementierung = tatsächliche Aufrufbeziehungen Netz Fernaufrufdienst Transportdienst Hardware BS aus Bibl. Vertreter.

Slides:



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

der Universität Oldenburg
C ommon O bject R equest B roker A rchitecture
Einführung in die Programmierung Zusammenfassung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
DI Christian Donner cd (at) donners.com
© 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.
Vs61 6 Verteilte Datenverwaltung. vs62 Ziel:Zusammengehöriger Datenbestand soll über mehrere Stationen verteilt werden, z.B. Fragmentierung: in mehrere.
4.2 Gruppenkommunikation (group communication) Bedeutet:Sendeoperation bezieht sich auf mehrere Adressaten - die Mitglieder einer Prozeßgruppe (process.
Internetzugriff mit Strings und Streams
Threads Richard Göbel.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Polymorphie (Vielgestaltigkeit)
7 Verteilungsabstraktion
Vs Facetten der Verteilungsabstraktion Verteilungsabstraktion (distribution transparency) ist Sammelbegriff für verschiedene Eigenschaften eines.
3.1.7 Korrektheit von Objekten Voraussetzung für die Diskussion der Korrektheit von nichtsequentiell benutzten abstrakten Objekten: Modellbasierte Spezifikation:
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
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.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
JAVA RMI.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Seminar Internet Technologien
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 Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
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.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Klassen und Schnittstellen Klasse: Definiert Zustandsraum ihrer Instanzen vollständig (Implementierung der Struktur, soweit Voraussetzung für die Methoden-
Rechnernetze und verteilte Systeme (BSRvS II)
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.
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
1. Verhalten der Objekte: Operationen Werden in den Klassen definiert Werden (i.d.R.) auf einem Objekt aufgerufen Wird das Empfängerobjekt genannt Weitere.
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.
Dynamische Datentypen
7.1.5 Java RMI – Remote Method Invocation
Netzwerke.
Parallele Programmierung in Java
Javelin Internet-based parallel computing using Java.
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
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.
8.4 Microsoft.NET Framework =  CLR – Common Language Runtime ist objektorientierte virtuelle Maschine für Ausführung.
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
7.5.5 Namensdienste (bereits erwähnte Beispiele: Rmiregistry, Portmapper)  dienen der Abbildung von „Namen“ auf Verweise, Nummern,...  sollten ihre Information.
Vs Replizierte Objekte Vollständige Replikationsabstraktion ist attraktiv und machbar. 2 Beispiele: Orca(H. Bal, VU Amsterdam, ) = klassenbasierte,
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 Verteilte Verzeichnisse können ein verteiltes Betriebssystem unterstützen dienen der Abbildung von „Namen“ auf „Daten“ aller Art sollten ihre.
Java-Kurs Übung Besprechung der Hausaufgabe
Vs91 9 Middleware. vs92 Middleware, Verteilte Plattform (auch Verteilungsplattform*) bietet Verteilungsabstraktion für verteilte Anwendungsprogramme,
NET Remoting.Net („dotnet“) :von Microsoft eingeführte Plattform für verteilte Anwendungen, virtuelle Maschine für die verteilte Ausführung von.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
MD 4/02 CORBA Static/Dynamic Invocation Interface (SII/DII), Interface Repository.
Vs Java RMI – Remote Method Invocation ( ) (
1 vs8 8 Verteilungsabstraktion (distribution/network transparency) [auch „Verteilungstransparenz“ – schlechte Übersetzung]
Implementieren von Klassen
 Präsentation transkript:

vs Grundzüge der Fernaufruf-Implementierung = tatsächliche Aufrufbeziehungen Netz Fernaufrufdienst Transportdienst Hardware BS aus Bibl. Vertreter (proxy, client stub) Aufgerufener (Modul, Objekt,...) AufruferTreiber (skeleton, server stub) AdapterAdapter Aufruf x.op(arg)

vs7.12 Vertreter (proxy, client stub) hat gleiche Schnittstelle wie Aufgerufener und betreibt  Serialisierung (marshaling, serialization): Nachricht zusammenstellen, bestehend aus Treiberkennung Prozedur/Operations-Name Argumente  Benutzung des Fernaufrufdienstes zur Übermittlung der Nachricht und Entgegennahme der Ergebnisnachricht  Deserialisierung (unmarshaling, deserialization): Ergebnisse aus Nachricht extrahieren und gegebenenfalls in Ergebnisparametern ablegen bzw. als Ergebniswert abliefern

vs7.13 Treiber (skeleton, server stub) kennt Schnittstelle des Aufgerufenen und betreibt  Deserialisierung: Prozedur/Operationsname und Argumente aus Nachricht extrahieren  Entsprechenden Aufruf tätigen und Ergebnisse entgegennehmen  Serialisierung: Ergebnisnachricht zusammenstellen (Für mehrere Objekte mit gleicher Schnittstelle genügt auch die Bereitstellung eines Treibers.)

vs7.14 Adapter (adaptor) bestimmt das Verhalten des Server-Prozesses und betreibt zyklisch:  Entgegennahme einer Nachricht vom Fernaufrufdienst  Bestimmung und Aufruf des zuständigen Treibers, Entgegennahme der Ergebnisnachricht  Benutzung des Fernaufrufdienstes zur Übermittlung der Ergebnisnachricht (Achtung: Dies ist lediglich eine vereinfachte Darstellung für den Fall, dass im Server-Prozess nie mehr als eine Prozedur aktiv ist!)

vs7.15 Fernaufrufdienst mit Fernaufruf-Protokoll (RPC service/protocol) ist unabhängig vom Aufrufer/Aufgerufenen und den Stubs versendet Nachrichten unter Benutzung des Transportdienstes, z.B. mit TCP, aber auch mit UDP: Antwort des Aufgerufenen fungiert als Bestätigung des Aufrufs! erledigt Fehlerbehandlung (  )

Fernbinden (remote linking/binding) = Initialisierung des Vertreters: Einsetzen des Aufrufziels Station + Port + Treiber : Netzverweis (network reference) Wie wird der Netzverweis erzeugt? entweder:Registrierung eines Objekts bei Namensdienst (wo? s.u.) bewirkt dort Erzeugung – und Zuordnung zu einem Namen oder:Initialisierungscode veranlasst Fernerzeugung (wo? s.u.) und erhält Treiberkennung Wann wird der Netzverweis eingesetzt? Dynamisches Binden: Modul: bei Programmstart oder direkt vor erster Benutzung Objekt: bei Vertretererzeugung, typischerweise bei Übernahme eines Netzverweises als Parameter eines Fernaufrufs

vs Namensdienst (name service, naming service, name server)  wird typischerweise für langlebige öffentliche Module/Objekte, verwendet, die als Anbieter (servers) allgemein interessierender Dienste fungieren – ihre Lebensdauer ist unabhängig von der Lebensdauer der sie benutzenden Klienten (clients);  ist selbst ein solcher Anbieter, der über Fernaufruf angesprochen wird;  sein Stellvertreter wird über eine Standard-Bibliothek eingebunden und findet den benötigten Netzverweis z.B. über einen Rundruf (für vereinbarten Port) im lokalen Netz.

8 interface NameService {// Pseudocode, NOT Java RMI ! // ref :: String -> Object void rebind(String name, Object object); // pre: - // post: ref‘ name == object && // all (\n -> (n/=name) // ‘implies‘ (ref‘ n == ref n)) // String Object lookup(String name) throws Undefined; // pre: defined(ref name) // post: result == ref name void unbind(String name); // pre: - // post: not(defined(ref name) && // all (\n -> (n/=name) // ‘implies‘ (ref‘ n == ref n)) // String) }

vs7.19 Bereitstellung eines fernaufrufbaren Anbieter-Objekts: Programm Server starten, welches Server -Objekt erzeugt und es beim Namensdienst z. B. unter "Server" anmeldet. Der gestartete Prozess fungiert als Träger des Objekts und wartet auf eintreffende Fernaufrufe. Start mit java Server Server &

vs7.110 Benutzung durch Klienten:... // NOT Java RMI ! Server s = (Server)NameServer.lookup("Server"); // creates local proxy for server Result r = s.op(x); // creates local skeleton for x // creates local proxy for result... Anbieter: class Server implements Service {// NOT Java RMI ! public Result op(Argument a) {.....} public static void main(String[] arg) { Server s = new Server(); NameServer.rebind(arg[0], s); // creates local skeleton for s // creates proxy for s at name server for(;;); }

vs Fernerzeugung von Objekten (remote creation) typischerweise bei privaten Objekten verteilter Programme mit Hilfe entfernter Fabrik-Objekte (object factories) - 3 Alternativen:  über im Programm zuvor fernerzeugte Objekte,  über bereits vor Programmstart existierende, über Namensdienst erreichbare Fabrikobjekte, über allgegenwärtige, generische Fabrikobjekte (object servers, analog zu process servers).

vs7.112  Atype x = remote.create(); // creates Atype object // co-located with remote  Afact af = (Afact)NameServer.lookup("Atype factory“); Atype x = af.create(); Atype x = new // NOT Java RMI ! // employs invisible Object Server

vs Programmentwicklung bei konsequenter Verteilungsabstraktion 1. Auf jeder Station den jeweils benötigten Anwendungscode bereitstellen. 2. Auf jeder Station mittels Vertretergenerator (stub generator) den Code für jeweils benötigte Vertreter und Treiber bereitstellen. Vertretercode trägt denselben Namen wie der Originalcode ! 3. Auf jeder Station alles übersetzen und gegebenenfalls (lokal) statisch binden. (Komplikationen, falls irgendwo Objekte der gleichen Klasse sowohl lokal als auch entfernt benutzt werden.)

vs Semantik von Fernaufrufen sollte eigentlich kein Thema sein – Verteilungsabstraktion! Aber subtile (und weniger subtile) Abweichungen von der Semantik lokaler Aufrufe sind oft nur schwer vermeidlich  wegen Spracheigenschaften, die sich einer effizienten verteilten Implementierung widersetzen,  wegen unzuverlässiger Hardware-Komponenten im Netz. Konsequenzen: warnen vor Ineffizienz (Zeitfaktor  10000) nicht alles erlauben semantische Abweichungen in Kauf nehmen Modifikationen am Quellcode in Kauf nehmen

vs7.115  Sprachbedingte Probleme (Auswahl) Identitätsprüfung: Wenn zwei Vertreter x und y sich auf das gleiche entfernte Objekt beziehen, sollte x==y sein! (referential transparency) Variablenparameter: Formaler Parameter ist Alias für aktuellen Parameter. „Fernzugriff“ auf aktuellen Parameter unterstützen? Teuer! Spezieller Übersetzer!  Häufig als Wert/Ergebnisparameter realisiert, d.h. subtil andere Semantik!

vs7.116 Übergabe von Geflechten: häufig als tiefe Kopie (serialisiert in Nachricht gepackt), d.h. mit subtil anderer Semantik. Übergabe von Objektverweisen: müssen „im Fluge“ in Netzverweise umgewandelt werden – oder bei Geflechten: Übergabe von Feldern: Problematisch sowohl als Variablenparameter als auch bei Wertübergabe eines Feldverweises. Daher häufig Wertübergabe des Feldes, d.h. Übergabe einer Kopie (serialisiert in Nachricht gepackt), d.h. mit subtil anderer Semantik.

vs7.117  Netzbedingte Probleme ( Vorübergehende Leitungsstörungen: werden vom Transportsystem oder vom Fernaufrufdienst abgefangen) Unerreichbarkeit der Anbieter-Station oder der Klienten-Station Absturz der Anbieter-Station oder der Klienten-Station Typische Auswirkung z.B.: Fernaufrufdienst wartet nach Aufruf vergeblich auf Antwort (Timeout!)

vs7.118 Fernaufrufdienst hat bestimmte Fehlersemantik (failure semantics) – 3 Alternativen: höchstens-einmal-Semantik (at-most-once semantics): Fernaufrufdienst gibt auf. mindestens-einmal-Semantik (at-least-once semantics): Fernaufrufdienst macht permanent neue Versuche (akzeptabel bei idempotenten Operationen, bei denen eine wiederholte Ausführung den gleichen Effekt wie eine einzelne Ausführung hat). genau-einmal-Semantik (exactly-once semantics): nur dann erreichbar, wenn Anbieter-Station nicht permanent funktionsunfähig.

vs und bei Ausfall einer Klienten-Station muß der Anbieter verwaiste Auftragsergebnisse (orphans) erkennen und abräumen.