[Mono-list] Small patch for SoapFormatter
Thu, 23 Jan 2003 23:49:07 -0600
This is a multi-part message in MIME format.
Content-Type: text/plain; format=flowed
I began to look into SoapFormatter and while the code is very good, I
discovered two problems off the bat:
1) It did not throw an exception if you attempt to serialize a class without
the attribute class (It just returned non-zero value).
2) The XML created could not be read by the microsoft XMLDOM, there was a
problem with a missing space between namespace defs. (It is still valid XML
so it should be read, but it was not.)
This diff file corrects those problems.
I also noticed something strange. I create a test application that
generated a output from a .NET and then from Mono and there are significant
1) Microsoft output puts the namespace definitions within nodes of the
output XML. Mono puts all of them at the top node. The microsoft way
causes massive duplication of namespaces.
2) Microsoft adds a bunch of information to the namespace like version,
culture, and public key to the namespace for custom classes. Mono just adds
the class name. Because of this, you can not transfer information between
environments using the default SoapFormatter.
I have some time and want to update this code but I have some questions:
1) What is the path we want to go down? Should the code be updated to read
and generate XML more like .NET to allow for easier interop or should the
system force the developers to use custom attributes to generate Microsoft
compatable Soap. I do not know how other systems generate Soap namespaces.
If anyone has information on how other systems generate Soap, please let me
2) now that they are more complete, should the SoapFormatter code be changed
to used XMLTextWriter and XMLTextReader rather then the current custom
classes XMLSoapWriter and XMLSoapReader. They have some custom Soap
functionality but they could be moved over.
3) Should the namespaces be setup the same as Microsoft (redundent) or at
the top of the XML? I have not had time to discover if Microsoft will load
the XML if the namespace contains all the extra information like version
4) I also have not looked into the XMLTextWriter but will it update the XML
attributes and replace escape characters in the string (i.e. space with
%20%)? If not, shoudl this be hard coded in the generation or added to the
5) Finally, I noticed that in the SoapFormatter class, some of the
properties have been implemented BUT incorrectly (they recurse and blow up).
I could fix them but they actually do not do anything. Should I fix them
or replace code that throws a NotImplementedException and has a MonoTODO
Add photos to your messages with MSN 8. Get 2 months FREE*.
Content-Type: text/plain; name="ObjectSerializer.diff"; format=flowed
Content-Disposition: attachment; filename="ObjectSerializer.diff"
retrieving revision 1.4
diff -u -r1.4 ObjectSerializer.cs
--- ObjectSerializer.cs 19 Oct 2002 00:07:21 -0000 1.4
+++ ObjectSerializer.cs 19 Nov 2002 06:15:56 -0000
@@ -61,7 +61,7 @@
- bld.Append ("'");
+ bld.Append ("' ");
@@ -344,7 +344,7 @@
- return -15000;
+ throw new SerializationException("Class " + graph.GetType().Name + " is
public void BeginWrite() //writes the basic elements of a soap message