February 21, 2006
@ 06:59 PM

Yesterday, Mark Baker asked Why all the WS Interop problems?.

If you'd have asked me six or seven years ago - when this whole Web services things was kicking off - how things were likely to go with them, I would have said - and indeed, have said many times since - that they would fail to see widespread use on the Internet, as their architecture is only suitable for use under a single adminstrator, i.e. behind a firewall. But if you'd asked me if I would have thought that there'd be this much trouble with basic interoperability of foundational specifications, I would have said, no, I wouldn't expect that. I mean, despite the architectural shortcomings, the job of developing interoperable specifications, while obviously difficult, wouldn't be any more difficult because of these shortcomings... would it?

In my opinion, the answer to his question is obvious. A few months ago I wrote in my post The Perils of Premature Standardization: Attention Data and OPML that

I used be the program manager responsible for a number of XML technologies in the .NET Framework while I was on the XML team at Microsoft. The technology I spent the most time working with was the XML Schema Definition Language (XSD). After working with XSD for about three years, I came to the conclusion that XSD has held back the proliferation and advancement of XML technologies by about two or three years. The lack of adoption of web services technologies like SOAP and WSDL on the world wide web is primarily due to the complexity of XSD.

If you read the three posts that Mark Baker links to about SOAP interop problems, you'll notice that two of them are about the issues with mapping xsi:nil and minOccurs="0" to concepts in traditional object oriented programming languages [specifically C#]. If a value is null does that map to xsi:nil or minOccurs="0"? How do I differentiate the two in a programming language that doesn't have these concepts? How do I represent xsi:nil in a programming  language where primitive types such as integers can't be null? 

The main problem with WS-* interop is that vendors decided to treat it as a distributed object programming technology but based it on a data typing language (i.e. XSD) which does not map at all well with traditional object oriented programming languages. On the other hand, if you look at other XML-Web-Services-as distributed-objects technology like XML-RPC, you don't see as many issues. This is because XML-RPC was meant to map cleanly to traditional object oriented programming languages.

Unfortunately I don't see the situation improving anytime soon unless something drastic is done.


Categories: XML Web Services
Tracked by:
http://www.parand.com/say/index.php/2006/02/21/soap-interop-and-the-first-class-... [Pingback]
"On Microsoft Not Joining the OpenDocument Format (ODF) Committee" (Dare Obasanj... [Trackback]
http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=6c87b7c5-f3c0-4461-bebf-47... [Pingback]
http://zabivwn.net/delaware/sitemap1.html [Pingback]
http://gator393.hostgator.com/~rocata/sitemap1.html [Pingback]
http://fwmwly7.net/post/sitemap1.html [Pingback]
http://weujmru.net/housing/sitemap1.html [Pingback]
http://pcbaqlu.net/03/sitemap1.html [Pingback]
http://yftbsy1.net/internet/sitemap1.html [Pingback]
http://tb9wlm3.net/06/index.html [Pingback]
http://tb9wlm3.net/03/index.html [Pingback]
http://exktlmy.net/bedroom/index.html [Pingback]
http://lx2rnws.net/rideshare/sitemap1.html [Pingback]
http://box405.bluehost.com/~dugablog/sitemap1.html [Pingback]
http://henres.site.io [Pingback]
http://lf0s3on.net/artists/sitemap1.html [Pingback]
http://tulanka.readyhosting.com/bmw/sitemap1.php [Pingback]
http://biggest-hosting10.com/~rocata/table/index.html [Pingback]
http://kiva.startlogic.com/sitemap1.html [Pingback]
http://host239.hostmonster.com/~blogford/sitemap3.html [Pingback]
http://host239.hostmonster.com/~blogford/sitemap2.html [Pingback]
http://gator413.hostgator.com/~digital/credit/sitemap1.html [Pingback]
http://gator413.hostgator.com/~digital/career/sitemap1.html [Pingback]
http://vahq8px.net/ipod/sitemap1.html [Pingback]
http://lgicsge.net/jewelry/sitemap1.html [Pingback]
http://tyzzlpp.net/rideshare/sitemap1.html [Pingback]
http://ask-a-blog.com/sitemap1.html [Pingback]
http://qyaq5qm.net/truck/sitemap1.php [Pingback]
http://hrxc1zr.net/groups/sitemap1.html [Pingback]
http://box432.bluehost.com/~zbloginf/sitemap1.html [Pingback]
http://box432.bluehost.com/~zbloginf/sitemap2.html [Pingback]
http://gator442.hostgator.com/~hockteam/alaska/sitemap1.html [Pingback]
http://gator442.hostgator.com/~hockteam/university/sitemap1.html [Pingback]

Wednesday, 22 February 2006 00:22:47 (GMT Standard Time, UTC+00:00)
Vendors seem to like implementing the XML Schema spec in their class generators and serializers. I wish they would spend as much time making their core frameworks and IDE toolkits schema-aware in the first place. The frameworks give me no help in connecting my data and its schema other than basic validation during parsing.

The specs never say that xsi:nil=“true” is equivalent to a missing element or an element with no content. My application might take a semantics judgment to equate these things. But it sure wouldn’t take much work to get a class generator to stop taking that choice away from me, which is what happens today.

Besides, the NULL (zero pointer address) vs. NIL (string with zero length) situation was around long before web services came along. SQL can distinguish the lack of a column/value pair, a NULL value, and an empty string value in an INSERT statement. Why does this trip up XML toolkits? Why is there no similar outrage that an int can be NULL in a database, but not in C#?

Most languages leave it up to frameworks to fill these gaps. The Dataset (or something it contains) gives you IsDBNull(int column) and can also tell you a column's database type. But the SQL Server plumbing and the client-side framework conspire to convey results-specific type info into a Dataset -- even an untyped one. No such luck for XML.

Thursday, 23 February 2006 22:08:46 (GMT Standard Time, UTC+00:00)
Makes me wonder where we'd be if we had gone down the RNG path instead...
Comments are closed.