A great post from Rich Turner (subscribed!) via Stefan.

It doesn’t surprise me one bit that this backlash is happening. It’s inevitable whenever there’s no definition to back up a buzzword. Since SOA is an architectural style, it needs to be defined in the language of software architecture, something that nobody is doing … well, unless you count this decent first stab by Dave Orchard (which didn’t make it into the WSA document, unfortunately).

If the term “SOA” is going to have any meaning going forward, somebody’s going to have to define it in a rigorous manner, it’s just that simple. Any volunteers?

P.S. and to top it all off, that’s the good news for SOA. 8-)

I cancelled my Friendster account today, in protest of their decision to fire a friend of mine, Joyce Park.

This was apparently, as I understand it, just because she blogged about work related matters, although without revealing anything which wasn’t already publicly available. The mind boggles.

If you’re doing Web stuff, you could do no better than her. Drop her a line (and me too, while you’re at it 8-).

I realized a little while ago that my blog roll was quite one dimensional in the subject matter it aggregated (namely, distributed computing). So, I’ve decided to augment it with some other feeds related to a broader love of mine, design (in general, not just software). For reasons unknown, I seem to be in a headspace recently where I’m noticing design in practically everything. In fact, Adam scooped me on one of them a couple of weeks ago; designing a startup (more on that later, perhaps, as it’s something I have a lot of experience with).

So far I’ve only found two feeds that turned my crank (though without much effort on my part, admittedly); MoCoLoco which presents creative examples of industrial design, and Tesugen by Peter Lindberg, which seems to cover design in general, though with an emphasis on urban design and software architecture.

If anybody knows of any others, I’d be grateful for recommendations.

Everything you wanted to know about protocol testing
(link) [Mark Baker’s Bookmarks]

Uche writes;

But putting the misery of these experiences aside, I’m surprised at how little I’ve had to worry about SOAP. As it became clear to me that Web Services were becoming a menace to much of the goodness wrought by XML, I worried that I would be forced to do a lot of gritting my teeth at work while I accommodated clients’ insistence on WS. This hasn’t turned out to be the case. In several cases where WS “end points” have been suggested, I’ve been surprised at how easily my suggestions of a REST-like alternative are embraced (the fact that I could usually whip up running code in hours helped a lot).

That’s what I’m seeing too, at least once you’re in the door (though for a pretty small sample space of two clients). On the other hand, looking for cool large scale distributed systems work has becoming extremely painful since Web services came onto the scene. Most projects are asking for “SOAP/WSDL/UDDI experience”, which leaves me either having to lie and say “Oh yes, I’ve got lots” (which I won’t do, of course), or else I have to put a pleasant face on WS-Insanity and brave the inevitable lack of interest, as I did in my resume;

He believes that, for the foreseeable future, the bulk of innovation in Internet scale systems will occur via additional architectural constraints applied to the Web; for example the Semantic Web, or the Two Way Web. Unfortunately, these beliefs also indicate to him that Web services have some serious architectural flaws that make their suitability as a large scale integration solution questionable. As a result, he spends considerable amounts of time working within standards setting organizations to ensure that these specifications – including SOAP 1.2 – take maximal advantage of the Web.

He writes;

Simply put, business resources should be “one step back” from HTTP IMHO. When you send non-idempotent messages to a resource (e.g. POST/PUT), you send them to its inward bound, asynch message queue. You do not directly interact with the business resource.

Interesting position on queues, but I think you’ll eventually run into problems doing that … though clearly not major problems, otherwise you’d have discovered them already 8-).

Whenever I want to do the queue thing, I use two resources; the “business resource”, and “the inbound message queue for that business resource” (though of course, as a separate resource, it need not be used only for the business resource). I then subscribe the business resource to the queue, such that messages POSTed to the queue also are forwarded to the business resource. FWIW, I’ve been using mod_pubsub recently to manage the queue resource (as a topic maintained by its router) in some work I’m doing on the side.

The problems I see with the approach Sean describes are a result of it not acknowledging that the queue is a separate resource than the business resource, as this can lead to ambiguities. For example, what can be expected from a GET on the URI; a representation of the state of the business resource, or a representation of the state of the queue?

That structure I described is probably a useful Web idiom to write up… I’ll put it on my todo list. 8-)

P.S. I assume you wanted to say “non-safe” there, since PUT is idempotent.

Savas asks

I am talking about an architecture which only has services and messages, so where are the resources?

Aha! If that ain’t the $10,000 question … So, here’s my smart-ass 2c response;

Show me a message(*) and I’ll show you a representation of the state of some resource.

(*) a ProcessMessage message, aka a document.

In a really awesome essay (sorry for the delay, I was on vacation), Savas ponders, among other things, what it would mean to be a RESTafarian. It seems the one thing holding him back from being a card carrying member of the club though, is that the whole idea of binding application semantics to a protocol seems sorta silly to him. Well, I don’t believe it is, but fortunately, what you believe about that subject matters not to your eligibility for membership. This is because REST, as an architectural style, says nothing about how any particular architecture is implemented. “All” it does is constrain your architectural elements.

So, if your architecture has uniform connector semantics (even if there’s only a single one called “processThis”), and if your architecture has a single data element which identifies resources which act as message endpoints, and it uses fully self-descriptive messages, et cetera …, then your architecture is RESTful, like it or not.

Savas, your card’s in the mail. 8-)

P.S. it hurts to type so don’t expect speedy email or blog replies – a side effect of skewering your hand with a broken wine glass stem.

According to Radovan anyhow 8-)

Everyone programs in something different, so let’s just do protocol-based integration, where we will just agree on the format of the messages we are going to exchange over the wire.

I think this is the thing some ‘REST fundamentalists’ are still missing…

No, I think we get that. Or at least we get that it’s a critical part of the solution. This is why HTTP 1.1 is as well specified as it is (not that it doesn’t have issues, of course). The problem is that the format is only one part of the solution. The other part are the semantics of the messages, something that HTTP also specifies, but SOAP doesn’t … not that it should though, as it can always inherit them from the underlying protocol.

Right from the spec, we have this example of an EPR;

<wsa:EndpointReference xmlns:wsa="..." xmlns:fabrikam="...">

   <wsa:Address>http://www.fabrikam123.example/acct</wsa:Address>
   <wsa:ReferenceProperties>
       <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
   </wsa:ReferenceProperties>
   <wsa:ReferenceParameters>

       <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
   </wsa:ReferenceParameters>
</wsa:EndpointReference>

Somebody please tell me why on earth that isn’t a URI? You know, something like;

http://www.fabrikam123.example/acct/123456789?ShoppingCart=ABCDEFG