Marshalling

Share on Facebook Share on Twitter Email
Wikipedia on Answers.com:

Marshalling (computer science)

Top

In computer science, marshalling (sometimes spelled marshaling with a single l) is the process of transforming the memory representation of an object to a data format suitable for storage or transmission, and it is typically used when data must be moved between different parts of a computer program or from one program to another. Marshalling is similar to serialization and is used to communicate to remote objects with an object, in this case a serialized object. It simplifies complex communication, using custom/complex objects to communicate instead of primitives. The opposite, or reverse, of marshalling is called unmarshalling (or demarshalling, similar to deserialization).

Contents

Usage

Marshalling is used within implementations of different remote procedure call (RPC) mechanisms, where it is necessary for transporting data between processes and/or between threads. In Microsoft's COM, interface pointers must be marshalled when crossing COM apartment boundaries[1]. In the .NET Framework, the conversion between an unmanaged type and a CLR type, as in the P/Invoke process, is also an example of an action that requires marshalling to take place[2].

Additionally, marshalling is used extensively within scripts and applications that utilize the XPCOM technologies provided within the Mozilla Application Framework. The Mozilla Firefox browser is a popular application built with this framework that additionally allows scripting languages to utilize XPCOM through Cross-Platform Connect (XPConnect).

Comparison with serialization

The term "marshal" is considered to be synonymous with "serialize" in the Python standard library[3], but the terms are not synonymous in the Java-related RFC 2713:

To "marshal" an object means to record its state and codebase(s) in such a way that when the marshalled object is "unmarshalled", a copy of the original object is obtained, possibly by automatically loading the class definitions of the object. You can marshal any object that is serializable or remote. Marshalling is like serialization, except marshalling also records codebases. Marshalling is different from serialization in that marshalling treats remote objects specially. (RFC 2713)

To "serialize" an object means to convert its state into a byte stream in such a way that the byte stream can be converted back into a copy of the object.

References

  1. ^ Apartments and COM Threading Models
  2. ^ Interop Marshaling Overview
  3. ^ Marshal Python module

See also


Post a question - any question - to the WikiAnswers community:

Copyrights:

Mentioned in

marshal (technology)
Pari Passu (legal term)
procession path (architecture)
data marshalling (technology)