Java Reference
In-Depth Information
Befinden sich die Client- und die Server-Klasse jeweils auf unterschiedlichen Rech-
nern, muss der Aufruf der Dienstmethode in eine serielle Nachricht umgesetzt werden,
die über das Netzwerk zum Server transportiert werden kann. Auf der Seite des Ser-
vers entsteht das analoge Problem, dass eine ankommende serielle Nachricht in einen
Methodenaufruf zurückgewandelt werden muss. Das Ergebnis des Methodenaufrufs
muss auf ähnliche Weise wieder zum Client zurückkommen. Das Wandeln eines Me-
thodenaufrufs in eine serielle Nachricht wird als Serialisierung oder Marshalling be-
zeichnet. Der umgekehrte Vorgang heißt Deserialisierung oder Unmarshalling . Im
Rahmen dieser Vorgänge müssen Objekte, die als Argumente des Methodenaufrufs
auftreten, ebenso gewandelt werden wie das Ergebnis des Methodenaufrufs - das bei-
spielsweise auch eine geworfene Exception sein kann.
Prinzipiell könnte der Broker die Aufgabe des Serialisierens und Deserialisierens
selbst übernehmen. Das würde aber dem Prinzip "Separation of Concerns" widerspre-
chen. Die Aufgaben, Methodenaufrufe in Nachrichten zu wandeln und Nachrichten in
Methodenaufrufe umzusetzen, werden deshalb an zwei zusätzliche Klassen übertra-
gen, die eine neue Schicht zwischen dem Client und dem Broker bzw. zwischen dem
Server und dem Broker bilden.
Auf der Clientseite wird zwischen Client und Broker ein soge-
nannter Client-side Proxy eingeschoben, der den Server gegen-
über dem Client vertritt und die Aufgabe der Serialisierung über-
nimmt. In symmetrischer Weise vertritt ein Server-side Proxy
den Client auf der Serverseite und nimmt wiederum die Deseriali-
sierung vor.
Der Client wendet sich also über den Client-side Proxy an den Broker und dieser geht
über den Server-side Proxy an den Server. In der umgekehrten Richtung funktioniert
es bei der Übertragung des Methodenergebnisses genauso, wobei der Server-side
Proxy dann serialisiert und der Client-side Proxy deserialisiert.
Dadurch, dass die Aufgabe der Serialisierung und Deserialisierung separaten Klassen
übertragen wird, ergibt sich ein zusätzlicher Vorteil. Client und Server müssen nicht in
der gleichen Programmiersprache erstellt werden. Der Methodenaufruf im Client kann
über den Client-side Proxy aus dem Objekt- und Typmodell der Programmiersprache
des Clients in eine Nachricht, die konform mit dem Objekt- und Typmodell der Pro-
grammiersprache des Servers ist, serialisiert werden.
5.4.3.1 Klassendiagramm
Das folgende Klassendiagramm beschreibt die statische Struktur des Architekturmus-
ters Broker:
Search WWH ::




Custom Search