... 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.
... 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.
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.
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.
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.