Hi,

How are people dealing with changes in serialization format between .NET 1.0
and 1.1?  For example, the IPAddress class is now represented internally as
a Byte[] instead of an Int64 (why it was ever an Int64 is beyond me).  This
means that when it is serialized by the SoapFormatter or BinaryFormatter
(and probably the XmlSerializer), it can't be deserialized by a different
version of .NET.



I'm working on a distributed .NET computing platform (see
http://www.kinitos.com/), and we can't allways control the version of .NET
that is installed on a node, but we need to be able to continue to
communicate with it.  The problem is made worse by the fact that AppDomains
hosted in IE always run under the latest version of .NET that's installed -
so requiring .NET 1.0 to be installed doesn't solve the problem.



I had expected that Microsoft would keep the serialization format compatible
by implementing ISerializable for any class whose structure changes.  This
is what we have to do with our Serializable classes so that we're backwards
and forwards compatible.



I would imagine this is also a problem for people who are using
serialization for object persistence.  How can you upgrade your application
to .NET 1.1 while preserving application data?



I'm currently trying to work around the problem by using assembly rebinding
(to prevent .NET 1.0 from trying to load 1.1 assemblies if they are present)
and SerializationSurrogates to provide a common serialization format for
classes whose internal representation has changed.  I have no idea how many
such classes there are, so this could end up being a huge task.  I'm amazed
that this issue doesn't appear to have been discussed before.  Are we unique
in our serialization compatibility requirements?



Thanks,

    Rick

Reply via email to