Marshalling (Informatik)

Aus dev.kaibel.net
Version vom 23. September 2025, 15:07 Uhr von PhilKa (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{DISPLAYTITLE:Marshalling (Informatik)}} {{Infobox Software | Name = Marshalling | Kategorie = Softwareentwicklung / Verteilte Systeme | Verwandte Begriffe = Unmarshalling, Stub (Softwareentwicklung), Remote Procedure Call, Serialisierung }} == Einführung == '''Marshalling''' bezeichnet in der Informatik den Prozess der Umwandlung von Datenstrukturen oder Objekten in ein Format, das für die Übertragung über Netzwerke o…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Vorlage:Infobox Software

Einführung

Marshalling bezeichnet in der Informatik den Prozess der Umwandlung von Datenstrukturen oder Objekten in ein Format, das für die Übertragung über Netzwerke oder für die Speicherung geeignet ist. Es wird vor allem in verteilten Systemen, RPC-Mechanismen und Schnittstellen zwischen unterschiedlichen Plattformen verwendet.

Der umgekehrte Prozess wird als Unmarshalling bezeichnet, also das Zurückwandeln der übertragenen Daten in die ursprüngliche Datenstruktur.

Ziel und Nutzen

Marshalling hat mehrere Ziele:

  • Ermöglicht die Übertragung komplexer Datenstrukturen über heterogene Systeme.
  • Sichert Plattformunabhängigkeit durch standardisierte Datenformate.
  • Trägt zur Abstraktion zwischen Client und Server bei.
  • Unterstützt die Interoperabilität zwischen unterschiedlichen Programmiersprachen.

Funktionsweise

Der Marshalling-Prozess umfasst typischerweise:

  1. Auswahl der zu übertragenden Daten.
  2. Serialisierung der Daten in ein standardisiertes Format (z. B. JSON, XML, XDR).
  3. Optional: Komprimierung oder Verschlüsselung für den Transport.
  4. Übertragung über das Netzwerk oder Speicherung.
  5. Auf der Empfängerseite: Unmarshalling zur Wiederherstellung der Originalstruktur.

Einsatzgebiete

  • Remote Procedure Calls (RPC) – Stubs marshallen die Funktionsparameter, um sie an den Server zu senden.
  • Webservices – SOAP oder REST nutzen Marshalling, um Objekte in XML/JSON zu konvertieren.
  • Datenpersistenz – Objekte in Dateien oder Datenbanken serialisieren.
  • Middleware – Message Queues und verteilte Systeme verwenden Marshalling für Datenübertragung.

Datenrepräsentation

Für Marshalling werden häufig standardisierte Formate verwendet, um Plattformunabhängigkeit zu gewährleisten:

  • External Data Representation (XDR) – in ONC RPC.
  • Protocol Buffers – in gRPC.
  • JSON – textbasiert, leichtgewichtig, weit verbreitet.
  • XML – textbasiert, flexibel, eher umfangreich.
  • MessagePack / BSON – binäre Formate für höhere Effizienz.

Beispiel: Marshalling in RPC

Bei einem ONC RPC-Aufruf:

  • Client ruft lokale Stub-Funktion auf.
  • Stub marshallt Parameter in XDR-Format.
  • Daten werden über das Netzwerk an Server gesendet.
  • Server-Stub unmarshallt die Daten und ruft die Ziel-Funktion auf.
  • Ergebnis wird wieder marshallt zurück an den Client.

Vorteile

  • Abstraktion der Übertragungsdetails.
  • Plattformunabhängige Kommunikation zwischen heterogenen Systemen.
  • Unterstützung der parallelen Entwicklung von Client und Server.
  • Grundlage für sichere Datenübertragung durch Verschlüsselung während des Marshallings.

Nachteile / Herausforderungen

  • Zusätzlicher Overhead durch Serialisierung und Deserialisierung.
  • Komplexität bei tief verschachtelten oder rekursiven Datenstrukturen.
  • Fehleranfälligkeit bei Inkompatibilitäten zwischen Sender und Empfänger (z. B. unterschiedliche Datentypen oder Endianness).
  • Sicherheitsrisiken, wenn untrusted Daten unmarshallt werden (z. B. Buffer Overflows).

Sicherheitsaspekte

  • Eingaben sollten validiert werden, bevor sie unmarshallt werden.
  • Verschlüsselung kann während des Marshallings erfolgen, z. B. TLS oder DTLS.
  • Schutz vor Denial-of-Service-Angriffen durch große oder manipulierte Datenpakete.

Literatur und Standards

  • RFC 4506 – XDR: External Data Representation Standard
  • Andrew S. Tanenbaum: Verteilte Systeme – Prinzipien und Paradigmen
  • W. Richard Stevens: UNIX Network Programming
  • RFC 5531 – RPC: Remote Procedure Call Protocol Specification Version 2

Siehe auch