Qual è la differenza tra un marshaller e un serializzatore?

19

... e unmarshalling / deserializing? la spiegazione di Wikipedia non mi lascia nessuno-saggio! Sono un programmatore Java, nel caso in cui la terminologia venga utilizzata in modo diverso nelle diverse lingue.

    
posta spume 21.05.2012 - 16:26
fonte

3 risposte

28

La semantica è importante qui:

Il marshalling implica spostare i dati, non implica la trasformazione dei dati dalla sua rappresentazione o memoria nativa. Gli oggetti Java possono essere spostati sul filo nella loro rappresentazione nativa.

La serializzazione implica trasformare i dati in una rappresentazione intermedia non nativa. Ad esempio: trasformazione di un oggetto Java in JSON o XML.

Ovviamente, la maggior parte dei sistemi che Marshal dati, serializza in alcuni formati non nativi prima di trasportarli.

    
risposta data 21.05.2012 - 16:42
fonte
13

Questa domanda è stata posta prima, ma su StackOverflow. Qui è il link.

Citazione della risposta fornita da Jeffrey Hantin :

Marshaling and serialization are loosely synonymous in the context of remote procedure call, but semantically different as a matter of intent.

In particular, marshaling is about getting parameters from here to there, while serialization is about copying structured data to or from a primitive form such as a byte stream. In this sense, serialization is one means to perform marshaling, usually implementing pass-by-value semantics.

It is also possible for an object to be marshaled by reference, in which case the data "on the wire" is simply location information for the original object. However, such an object may still be amenable to value serialization.

As @Bill mentions, there may be additional metadata such as code base location or even object implementation code.

    
risposta data 21.05.2012 - 16:31
fonte
2

Un Marshaller fa tutto ciò che deve fare, per lanciare una struttura dati da trasportare da un luogo a un altro. Quando parlo di "Struttura dei dati" potrebbe essere qualsiasi cosa. Da un oggetto stesso (dati di stato = > valori di campo) a un riferimento di memoria a quell'oggetto che verrà gestito lato client da uno "Stub" e sul lato server da un "Proxy". Significa che un Marshaller potrebbe utilizzare "Serializzatori" per trasformare quella struttura dati in una rappresentazione di basso livello molto più facile da trasportare. Il percorso di trasformazione potrebbe avere altri componenti come Compressori, Compilatori, Adattatori, ecc. Per me un Serializzatore è parte del Marshaller.

    
risposta data 05.09.2016 - 16:33
fonte

Leggi altre domande sui tag