More on Web services and distributed objects

Dave Orchard posted a response on my last post about the relationship between services and distributed objects. Today, the answer is that Web services are not less brittle than distributed objects, largely because of tooling. How come I blame the tools? Because vendors keep telling developers that they shouldn't have to know any XML details to make Web services work. Instead, it should just feel like something that they're already familiar with: method calls and objects. In confusing something familiar with something easy, vendors are building the same thing we had before. My point is that it isn't really the details (because tooling is going to try to hide them), but the model that matters. If most developers see distributed objects, than that's what Web services will be. The obvious point of contrast in the .NET world is WSE's low-level messaging API. Yes, it still uses objects and methods, but the methods have one in parameter and a return value, both of which are messages.

My concern about using EPRs to reference stateful instances of services actually depends on how toolkits choose to implement it. If a toolkit dispatches a call to an object instance that lives just long enough to process the input message and generate an output message (if any) and leaves it to that object to map additional header info to some sort of state management mechanism, that might be okay. If a toolkit does that mapping for you, i.e., it uses the header info to map to an object that maintains state, that would not be okay. The difference is that in the first case, the developer is forced to be deliberate about how state is managed in their system.

So why do I want to force the developer to do more work that the plumbing could potentially hide? The answer is easy: I believe that the only way we'll get the organic ecosystem of loosely-coupled services that we all want is if developers are deliberate about how they deal with message data, behavior and state. Right now, we rely too much on our tools to handle a lot of these details for us, and they make assumptions that let us down.

(This may still qualify as “yucky thinking” from Dave's perspective. If so, I'll try to do better.)


Posted Nov 22 2004, 08:59 AM by tim-ewald

Comments

TheChaseMan's Frenetic SoapBox wrote Revisiting: WS
on 11-22-2004 8:48 AM
TheChaseMan's Frenetic SoapBox wrote Revisiting: WS
on 11-22-2004 8:48 AM
Commonality wrote Tim Ewald's Musings
on 11-22-2004 11:38 AM
I totally love it that Tim Ewald now has the time to post more to his blog. I enjoy reading...
JoeW wrote re: More on Web services and distributed objects
on 11-22-2004 12:32 PM
Maybe I've misunderstood this - but I don't agree with your point here. Are you saying that the logical design of losely couple components depend on developers thinking about message content rather than strong types and multiple parameter functions?

I agree about state management being an issue. But a developer that thinks that allocating, using and keeping a Web based distributed object is the same as a local heap allocated object will soon hit a brick wall. The coupling of services I think is another matter entirely - it's true the tools should suggest the right way to design and use this technology.

Making developers think about how to physically package a message *will* mean that this interface changes less often - but this isn't the way to enforce a losely couple architecture.
John Cavnar-Johnson wrote re: More on Web services and distributed objects
on 11-22-2004 6:14 PM
I agree completely, but it need not be more work for the developer. If the tools supported message-based architectures half as well as they do the distributed object designs, we would have less work to do. Message/service based designs more closely model real organizational processes than object-based approachs in the vast majority of scenarios. Unfortunately, the tool builders all give lip service to messaging and SO, but they clearly want to continue being object addiction enablers.
Paul Jackson wrote re: More on Web services and distributed objects
on 11-22-2004 11:12 PM
Tim says:
>The obvious point of contrast in the .NET
>world is WSE's low-level messaging API. Yes,
>it still uses objects and methods, but the
>methods have one in parameter and a return
>value, both of which are messages

Please define "Message".
Dave Orchard wrote re: More on Web services and distributed objects
on 11-23-2004 11:31 AM
What's the protocol difference between:
1) Stateless component is invoked and said component uses stateful component (your preferred option)
2) Stateful component is invoked automatically (your unpreferred option)?

I think your answer is nada.

I think where you are going is that WS-Addressing RefPs make it far more likely that option #2 will be built into tooling, and therefore WS-A RefPs are of concern.

I'll profer the idea that there are at least 2 types of state from the app's perspective: the type that the app developer "knows about" and the "infrastructure". HTTP Cookies are often used to build stateless processes (the app doesn't see any state) but are statefully pinned to a machine (as the infrastructure uses the cookie without the app knowing it to put in a session id).

If I'm getting your point, you think it's ok for "infrastructure state", ie for infrastructure dispatch, but not ok for app state. I know that I'm being very very very loose about what is "the app" versus not, especially in the context of stateful web pages that have sessions for sign-on, but I'm trying to understand where you draw the dividing line.

Is that roughly right?

And if so, you seem to be arguing that the benefits of "infrastructure state" are not strong enough to compensate for the downsides of "app state".

SOAphisticated wrote Web services and distributed objects, part n
on 12-02-2004 7:22 AM
aaron weiker wrote Toolkits...
on 12-28-2004 2:52 AM
elco wrote re: More on Web services and distributed objects
on 02-28-2005 7:38 PM
I totally love it that Tim Ewald now has the time to post more to his blog.

Add a Comment

(required)  
(optional)
(required)  
Remember Me?