1) Marshalling or marshaling 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.
2) Marshalling is similar to serialization and is used to communicate to remote objects with an object, in this case a serialized object.
3) It simplifies complex communication, using custom/complex objects to communicate instead of primitives.
4) The opposite, or reverse, of marshalling is called un-marshalling (or de-marshalling, similar to deserialization).
Actions involved in marshalling:
First, an application issues an invocation request by locally calling the associated method, just like calling a procedure in an RPC.
The control sub object checks the user permissions with the information stored in the local security object. In this case, the security object should have a valid user certificate.
The request is marshaled and passed on.
The replication sub object requests the middleware to set up a secure channel to a suitable replica.
The security object first initiates a replica lookup. To achieve this goal, it could use any naming service that can look up replicas that have been specified to be able to execute certain methods. The Globe location service has been modified to handle such lookups.
Once a suitable replica has been found, the security sub object can set up a secure channel with its peer, after which control is returned to the replication sub object. Note that part of this establishment requires that the replica proves it is allowed to carry out the requested invocation.
The request is now passed on to the communication sub object.
The sub object encrypts and signs the request so that it can pass through the channel.
After its receipt, the request is decrypted and authenticated.
The request is then simply passed on to the server-side replication sub object.
Authorization takes place: in this case the user certificate from the client-side stub has been passed to the replica so that we can verify that the request can indeed be carried out.
The request is then un-marshaled.
- Finally, the operation can be executed.