diff -r 000000000000 -r 2b3e5ec03512 doc/XDR_NDR.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/XDR_NDR.txt Thu Apr 21 14:57:45 2011 +0100 @@ -0,0 +1,55 @@ +******************************* +* Ideas on Data Serialization * +******************************* + +1. Overview of XDR +(1) What are the features of XDR + a. Used in SunRPC + b. Symmetric conversion + c. No tags + d. Primitive data types: + integers, floating point numbers, enumerations and booleans + e. Constructed data types: + strings, arrays, opaque data, unions, pointers + +(2) How to use XDR for data serialization + a. Don't have to use RPCGEN + b. Use XDR library routines plus programmer-supplied conversion routines + c. XDR streams: memory streams, I/O streams, record streams + d. Example of memory streams: + xdrmem_create (xdrs, buf, BUFSIZE, XDR_ENCODE); + xdr_int (xdrs, &i); + xdr_destroy (xdrs); + e. Construct conversion routines for more complicated data types + +2. Overview of NDR +(1) What are the features of NDR + a. Used in DCE RPC + b. Asymmetric conversion + c. Architecture tag to specify: + big endian or little endian for integer representation + ASCII or EBCDIC for character representation + IEEE or IBM or CRAY or VAX for floating-point representation + d. Primitive data types: + booleans, integers and enumerated types, floating-point numbers, uninterpreted octets + e. Constructed data types: + arrays, strings, structures, unions, pipes, pointers + +(2) How to use NDR for data serialization + a. Use IDL encoding services stubs which are generated by IDL compiler + with Interface Definition File and Attribute Configuration File + b. Similar to XDR libray routines, but can't be provided by programmer + +3. Comparison of XDR and NDR +(1) Symetric v. Asymetric conversion + a. Asymetric conversion allows more flexibility + b. Symmetric conversion doesn't require the architecture tag + +(2) NDR supports more data types + a. Conformanent arrays, varying arrays, conformanent-varying arrays + b. Array of strings, structures containing arrays + c. Pipes + +(3) Availability + a. XDR library is widely available + b. DCE IDL compiler for NDR is not