Domanda

Ho sentito questo concetto usato di frequente, ma non ho una buona comprensione di cosa sia.

È stato utile?

Soluzione

Conversione di un oggetto in memoria in un formato che può essere scritto su disco o inviato via cavo, ecc.

Descrizione di Wikipedia .

Altri suggerimenti

Mi permetto di dissentire, Wikipedia è abbastanza chiara su questo.

  

In informatica, il marshalling   (simile alla serializzazione) è il   processo di trasformazione della memoria   rappresentazione di un oggetto in un dato   formato adatto per la memorizzazione o   trasmissione. Di solito è usato   quando i dati devono essere spostati tra   diverse parti di un programma per computer   o da un programma all'altro.

http://en.wikipedia.org/wiki/Marshalling_(computer_science)

Le persone hanno già definito il marshalling in modo abbastanza chiaro, quindi salterò la definizione e passerò a un esempio.

La chiamata di procedura remota utilizza il marshalling. Quando si invocano le funzioni remote, è necessario eseguire il marshalling degli argomenti in un tipo di formato standard in modo che possa essere trasportato attraverso la rete.

Ho chiarito una ricerca su Google per il "marshalling dei dati" e il primo successo è stato in un posto chiamato webopedia che è abbastanza buono. L'essenza è che trasformi i dati avanti e indietro in un modulo per cose come la trasmissione su una rete. Il problema che risolve è che non è possibile trasmettere dati su una rete in una forma utilizzabile da un programma. Devi risolvere una serie di problemi tra cui cose come l'endianità dei dati, come archiviare tipi di dati complessi come stringhe, ecc.

Il marshalling non è solo per risolvere i problemi di trasmissione della rete, ma altri problemi come passare da un'architettura all'altra, forse lingue diverse, specialmente quelle che potrebbero usare cose come macchine virtuali, e altre "traduzioni" problemi.

Marshalling è il processo di trasformazione della rappresentazione della memoria di un oggetto in un formato di dati che potrebbe essere memorizzato o trasmesso. Si chiama anche serializzazione (anche se potrebbe essere diverso in alcuni contesti). La rappresentazione in memoria dell'oggetto potrebbe essere archiviata come binaria o XML o in qualsiasi formato adatto per l'archiviazione e / o la trasmissione in un modo che consente di annullare l'operazione e ripristinare l'oggetto originale.

Per un esempio di utilizzo, se disponi di un gioco online con componenti client e server e desideri inviare l'oggetto giocatore contenente le statistiche giocatore e le coordinate del mondo dal client al server (o viceversa), tu potrebbe semplicemente eseguirne il marshalling sul client, inviarlo sulla rete e annullarlo all'altra estremità e sembrerebbe per il server come se l'oggetto fosse stato creato sul server stesso. Ecco un esempio rubino:

srcplayer = Player.new
# marshal (store it as string)
str = Marshal.dump(srcplayer)
#unmarshal (get it back)
destplayer = Marshal.load(str)

Il marshalling è il processo di trasferimento dei dati attraverso i limiti dell'applicazione o tra diversi formati di dati. Il marshalling è molto comune, ad esempio scrivere dati su disco o in un database è tecnicamente il marshalling, tuttavia il termine tende ad essere usato per descrivere la conversione dei dati per "straniero" API o per comunicazioni tra processi.

Ad esempio, in .NET, la comunicazione tra codice gestito e non gestito (come l'accesso ad alcune API win32) richiederà probabilmente il marshalling per convertire avanti e indietro tra oggetti C # gestiti e oggetti in stile C / C ++ (strutture, handle, buffer di output, ecc.) La guida per il Marshal classe potrebbe essere utile.

Fondamentalmente è un'espressione per trasformare genericamente un oggetto (o simile) in un'altra rappresentazione che (ad es.) può essere inviata sul filo o archiviata su disco (tipicamente stringa o flusso binario. L'opposto, senza smistamento, descrive la direzione opposta di leggere la rappresentazione con marshalling e ricreare un oggetto o qualunque altra struttura in memoria esistesse prima.

Un altro esempio corrente di tutti i giorni è JSON

In un senso molto generico nella programmazione, significa semplicemente prendere i dati in un formato e trasformarli in un formato accettabile da qualche altro sottosistema.

Significa trasformare qualsiasi dato in un altro tipo di dati per trasferirlo su un altro sistema.

Ad esempio, il marshalling di una struttura in un documento XML da inviare al servizio web o il marshalling di un puntatore da inviare a un thread thread diverso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top