Steve
responds to my Indigo complaints by claiming that Indigo, contrary to my assertion, has a simple messaging model. Although he doesn't specify exactly what he means, I assume he's talking about decorating methods with the [OperationContract(IsOneWay=true)] since that's what usually passes for simple messaging among the Indigo crowd. I completely reject that notion. A remote procedure call is still a remote procedure call, even if you don't get a response. You still have a proxy. You're still incorporating the service's method into the caller's domain. I will grant that with the appropriate discipline and design you can build a simple messaging model on top of this one-way RPC semantic, but Indigo really doesn't help you here.
In one respect, I think Steve's view and mine are both correct, if you understand the difference in our perspectives. Steve, as an Indigo architect, looks at what happens inside the Indigo infrastructure, when you use the one-way semantic and sees a clear messaging orientation. I'm looking at the API that's presented to Indigo's users and see a continuum of RPC semantics with nary a messaging API in sight. I would like the Indigo API to reflect more directly the messaging orientation without the RPC overlay. I want to use Indigo to send structured messages to a variety of endpoints without necessarily having to map them to a particular service method. This is clearly possible with the current Indigo API but is just as clearly not the preferred programming model. It's difficult to describe exactly how my ideal high-level API would differ from the current API without some sort of pseudo-code examples. I'm working on exactly that, but it'll take some time because I have a family and a day job that come first.
As to Steve's other points, his description of Indigo configuration led me to look deeper there and I see that I had a mistaken view based on the samples and demos I've seen. Now I have a different set of concerns about Indigo configuration that I'll have to address in later post. I'll just withdraw my last point. It was an unsubstantiated assertion. Of course, I still disagree with Steve about svcutil, but that's part and parcel of our disagreement about what are and what aren’t RPC semantics. I am still concerned about the way Indigo is presented to developers. After all the early emphasis on service orientation, I expected Indigo to present an API that is consistent with those principles to developers. Instead, up to this point, the articles, the samples, and the demos have consistently been all about RPC. Sure, I would prefer that Indigo not even have an RPC interface. It would be quite easy to replace that with a request/response messaging model, but I know that you have to support developers who want their distributed object model in spite of a couple of decades of experience showing it's a bad idea. My main point about being a Mort is that it's not the Morts of the world who want this. It's the Elvis-style developer who wants it. Real business apps map very directly onto a messaging model, much better than they map onto a distributed object or RPC model. I think Indigo is missing an opportunity to create a "pit of success" for building distributed business apps.
Posted
Aug 16 2005, 09:20 AM
by
john-cavnar-johnson