[Mono-list] Deserialization issue when talking to webservicefrom mono

Robert Weiss rweiss at chesapeakebay.net
Wed Feb 11 14:41:39 EST 2009

A really good point to make regarding this is to make sure that when you
"have" to serialize across platforms, then do it at the lowest level


Basically, my solution was to *not* serialize the SortedList by marking
it [NonSerialized], putting the data in a *more* generic container and
then creating a accessor to load the data from the generic store into
the sorted list when needed the first time. Still all in the same class,
so I have 1 binary still and it works across the platforms without


Thanks to all who offered up help!!



From: Alan McGovern [mailto:alan.mcgovern at gmail.com] 
Sent: Wednesday, February 11, 2009 2:34 PM
To: Robert Weiss
Cc: Robert Jordan; Mono-list at lists.ximian.com
Subject: Re: [Mono-list] Deserialization issue when talking to
webservicefrom mono



On Wed, Feb 11, 2009 at 7:23 PM, Robert Weiss <rweiss at chesapeakebay.net>

Ok. I understand that answer and I have implemented a change similar to
what you responded.

That's a good move. Binary serialization isn't even compatible between
different releases of the .NET framework if you happen to try
serializing the wrong class.

	However, I was under the assumption that mono was a supported
	had access to the MS .NET Framework Source and was implementing
it based
	on that source.


Nope, not at all.

	Is this not the case? If it is the case, then this is a bug that
	to be fixed to the correct implementation.

The fix is really to not use binary serialization on that datatype. As I
said above, you can end up in trouble just trying to interop with
another version of MS.NET. If i remember correctly, binary DateTime
serialization is one which changed between MS.NET releases.

Glad you got it working anyway. That's the important part ;)



	Thanks for the info.

	-----Original Message-----
	From: mono-list-bounces at lists.ximian.com
	[mailto:mono-list-bounces at lists.ximian.com] On Behalf Of Robert
	Sent: Wednesday, February 11, 2009 2:18 PM
	To: Mono-list at lists.ximian.com
	Subject: Re: [Mono-list] Deserialization issue when talking to
	webservicefrom mono

	Robert Weiss wrote:
	> Yes. Assuming that your example class "Sample" was part of the
	> framework and the implementation in .Net was what you listed
and the
	> mono implementation differs, then the binary serialization
would not
	> work. Since this *appears* to be the issue at hand with the
way that
	> Generic Sorted List was implemented in mono, how does one get
	> incorrect mono implementation fixed?
	Mono's implementation isn't incorrect. It's just incompatible
	regarding binary serialization.
	Since SortedList<K, V> does not implement ISerializable, there
	is no way to intercept the serialization process other than
	trying to design the class layout like MS did. It's not an
	easy process given that mono's developers never decompile
	and look at MS' implementation.
	Here's an exception I got while trying to deserialize
	a stream created with MS.NET 2.x:
	Unhandled Exception: System.TypeLoadException: Could not load
	mscorlib, Version=, Culture=neutral,
	PublicKeyToken=b77a5c561934e089],[System.String, mscorlib,
	Version=, Culture=neutral,
	This means that MS' implementation is using an internal class
	SortedList<K,V>.KeyList. No one knows exactly what this class is
	for and how it's implemented...
	You should replace the SortedList from your WebService API with
	something that can be serialized better, like an array of pairs.
	More on serialization:
	(search for serialization).
	Mono-list maillist  -  Mono-list at lists.ximian.com
	Mono-list maillist  -  Mono-list at lists.ximian.com


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-list/attachments/20090211/f422d125/attachment-0001.html 

More information about the Mono-list mailing list