Ah, gotta love permathreads. 8-)

Stefan did such a fine job with his response, that I think I’ll just “+1” it (yes, including the agreement with Chris, gasp! 8-) rather than respond myself. Thanks, buddy.

I also wanted to add, in response to Chris, that I only brought caching up as an example of something in HTTP that wouldn’t make sense to have if its application semantics didn’t include GET. I didn’t mean to imply that caching couldn’t be implemented without modifications to SOAP. I was actually specifically thinking about two changes to SOAP which would be required for a couple of important optimizations, both having to do with coarse grained messaging, as SOAP is intended to support. The first would be a framing optimization, the “jump” feature (akin to a chunked transfer encoding). The other would be a push away from strictly interpreted XML, since XML doesn’t support streaming due to the fact that an application can’t make much in the way of forward progress until the end of the message has arrived, lest the message end up malformed.

I also just noticed this MEST response from Steve where he realizes that MEST seems familiar;

The issue was that for at least some people, that paradigm shift had already happened and confusion arose when it was given an unfamiliar name.

Hmm, there’s seems to be a lot of that going on. 8-) It’s why I’ve claimed for about 5 years now, that the Web is what Web services is trying to be. It’s also why I argue that MEST is a specialization of REST. Or, in Steve’s words, that “every behavioral entity works by processing messages” is a special case of “every resource is a container for state”.

Gudge graciously continues the discussion. Here’s my lengthy response that I spent far too much time writing, then rewriting… despite having two Monday deadlines! 8-O

Regarding my concern that WS-A doesn’t require placing the destination address in, for example, the HTTP request line rather than the wsa:To header, he writes;

I really don’t see how WS-Addressing can specify this given that the spec itself doesn’t know anything about the underlying protocols […]

Let me stop him there, since that’s actually my issue; IMO, WS-Addressing should know things about the underlying protocol. As I described when I first raised it, this issue is more about the whole concept of “protocol independence” than it is about anything to do with WS-Addressing.

He then responds to my plea to spend some serious time focusing on the difference between application and transport protocols;

Now, I think I have some idea of the difference between the two, although I’m obviously no expert; transport protocols just move bits around without any regard to what those bits are, whereas application protocols, while still moving bits around, care somewhat about what those bits look like.

Hmm, that’s difficult to respond to because it’s not very specific! 8-O But Gudge didn’t appear mention what I personally believe to be the biggest distinction between the two; an application protocol defines application semantics. This relates closely to my earlier comment that there’s no analogue to such an entity in the historical CORBA/DCOM/DCE style stacks. The reason for this makes total sense though; when you need to support arbitrary application semantics, the only stack that would make any sense would need to separate those semantics from the “thing that frames the bits”. And that’s where the whole concept of “protocol independence” comes from, and as I said, it makes total sense when arbitrary application semantics are required.

Now, consider a system that only has a single application interface, like, say, email, a tuple space based system, or indeed any system built with a coordination language. Does this layering make the same sense there? I don’t believe so. There’s no need to be independent of that layer because there’s no need for any other application semantics. This allows the optimization of the framing and features to the application semantics. For example, had HTTP not had a GET semantic, then there’d be no need for caching. Now consider that with a “protocol independent” equivalent of GET, ala WS-Transfer, you’ve lost the ability to optimize the transfer features for that case. So while you could certainly try to deploy WS-Transfer, it would necessarily perform a whole lot worse than HTTP because optimization would require modifying SOAP. At least HTTP is optimized for the general case because it is the result of the merging of the two layers we’re talking about.

Gudge then clarifies that his background includes messaging and queueing systems, which I presume is a reference to MOM. That’s great; it’s good to have experience with varied architectural styles. I wonder then, if he was aware that a MOM based architecture natively (i.e. it can be abused) uses the same uniform interface constraint as REST (although it goes further to constrain the interface to a single “ProcessMessage” semantics, ala MEST)? It’s not commonly recognized that MOM adopts this constraint because the fact that there’s only ever a single application semantic means that the semantic can be excluded entirely from the message resulting in a pure looking document-in/document-out system with no operations anywhere. I emphasize “looking” there, because REST is just as pure a document-oriented architectural style as MOM, only because it permits operations other than MOM’s one, those operations need to be made explicit in the message… which is why HTTP has “POST”; it’s the name given to the same “ProcessMessage” semantic from MEST/MOM.

Finally, regarding my comment that I didn’t really care what the outcome of the resolution of the issue was, Gudge writes;

It seems somewhat odd, to me, to raise an issue and then not care about the outcome. Like shooting for a basketball hoop but then immediately leaving the court, without caring whether the shot went in or not. I guess this means that if the TAG decide that the decision made by the WS-Addressing WG was OK, then Mark won’t push back.

Ah, minor misunderstanding there. What I don’t care much about is – assuming that the TAG agrees the WG needs to remedy the problem – how the problem is addressed by the WG. Certainly, if the TAG, after considering my issue, decides that it wasn’t a problem after all, I’ll have a lot to say about that. 8-)

It goes live! It’s too bad it uses SOAP/WSDL rather than HTTP/XML or SOAP/HTTP, but hey, it’s some form of access to something that was previously unreachable (unlike their search APIs), so therefore a Good Thing.
(link) [del.icio.us/distobj]

