It is actually much easier to make an uninteroperable Web service if one starts with the service contract instead of with object oriented code. The reason for this is quite simple and one I’ve harped on several times in the past; the impedance mismatch between XSD and objects is quite significant. There are several constructs in W3C XML Schema which simply have no counterpart in traditional object oriented languages which cause current XML Web service toolkits to barf when consuming them.
The problem then, to my mind, seems to be not in the approach, but in the toolkits. And not in the fact that they’re not serializing perfectly, just that serialization in itself is simply a bad idea.
Taking XML out of Web services, or conceptually ignoring it, turns them into a bad version of CORBA or DCOM. This seems to be like combining the disadvantages of both with the most bloated syntax imaginable.