Some very good discussions going on about my article on Web Services contracts.
Gordon Weakliem says points out by reference that my view on XML Schema being a way to express semantics is wrong. I think it's really a matter of perspective and how you combine the type description capabilities of Schema with the simple quality of XML namespaces to distinguish between "your thing" and "my thing". A description of a "customer" complex type (I stick with this most-abused example for clarity) expressed in XML Schema is context-free and without any associated semantics until I say targetNamespace="urn:schemas-newtelligence-com:banking:collections:client:2002-07-24". With that I am binding what used to be a purely technical description to well known and well defined business semantics and gain the freedom to adjust that distinct understanding of customer to changing business needs. So, at least in my world, XSD does carry semantics. / Gordon also says that my ASP.NET rule #3 seems to encourage DataSets and that's not what I say I say "if you happen to use" and that's more like a "if you didn't really think long enough to use DataSets"
Greg Reinacker discusses Gordon's point and agrees with me on my XSD rules as it seems, but disagrees with what I say about WSDL, namely that I require the WSDL to become a new WSDL (my namespace) whenever its signature changes. The argument is along the lines of updating a C++ or Java class compatibly; you add a vtable entry to the end of the vtable and you are fine. I don't think that analogy works in the Web Services world and I agree with Brad that upwards and downwards compatibility need to be taken into account. With COM, C++ and Java we get away with updating a vtable, because it is extremely rare that new clients talk to old servers. Servers usually get updated first. Nothing breaks the new client software gets phased in eventually. With Web Services, anyone can implement any WSDL (large scale standardization is still something that some people believe is cool and is going to happen, I don't) and hence, you can have any mix of "old" and "new" servers and clients with respect to a WSDL.
Also, with C++ et.al. all contracts are typically proprietary and under "my" control, because they grow out of the programming model; that's even true for IDL based things. In a XSD and WSDL world, contract sharing is encouraged and the contract is no longer growing out of a programming model, which is just the thing that enables sharing to begin with. If you pick up someone's "standard" WSDL to implement your "standard weather service" and someone else does the same and both of you do technically compatible extensions (extend the vtable), both of you begin to create chaos. Suddenly the same WSDL (same identity) exists in two incompatible variants and they won't stay a lonely couple for long.
6:10:26 PM
|
|