Jump to content

Marshalling (computer science)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Chris-martin (talk | contribs) at 19:08, 14 February 2008 (branch from Marshalling). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

In computer science, Marshalling (also known as serialization) is the process of transforming the memory representation of an object to a data format suitable for storage or transmission. It is typically used when data must be moved between different parts of a computer program or from one program to another.

The opposite, or reverse, of Marshalling is called Unmarshalling (also known as deserialization).

Usage

Marshalling is heavily used within Microsoft's Component Object Model (COM), where it is necessary for transporting data between processes and between apartments. The conversion between an unmanaged type and a CLR type, as in the P/Invoke process used in the .NET Framework, is also an example of an action that requires marshalling to take place.

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 terms "marshalling" and "serialization" are not synonymous.[1]

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.

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

See also