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?
Antworten
Zu viele Anzeigen?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
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.
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...
- See previous answers
- Weitere Antworten anzeigen