Runtime Serialization

Runtime serialization is used to serialize objects to binary or user-defined formats. In mapping CLR types to serialization format, the CLR type is favored; that is, it is assumed that both ends of the serialization channel understand how to map any given CLR type to a serialization format. With runtime serialization, you’re guaranteed full fidelity between the objects you started with and the new objects you end up with. You can use one of the concrete formatter classes (BinaryFormatter or SoapFormatter) to serialize your data, or you can write your own class that implements IFormatter or extends Formatter to do the work.

In runtime serialization, serializable objects may be marked as such with the Serializable attribute, in which case the IFormatter class does all the work of serialization. Alternatively, a serializable object may implement ISerializable, in which case you are responsible for implementing the GetObjectData( ) method to provide the necessary information to the IFormatter.

Because the built-in formatters favor CLR datatypes, .NET remoting uses them to serialize objects. This also means that the SoapFormatter assumes that the remote end of the serialization stream knows about the CLR, and how to convert objects from their SOAP representation to CLR types. This is fine for homogeneous systems, but the point of XML is to enable disparate systems to communicate. SOAP is useful for such communication between disparate systems, because it ...

Get .NET & XML now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.