Comments on WS-I profiling XSD

My post on WS-I potentially profiling XSD brought a range of comments, largely in two themes. Erik pointed out the fundamental difference between the work done by the WS-I Basic Profile Working Group 1.0 (of which both he and I were members) to resolve ambiguities with SOAP and WSDL and the work being considered with XSD. In short, there aren't any real ambiguities with XSD. The investigation of XSD as a potential target for profiling is being driven by users of the technology who are frustrated by the uneven coverage that their OO tools provide for mapping to XSD. This is a tooling issue, however, and should not lead the industry to restrict a core technology in the WS stack. I agree with Erik completely. If your development tool of choice can't handle an aspect of XSD, don't try to restrict what I do, pick a different tool. Randy added that, from his perspective, subsetting XSD wouldn't help anyway. He believes that the major problem with XSD is not what it offers, but what it does not. My opinion on this point is pretty clear.

David and Marc responded to my comments about the vast RPC conspiracy. Marc doesn't like the use of an action header at the transport protocol or SOAP level; David does. I think a SOAP-level action header is very useful, in fact I often describe WS-Addressing, which provides an Action header, as the missing piece of SOAP.

That said, I'm not sure how far I'd push the notion of the action URI having no relation to the extended name of the element inside a message body. There are some special cases where this makes sense, i.e., an action URI that can be associated with any element at all. While people (including me) often talk about wanting to disconnect the action URI from the payload of a message, I don't know how useful it would actually be. Certainly the higher-level specs like WS-Eventing and WS-MetadataExchange do not take that approach; they tie action URI and body element together.

Some have argued that, for instance, you might want a PO as the element in the message body, then multiple actions like submit, process, log, etc. This model works well in the abstract, as long as you only have one piece of information you are processing. Imagine you were modeling a transfer of funds from one account to another. The action would be transfer, but what would go in the body? Three elements, one representing the source account, one representing the destination, and one representing the amount? I prefer a single element that contained all three pieces of information, so that I could process the whole request as a single entity independent of the SOAP envelope's body. In that case, I need an element that represents the transfer of funds. As long as I'm doing that sometimes, would it be so bad to do it all the time, even if that element only contains one child, as in the case of submitting a PO? Increasingly, my answer is yes. (In fact, this ties into my preference for doc/literal/bare services, which allow me to receive the outermost element of a message instead of stripping it away and handing me all of its children.)

So, after thinking about it for the last couple of days - and chatting with Marc, who I saw over the weekend - I think I would commonly define a new element for each action, except where I want an action whose associated element is unknown (essentially a wildcard). It's this latter requirement that is stymied by the WS-I's unique signature requirement; you can't build a compliant service that works that way. I was too hasty lumping WSDL 2.0 in there, though. WSDL 2.0 does allow you to build a service like that, provided that you express how operations are differentiated using the mechanism detailed by the operation mapping requirement. The obvious solution is to rely on the WS-Addressing Action header. Now that WSA is in the hands of the W3C, one hopes they'll define the appropriate mechanism for integration with WSDL 2.0 and we can be done with this problem.

 


Posted Sep 02 2004, 11:39 AM by tim-ewald

Comments

Dave Orchard's Blog wrote Profiling Schema in WS-I
on 09-02-2004 10:49 AM
There's been some debate about whether or not the WS-I should profile schema or not. I lean a little bit towards that it's a good thing, but I think the rub will be whether Web services can use a reasonable...
Marc wrote re: Comments on WS-I profiling XSD
on 09-02-2004 12:48 PM
Tim alludes to the 'vast RPC conspiracy', IMO SOAPAction/WSA action header is one of the main conspiritors .
Marc wrote re: Comments on WS-I profiling XSD
on 09-02-2004 12:57 PM
Tim alludes to the 'vast RPC conspiracy', IMO SOAPAction/WSA action header is one of the main conspiritors. Let me try to explain what I mean by this.

In RPC you have a method and bunch of arguments. The model where SOAPAction/action specifies the meaning of the message whilst the message body contains the data follows the RPC model where action==method and message body==arguments.

I prefer to think in terms of messages and message exchange patterns (MEP). A WSDL operation ties together a set of messages and an MEP but shouldn't (IMO) be required to insert additional information into the message exchange (e.g. the operation name aka SOAPAction or WSA action) since this drags you back into the RPC world.

For me the WS-I restriction on operation signature uniqueness makes perfect sense since it allows you to work out which "operation" is being "invoked" without additional data.
Tim wrote re: Comments on WS-I profiling XSD
on 09-02-2004 1:02 PM
Marc,

This is exactly what I was trying to say with my example about transferring funds. I think you want an element in the body that conveys the intent of a message. If you also choose to include a header that indicates intent because that's how you want to build your system, then fine; tell your consumer and they'll send you one. But if you don't need an action header, ok.

I go here because I don't see many examples where having an action/message body really be separate make a lot of sense. The "this message body could be anything" is the only case, and is rare. If you have to have an element to contain multiple pieces of input or output data in some cases, why not do it all the time and make the model systematic for everyone.

So I think we're in violent agreement. :-)

Tim-
Tim wrote re: Comments on WS-I profiling XSD
on 09-02-2004 3:35 PM
One more thought...

While I can see the case for wanting an element in the message body that conveys a message's intent and see the action header as additional to that, I don't necessarily want the action URI to be the extended name of the element that represents the message payload. The reason I want the seperation is for versioning. It's useful to have an action URI that's used across multiple versions of a given message payload. The intent remains unchanged, so I don't think it violates the basic principle that you described, Marc.

Tim-
Randy Charles Morin wrote re: Comments on WS-I profiling XSD
on 09-02-2004 4:03 PM
Tim,
Your opinion on my comments is not clear to me. Sorry, but I don't read your blog regularly, although I wish I did. Can I infer that you believe that the problem w/ XSD vis-a-vis WS-I is that XSD is too broad?

If this is true, then let me suggest XSD is right on the mark. When some of the people are arguing XSD is too broad (you) and some are arguing it's too narrow (Atomites), then you likely hit a good 80-20 mark in the comprimise. Sorry, but nobody gets everything.

If you think you can find a comprise that hits the 90-10 mark, then great, but I doubt it.
Randy Charles Morin wrote re: Comments on WS-I profiling XSD
on 09-02-2004 4:53 PM
translation

comprimise and comprise = compromise
zwphjrj wrote re: Comments on WS-I profiling XSD
on 06-23-2009 2:14 PM

RNJjkO  <a href="slgoyajzcbyr.com/.../a>, [url=http://gajyqejswzbi.com/]gajyqejswzbi[/url], [link=http://uqnqtlbwovlj.com/]uqnqtlbwovlj[/link], http://zbfzptpsbikt.com/