Marshalling (computer science)
Encyclopedia
In computer science
, marshalling (sometimes spelled marshaling, similar to 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.
Marshalling is a process that 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).
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. 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.
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 language
s to utilize XPCOM
through Cross-Platform Connect
(XPConnect).
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.
The marshalling will be of more advantage.
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...
, marshalling (sometimes spelled marshaling, similar to serialization
Serialization
In computer science, in the context of data storage and transmission, serialization is the process of converting a data structure or object state into a format that can be stored and "resurrected" later in the same or another computer environment...
) 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.
Marshalling is a process that is used to communicate to remote objects with an object (in this case a serialized object
Serialization
In computer science, in the context of data storage and transmission, serialization is the process of converting a data structure or object state into a format that can be stored and "resurrected" later in the same or another computer environment...
).
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).
Usage
Marshalling is used within implementations of different RPCRemote procedure call
In computer science, a remote procedure call is an inter-process communication that allows a computer program to cause a subroutine or procedure to execute in another address space without the programmer explicitly coding the details for this remote interaction...
mechanisms, where it is necessary for transporting data between processes
Process (computing)
In computing, a process is an instance of a computer program that is being executed. It contains the program code and its current activity. Depending on the operating system , a process may be made up of multiple threads of execution that execute instructions concurrently.A computer program is a...
and/or between threads
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...
. In Microsoft's COM
Component Object Model
Component Object Model is a binary-interface standard for software componentry introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in a large range of programming languages...
, interface pointers must be marshalled when crossing COM apartment boundaries. In the .NET Framework
.NET Framework
The .NET Framework is a software framework that runs primarily on Microsoft Windows. It includes a large library and supports several programming languages which allows language interoperability...
, the conversion between an unmanaged type and a CLR
Common Language Runtime
The Common Language Runtime is the virtual machine component of Microsoft's .NET framework and is responsible for managing the execution of .NET programs. In a process known as just-in-time compilation, the CLR compiles the intermediate language code known as CIL into the machine instructions...
type, as in the P/Invoke
Platform Invocation Services
Platform Invocation Services, commonly referred to as P/Invoke, is a feature of Common Language Infrastructure implementations, like Microsoft's Common Language Runtime, that enables managed code to call native code.-Explicit:...
process, 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
XPCOM
XPCOM is a cross-platform component model from Mozilla. It is similar to Microsoft COM and CORBA. It has multiple language bindings and IDL descriptions so programmers can plug their custom functionality into the framework and connect it with other components.-The model:XPCOM is one of the main...
technologies provided within the Mozilla Application Framework
Mozilla application framework
The Mozilla application framework is a collection of cross-platform software components that make up the Mozilla applications. It was originally known as XPFE, an abbreviation of cross-platform front end. It was also known as XPToolkit...
. The Mozilla Firefox
Mozilla Firefox
Mozilla Firefox is a free and open source web browser descended from the Mozilla Application Suite and managed by Mozilla Corporation. , Firefox is the second most widely used browser, with approximately 25% of worldwide usage share of web browsers...
browser is a popular application built with this framework that additionally allows scripting language
Scripting language
A scripting language, script language, or extension language is a programming language that allows control of one or more applications. "Scripts" are distinct from the core code of the application, as they are usually written in a different language and are often created or at least modified by the...
s to utilize XPCOM
XPCOM
XPCOM is a cross-platform component model from Mozilla. It is similar to Microsoft COM and CORBA. It has multiple language bindings and IDL descriptions so programmers can plug their custom functionality into the framework and connect it with other components.-The model:XPCOM is one of the main...
through Cross-Platform Connect
XPConnect
XPConnect is a technology which enables simple interoperation between XPCOM and JavaScript.-Object connection:XPConnect allows JavaScript objects to transparently access and manipulate XPCOM objects. It also enables JavaScript objects to present XPCOM compliant interfaces to be called by XPCOM...
(XPConnect).
Comparison with serialization
The term "marshal" is considered to be synonymous with "serialize" in the Python standard library, but the terms are not synonymous in the Java-related RFC 2713:To "marshal" an object means to record its state and codebaseCodebaseThe term codebase, or code base, is used in software development to mean the whole collection of source code used to build a particular application or component. Typically, the codebase includes only human-written source code files, and not, e.g., source code files generated by other tools or...
(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 codebaseCodebaseThe term codebase, or code base, is used in software development to mean the whole collection of source code used to build a particular application or component. Typically, the codebase includes only human-written source code files, and not, e.g., source code files generated by other tools or...
s. 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.
The marshalling will be of more advantage.
See also
- Microsoft's Component Object ModelComponent Object ModelComponent Object Model is a binary-interface standard for software componentry introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in a large range of programming languages...
(COM) - Common Object Request Broker Architecture (CORBA)ÇorbaChorba , ciorbă , shurpa , shorpo , or sorpa is one of various kinds of soup or stew found in national cuisines across Middle East...