1.3.1.2 Serializer/Deserializer (Presentation Layer)
DSLR uses tags to encapsulate data from each protocol layer. Tags are the binary equivalent of an XML element, although very much simplified.
DSLR uses a two-level hierarchy of tags:
-
+ Dispatcher tag <payload> Calling convention Id Request handle Service handle Function handle </payload> + Serializer tag <payload> Serialized argument #1 Serialized argument #2 … </payload>
The serializer owns the tag serializing the function call arguments. For a two-way calling convention, the outbound tag contains the function's in arguments, and if the call was successful, the response tag contains the HRESULT followed by the function's out arguments.
The proxy that runs on the client side serializes the input parameters, and deserializes the output parameters (if any) and the return value. The stub that runs on the server side deserializes the input parameters, and serializes the output parameters (if any) and the return value. Both client and server use the interface exposed by the service, the function handles (unsigned integers) that map to the exposed functions, and the in/out parameters for those functions.