As seen on the www-ws list. No commentary required. 8-)

I installed SOAP on my computer, but I now want to remove it.  Please
provide the mechanism in your software to allow the public to remove it and
its pop-ups.  I want my computer back when I make the decision.  I have
tried to remove the soap files only to find the web site window "Clean Now!"
continues to pop-up.  It is very upsetting that you do not provide this
option where you list: "Click here to learn more" and "Continue what I was
doing".  Again please allow this choice.



Otherwise when computer conversation comes up.I will be sure to strongly not
recommend the SOAP software.



I would appreciate if you could email me the info how I can stop the soap
usage.

With the publication of this trio of specs, I expect the WG is now finished. Phew!

Pay close attention to their work, in particular SOAP, MTOM, and XOP (RRSHB can safely be ignored). If anything remains of Web services in five years, this’ll be it.

Gudge chimes in on the WS-A issue;

The WS-Addressing spec doesn’t say that you *can’t* put the content of wsa:Address into ‘the “RCPT TO” command on the SMTP protocol’. It just says you MUST put it into the wsa:To SOAP header. I wonder why Mark thought the two were mutually exclusive…

I can understand the confusion, but my concern was simply that the spec didn’t require that the address go in the appropriate place in the application protocol. That’s required in order to cleanly integrate with the architecture of the Internet (not just the Web). Otherwise the Internet is being treated as a big bit pipe, rather than as a set of distributed applications (oh, wait, nevermind 8-).

In the one Endpoint Reference, multiple protocols case, it’s fairly obvious ( to me at least ) that the value of the wsa:Address ( and corresponding wsa:To ) cannot be used as address information for all of the underlying transports ( although it might, by happy accident, work for one of them ).

Hmm, what can I say to that? Baked in to that statement is the implicit assumption that application protocols are to be treated equivalently to transport protocols. Please, please, please Gudge, take some time out to carefully consider that application protocols are very very different beasts than transport protocols. URIs, even http ones, are application layer identifiers, intended to identify anything, including customers, invoices, receipts, etc.., not just “network endpoints”, or “transport addresses”. If you’ve come from an RPC background (which I believe you have), there is simply no analogue for an application protocol in RPC architectures. But, simply because they share a name with a layer in the RPC stack, they get treated as it would in the RPC stack.

The third interesting point in completely non-technical, but rather a socio-political one. Mark raised his issue with the WS-Addressing WG who considered his request, thought about at least some of the things mentioned above and in Steve’s post and declined to take up his issue. Not being willing (able?) to take ‘No’ for an answer, Mark then raised his issue with a higher authority, the TAG, hoping, I guess, that they will make the WS-Addressing WG see the error of its ways…

Right. That’s how it works. I’m just following the process (see the Issue Resolution section). And as I mentioned to Steve, I think the acceptance of the issue is, for me, the only win I’m interested in. I don’t really care how it’s resolved.

“How do web services (particularly WSDL/SOAP/UDDI) fit into this?” They don’t. In order to discover things, you need to get at the data behind an interface, and in order to to do that you need to know the interface. With Web services there are an infin
(link) [del.icio.us/distobj]

I forgot to mention that I proposed an issue to the TAG, as the WS-Addressing WG refused to accept it.

This is an interesting one, since it’s not so much a test of URIs vs. EPRs (though that one will be entertaining!) as much as it is a test whether the TAG agrees that protocol independence – where a SOAP message’s semantics are independent of the underlying protocol – is counter to Web architecture.

Dave takes me to task for using XMethod‘s number of registered services as a metric in my attempt to track the growth of Web services on the Internet.

I know it’s not a great metric, sure, but I’m not extracting very much information from it. I’m certainly not claiming that there were, for example, only 376 of them in existence last month. All I’m saying by counting them is that wouldn’t you expect that if Web services were seeing success on the Internet, then the number at XMethods would also be increasing?

But my objective here isn’t sinister. I’m honestly just looking for a metric which reflects SOAP/SOA deployment on the Internet, in the spirit of trying to measure “success” in a meaningful way; not “hype” or “products supporting it”, but actual use in the context it was designed for. If anybody’s got a better one (which shouldn’t be hard at all), I’m all ears.

Stefan asks;

Is it really a protocol change if I change e.g. an RPC-style WS operation name? Doesn’t that very much depend on my point of view, i.e. whether I write (or at least look at) my code as dependent on the lower-level protocol (which is always going to be one level more generic that my high-level protocol) or dependent on the higher-level protocol?

Urgh, protocols. There’s so much confusion around the word that I think Stefan would be much better served to ask the question from a software architecture POV. I think the equivalent would be this;

Is the connector changed by a change in an operation name?

The answer to that is clearly, unequivocally, yes; connector semantics include application semantics, by definition.

No matter how you choose to design your connectors, be it with a single specification (ala Internet based apps like the Web), or be it with more than one (ala Web services, with domain-specific-semantics/WSDL/SOAP/binding), you can’t escape the fact that a change in operation means a change in connector means an impact to interoperability.

I’ll leave the mapping of this explanation to the use of the word “protocol” as an exercise for the reader. 8-)