Grundlagen: Rechnernetze und Verteilte Systeme - Lehrstuhl für ...
Grundlagen: Rechnernetze und Verteilte Systeme - Lehrstuhl für ...
Grundlagen: Rechnernetze und Verteilte Systeme - Lehrstuhl für ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Remote Procedure Call (RPC)<br />
� parameter marshalling (aufreihen, zusammenstellen)<br />
� Verpacken von Parametern einschließlich Konversion in<br />
Standarddarstellung<br />
� unmarshalling (oder demarshalling)<br />
� Auspacken einschließlich Konversion in lokale Darstellung<br />
� Server-Loop kann ebenfalls automatisch generiert werden.<br />
� Server ruft in Schleife den Server-stub immer wieder auf <strong>und</strong> bearbeitet so<br />
einen Auftragg nach dem andern<br />
<strong>Gr<strong>und</strong>lagen</strong>: <strong>Rechnernetze</strong> <strong>und</strong> <strong>Verteilte</strong> <strong>Systeme</strong> – IN0010, SS 2010, Kapitel 9 533<br />
Schema des Parameter Marshalling<br />
� Beispiel: Multiplikation zweier Zahlen über RPC<br />
client process<br />
Stub<br />
f<br />
1<br />
2<br />
User<br />
server process<br />
Stub<br />
r=f(1,2) f(a,b)<br />
{return<br />
a*b;}<br />
Kernel<br />
<strong>Gr<strong>und</strong>lagen</strong>: <strong>Rechnernetze</strong> <strong>und</strong> <strong>Verteilte</strong> <strong>Systeme</strong> – IN0010, SS 2010, Kapitel 9 534<br />
f<br />
1<br />
2<br />
Remote Procedure Call (RPC)<br />
� Gr<strong>und</strong>-Annahme: Heterogenität<br />
� Client <strong>und</strong> Server können gr<strong>und</strong>verschieden sein<br />
verschiedene Prozessoren<br />
verschiedene Betriebssysteme<br />
verschiedene Programmiersprachen<br />
� Keine Codeübertragung<br />
keine Übertragung von Objekten als Parameter<br />
� Daten müssen in einer Standardrepräsentation verschickt werden<br />
XDR - eXternal Data Representation<br />
� Schnittstellendefiniton<br />
� Sprach-unabhängige Datendefinitionssprache (IDL)<br />
Für jede Programmiersprache erzeugt ein IDL-Compiler Sprach-spezifische<br />
Stubs<br />
<strong>Gr<strong>und</strong>lagen</strong>: <strong>Rechnernetze</strong> <strong>und</strong> <strong>Verteilte</strong> <strong>Systeme</strong> – IN0010, SS 2010, Kapitel 9 535<br />
RPC – Dynamisches Binden<br />
� Durch die RPC-Methode sind Aufrufer <strong>und</strong> gerufene Prozedur entkoppelt:<br />
� nicht in einem gemeinsamen Programm vereinigt<br />
� können zu verschiedenen Zeiten gestartet werden<br />
� dynamisches Binden (dynamic binding)<br />
� Beispiel: statisch: mobject.add(int)<br />
dynamisch: invoke(mobject, “add“, int)<br />
� Programmbeginn: Client-stub kennt Partner-Adresse noch nicht<br />
� Bei Aufruf von Client-stub: Anfrage an zentralen Binder nach Server, der die<br />
Prozedur in der benötigten g Version zur Verfügung g g stellt.<br />
� Server melden sich beim Binder betriebsbereit unter Angabe von Name, Versions-<br />
Nr. <strong>und</strong> Adresse + evtl. id, falls Name nicht eindeutig.<br />
� Zur Laufzeit: Binder reicht dem Client die Server-Information weiter, <strong>und</strong> der Clientstub<br />
wendet sich danach direkt an den Server.<br />
<strong>Gr<strong>und</strong>lagen</strong>: <strong>Rechnernetze</strong> <strong>und</strong> <strong>Verteilte</strong> <strong>Systeme</strong> – IN0010, SS 2010, Kapitel 9 536