725 Stimmen

Was ist der Unterschied zwischen Serialisierung und Marshaling?

Ich weiß, dass im Zusammenhang mit verschiedenen verteilten Techniken (z. B. RPC) der Begriff "Marshaling" verwendet wird, aber ich verstehe nicht, worin der Unterschied zur Serialisierung besteht. Werden nicht beide Objekte in eine Reihe von Bits umgewandelt?

Verwandt:

Was ist Serialisierung?

Was ist Object Marshalling?

3voto

yoAlex5 Punkte 20661

Serialisierung vs. Marshalling

Problem: Das Objekt gehört zu einem Prozess (VM) und seine Lebensdauer ist dieselbe

Serialisation - sich verwandeln Objektzustand in Bytestrom (JSON, XML...) zum Speichern, Teilen, Umwandeln...

Marshalling - enthält Serialisation + codebase . Gewöhnlich wird es verwendet von Remote procedure call (RPC) -> Java Remote Method Invocation (Java RMI), bei dem Sie die Methode eines Objekts aufrufen können, das sich auf entfernte Java-Prozesse .

codebase - ist ein Ort oder eine URL zu class definition wo sie von ClassLoader heruntergeladen werden kann. CLASSPATH [Über] ist als lokale Codebasis

JVM -> Class Loader -> load class definition

java -Djava.rmi.server.codebase="<some_URL>" -jar <some.jar>

Sehr einfaches Diagramm für RMI

Serialisation - state
Marshalling - state + class definition

Offizielles Dokument

1voto

Aman Goel Punkte 2961

Marshaling verwendet Serialisierung Prozess tatsächlich aber der Hauptunterschied ist, dass es in Serialisierung nur Daten Mitglieder und Objekt selbst erhalten serialisiert nicht Signaturen aber in Marshalling Objekt + Code-Basis (seine Implementierung) wird auch in Bytes umgewandelt werden.

Marshalling ist der Prozess der Umwandlung von Java-Objekten in XML-Objekte unter Verwendung von JAXB, damit sie in Webdiensten verwendet werden können.

0voto

mP. Punkte 17565

Betrachten Sie sie als Synonyme, beide haben einen Produzenten, der etwas an einen Konsumenten schickt... Am Ende werden Felder von Instanzen in einen Byte-Stream geschrieben und das andere Ende macht es umgekehrt und hat die gleichen Instanzen.

NB - java RMI enthält auch Unterstützung für den Transport von Klassen, die beim Empfänger fehlen...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X