So the Indigo Road show is here in Tampa on 8/11 and I have spent the last few days scowering the blogs to get some good conversation points for Rich Turner the Program Manager from Microsoft's Distributed Systems Group (recently appointed). It didn't take long before his name flew off the screen attached to his whitepaper
Developing Distributed Services Today.
It was this article that was being referenced by many people online when it came to Indigo and what it had to offer. The contract first camp seems to think WCF (why does that acryonym have to be so close to the WSCF or Web Services Contract First from ThinkTecture.com) is still flawed in its utilzation of contracts because proxies and interfaces inherently bind you to the type structure of your service. I personally find this interesting but I am starting to feel more confident that I'm not as tightly bound syntacticly to the service I might be consuming with the new versioning enhancements in WCF.
So I've also read cover to cover the book from David Pallman on Indigo Beta 1 (now WCF). This book has some very thorough explanations of the programming model being delivered with this new "Foundation" of communication for our distributed applications. However, I still struggle with some things and I plan to find out what our good friend Rich Turner has to say about them:
1. I have looked at all of the features being delivered with Indigo at least with Beta 1 and my key question to Microsoft is how is this really moving us any closer to "service orientation"?
2. Having read the whitepaper "Developing Distributed Services Today" I can't help but think we're heading down a dangerous path of merging Indigo services as a technology with service orientation as a concept. Doesn't the idea of a service transcend technology and how does WCF help me design, develop, deploy and support these things once they get into the wild (beyond a simple new version of the SOAP tracer found in the old SOAP toolkit).
3. I also recently came across a very interesting blog from Kirk Allen Evans that was apparently linked into your whitepaper (
Kirk Allen Evants Blog On Developing Distributed Services Today). This discusses the utlization of ASMX as an appropriate way to distribute objects in from what I can tell a non-SOA way. True they defend it as being a comparable technology when it comes to performance but the more interesting point here is that the objects and code have been distributed for no logical reason. Once again we have a technology capable of letting us do bad things in an easy way. This probably is more of a design patterns and practices thing but I'll be interested in what Rich thinks.
4. If we are expected to believe that ASMX is the best mechanism today for preparing for WCF/Indigo down the road in our enterprise how can we be expected to ignore things like flowing transactions, binary message structures, WS-Security, and Reliable sessions? If I have read David Pallmann's book correctly the Basic Profile binding will not allow you to do any of these things and existing ASMX converted applications will have to use this binding. Why wouldn't we look more carefully at building Enterprise service components that are later exposed via web services. Take the DCOM hit today to reap the WCF benefits tomorrow!
5. Finally my favorite topic is that of the four quickly forgotten/ignored service oreintation tenets. These are design concepts that when followed assure you some level of longevity in your enterprise SOA. My favorite is without a doubt the fact that "Services are Autonomous". In an application requiring high durability this couldn't be more critical. This also seems to be the most clearly defined and most often abused tenet. I say that because I believe it to be as self describing as any of the tenets. Autonomous means self governing. What makes services self governing? How about that they don't rely on other services or that they are designed with offline capabilities in mind. I would say that the WCF/Indigo bits are keeping this tenet close to their hearts as they've extended the MSMQ reliable messaging pieces to the services programming model but when I read through some of the literature I keep hearing about services as both end points and clients. But there are no warnings about how the design of these pieces should be such that a failure does not impact the consumer ... strange dichotomy isn't it?
So as you can see from my very targeted probing above I better bring some extra funds to buy the poor guy a drink. Hopefully somewhere between question 3 and 5 he doesn't ask me go drink what's under the sink :) All kidding aside I plan to track the man down and get some answers to these things that are weighing on me quite heavily. Look back soon for a post on what I've learned.