Ja, wir hatten uns letzte Woche mit dem Thema Remote Procedure Codes beschäftigt und das
denke ich wird uns auch heute noch weitgehend beschäftigen.
Ich will so am Abschnitt über Semantikaspekte nochmal aufsetzen.
Damit hatten wir letzte Woche schon so kurz angefangen.
Es gibt eine ganze Reihe von Aspekten eben, wo sich dann doch Fernaufrufe von lokalen
Aufrufen unterscheiden.
Ein wesentlicher Punkt sind die Parameter, ist die Parameterübergabe.
Man muss, ja letztendlich sagen wir mal, einerseits unterscheidet sich es natürlich
bei der Parameterübergabe.
Andererseits ist auch wichtig an der Stelle zu betrachten, was mit den Parametern tatsächlich
passiert.
Ob die also, in welche Richtung sie übergeben werden.
Also eine Situation, die man eigentlich im lokalen Fall überhaupt nicht weiter unterscheiden
muss.
Man übergibt eben Parameter und ob der jetzt ein Eingangsparameter oder ein Ausgangsparameter
ist, ist letztendlich, was die Effizienz des Aufrufs angeht, erst einmal irrelevant.
Beim Fernaufruf ist es natürlich ein Unterschied, weil man ja die Parameter in Datenpakete verpacken
muss und übertragen muss.
Und es macht natürlich einen Unterschied, ob ich den Parameter erst zum Aufgerufenen
übertragen muss und wieder zurück übertragen muss, weil er den möglicherweise im Fall
von Koiber Referenz verändert hat oder nicht.
Also das heißt, man muss einfach unterscheiden, ob man Eingabe- oder Ausgabeparameter hat
oder Parameter, die in beide Richtungen zu transferieren sind.
Das ist in den Programmiersprachen für den lokalen Fall üblicherweise nicht vorgesehen.
Wenn man die Parameterübergabe aber explizit spezifizieren kann, kann man eben solche Informationen
eben dem System mitliefern, sodass es also an der Stelle eben optimieren kann.
Und die Semantiken, die man an der Stelle hat, ist also ja im lokalen Fall üblicherweise
der Koiber Referenz.
Wenn ich über den Parameter sowohl Werte in eine Funktion hineingeben will, als auch
zurückbekommen möchte.
Und im verteilten Fall ist der Koiber Referenz in der Regel eigentlich nicht vernünftig
nutzbar.
Und die Annäherungen daran, die zumindest annähernd eben das gleiche Ergebnis liefert,
wäre der Koiber Value Result.
Das heißt ein Koiber Value, bei dem die Parameter kopiert werden und der Koiber Result, bei
dem das Ergebnis auch zurückkopiert wird.
Oder die Veränderung zurückkopiert wird, muss man ja eigentlich sagen.
Ein anderes Problem ist, dass die Gültigkeitsbereiche unterschiedlich sind und im verteilten Fall
eben massiv eingeschränkt sind.
Man hat letztendlich die Variablen eines entfernten Scopes typischerweise eben nicht verfügbar.
Und insofern ist man natürlich, was die Nutzbarkeit von zum Beispiel globalen Variablen angeht,
natürlich ganz stark eingeschränkt.
Und auch Speicheradressen sind eben der Regel natürlich systemweit nicht eindeutig, sodass
eben man nicht Zeiger versenden kann, wie man das eben beim lokalen Aufruf typischerweise
macht.
So, also beim Parameterarten hatten wir ja dann eben unterschiedeneingabe-Parameter,
Ausgabe-Parameter oder eben Ein- und Ausgabe-Parameter, die eben in beiden Nachrichten übertragen
werden.
So, darüber hatten wir dann letztes Mal schon gesprochen.
Darüber auch noch.
Presenters
Zugänglich über
Offener Zugang
Dauer
01:28:07 Min
Aufnahmedatum
2012-05-22
Hochgeladen am
2019-05-08 11:19:02
Sprache
de-DE
- Übersicht und Grundlagen verteilter Systeme
-
Verteilte Programmierung, Client/Server-Konzept
-
Kommunikation, Prozesse, Namensgebung
-
Koordinierung, Konsistenzwahrung
-
Grundlagen verteilter Algorithmen
-
Zeit in verteilten Systemen (logische Uhren, NTP)
-
Java, weiterführende Konzepte (z.B. Threads, Reflections)
-
Sun RPC, Java RMI
-
Dynamische Erzeugung von Proxies, Callback
Lernziele und Kompetenzen:
Die Studierenden
-
erwerben fundierte Kenntnisse über Grundlagen von verteilten Systemen
-
verstehen Zusammenhänge, die die verteilte Ausführung von Programmen in vernetzten Rechensystemen ermöglichen
-
erlernen die verteilte Programmierung in Java
-
entwickeln eine Middleware-Plattform zur Ausführung verteilter Programme