Site Archive (Complete)
Architecture Blog: Problems In SOA Vocabulary?
Architecture & Design
PATTERN LANGUAGE

Modeling, Managing, Making it Right.

by Jonathan Erickson
IF YOU BUILD IT

... Will they Come?

by Arnon Rotem-Gal-Oz
February 11, 2007

Problems In SOA Vocabulary?

Udi has some comments about my SOA definition. Udi says that the definition I provided does not support the notion of publish/subscribe using topics for services. My answer to this is yes and no.

First of all, I never said (or at least I never meant to say) that contracts are only limited to incoming messages. Contracts contain incoming and outgoing messages. I probably should have stated it more clearly though. Udi says "Contract: Who owns the message type being published? The publisher or the subscriber? Common SOA knowledge would say that the message belongs to the contract of the service that receives it."

I don’t know who "Common SOA knowledge" is. In my opinion, this thinking is a wrong "even" for request/reply. The reply message belongs to the service the sends the reply.

Regarding endpoints. If the subscribers go to a topic as in "ServiceName\TopicName" then yes I would call that an endpoint since this is a well-known address consumers (subscribers) go to find messages published by a service.

Regarding consumers Udi says:

Is the publishing service "using" the subscriber when it publishes a message? I don’t think so, and the subscriber definitely isn’t using the publisher at that point either. So, we’ve got some inter-service message-based communication going on and it isn’t clear if we even have a service consumer. In fact, if all a service ever did was subscribe to some topics, and publish messages on other topics, it looks like we’d have very loose-coupling but be straying from the common SOA wisdom.

Maybe that’s just semantics but I don’t see why the subscriber isn’t using the publisher.The publisher publishes a message on a topic this is part of its offering. The subscriber chooses to consume that information and maybe do some stuff with that -- possibly publishing some other messages. That’s a "using" relationship to me.

Nevertheless, SOA is not a synonym for "Distributed system" so there are cases when distributed components that communicate through messages aren’t SOA. For example, publish/subscribe using topics where the topics are common and shared between components so that multiple services can publish on the same topic does not, in my opinion, fall under the definition of SOA . This doesn’t say that this is a bad architecture in any way -- but it isn’t SOA either.

As I said in the "What is SOA posts" for an architecture to be SOA you need autonomous components , that publish and accepts messages defined in contracts, delivered at an endpoint and governed by policies to service consumers -- no more, but no less either.


Posted by Arnon Rotem-Gal-Oz at 03:26 PM  Permalink




 
INFO-LINK


Related Sites: DotNetJunkies, SD Expo, SqlJunkies