3 - Marshalling und Unmarshalling [ID:30692]
50 von 133 angezeigt

Hallo zusammen, in diesem Video geht es darum, wie man Informationen bzw. Objekte zwischen

Rechnern übertragen kann.

Im Prinzip verpackt man dazu erstmal auf Senderseite die gewünschten Informationen in eine Nachricht,

das sogenannte Marscheling.

Die Nachricht wird dann vom Kommunikationssystem an den Empfänger übertragen und dort wieder

ausgepackt.

Letzteres wird dann auch als Anmarscheling bezeichnet.

Beim Marscheling liegt der Fokus vor allem darauf, die Informationen zwischen Prozessen

zu übertragen.

Beim Serialisieren von Daten hingegen geht es darum, Informationen in einen Datensturm

umzuwandeln.

Das lässt sich dann allerdings nutzen, um Marscheling zu implementieren.

Im Prinzip muss man sich bei Marscheling und Anmarscheling um zwei Probleme kümmern.

Zum einen liegen die Informationen in unterschiedlichen Datentypen vor, die dann auch unterschiedlich

verarbeitet werden müssen.

Und zusätzlich kann es noch Heterogenität bei der lokalen Repräsentation von Datentypen

geben.

Wenn man unterschiedliche Datentypen betrachtet, stellt sich vor allem die Frage, welche Informationen

jeweils nötig sind, um ein entsprechendes Objekt übertragen zu können.

Bei primitiven Datentypen wie Int oder Jar nimmt man direkt deren Wert.

Bei benutzerdefinierten Datentypen wie eigenen Klassen wird es hingegen schwieriger.

Effektiv müssen irgendwie alle oder auch nur ein Teil der relevanten Attribute eines Objekts

übertragen werden und dann auf der Gegenseite wieder zu einem neuen Objekt zusammengesetzt

werden.

Ein Error hingegen könnte man beispielsweise so übertragen, dass man zuerst die Länge

gefolgt vom Inhalt jedes einzelnen Feld sendet.

Falls man zwei Referenzen auf das selbe Objekt zusammen überträgt, sollten idealerweise

nachher auch beide Referenzen wieder auf dasselbe Objekt zeigen.

Zusätzlich gibt es dann noch Ressourcen wie Threads oder Dateien, die sich auf den aktuellen

lokalen Prozess beziehen und daher überhaupt nicht übertragen werden können.

Zur Fahnenfassung zeigen diese Beispiele, dass zum Übertragen von Informationen an

andere Prozesse eine dem Datentyp angepasste Vorgehensweise nötig ist.

Wenn man weiß, was man übertragen muss, dann stellt sich noch die Frage, wie die Informationen

beides codiert werden müssen, damit die andere Seite die auch richtig interpretiert.

Das Problem, das man hier hat, ist, dass es Heterogenität zwischen verschiedenen Rechnern

gibt, die dieselbe Information unterschiedlich darstellen.

Die bekannteste Unterscheidung dürfte die Reihenfolge von Bites im Speicher mit Big

und Little Endians sein.

Nehmen wir mal die Zahl 12345 oder Hexadizimal 0x3039, die wir als Integer speichern wollen,

der in Java immer 4 Bites hat.

Jetzt kann man die Bites vom höchstwertigsten zum niederwertigsten ordnen, was dann Big

Endian wäre und dann 003039 im Speicher gäbe.

Bei Little Endian, das von den meisten modernen Prozessoren verwendet wird, ist das genau

anders herum, also 393000.

Falls ihr euch fragt, woher die Bezeichnung kommt, die war ursprünglich eine Art April-Scherz

in Anlehnung an zwei verfeindete Gruppen aus dem Roman Gulliver's Reisen, die sich darüber

stritten, ob sie ihr Frühstücksei auf der dicken Seite, dem Big End, oder der Spitze,

dem Little End aufschlagen.

Bei Fließkommazahlen hat man noch viel mehr Freiheit als gerade.

Im Prinzip bestehen die Fließkommazahlen aus einem Vorzeichen, der Mantisse und einem

Teil einer Videoserie :
Teil eines Kapitels:
Java RMI

Presenters

Michael Eischer Michael Eischer

Zugänglich über

Offener Zugang

Dauer

00:08:41 Min

Aufnahmedatum

2021-04-09

Hochgeladen am

2021-04-09 17:46:20

Sprache

de-DE

Übertragen von Objekten zwischen Servern per Marshalling und Unmarshalling

Einbetten
Wordpress FAU Plugin
iFrame
Teilen