This post originated from an RSS feed registered with .NET Buzz
by Sam Gentile.
Original Post: The Developing Distributed Services Article Discussion Continues
Feed Title: Sam Gentile's Blog
Feed URL: http://samgentile.com/blog/Rss.aspx
Feed Description: .NET and Software Development from an experienced perspective - .NET/CLR, Rotor, Interop, MC+/C++, COM+, ES, Mac OS X, Extreme Programming and More!
Wow, John Cavnar-Johnson really takes Rich Turner, and all of Microsoft's distributed technology efforts to task in his strong post. Among some of the gems, “The self-proclaimed goal of the article is to "help you make the best choices when deciding how to build distributed systems today on the Microsoft platform." As such, the article is a miserable failure even though almost all of what it says is accurate.” and “Microsoft has learned a lot about what works and what doesn't in building distributed systems. Unfortunately, the real lessons of the past 10 years don't seem to have permeated throughout the organization. Looking at things from the outside, I would say the BizTalk team and the folks who designed WSE get it, the folks who designed DCOM, .NET Remoting, ASMX, and Indigo (Windows Communication Foundation) don't, “ and “Distributed Objects: They suck. They sucked 10 years ago, they suck today, they'll suck 10 years from now. If you want an accessible platform-independent explanation of why, go read Ted Neward's blog. Here's a bit of advice for architects and developers. If the programming model for your distributed technology of choice includes the concept of a proxy, you're being forced into distributed object semantics“
Having worked with all these technologies for 20 years, which in my mind all date back to DCE/RPC, that I and many others at Digital worked on in the 80's, the distributed computing landscape has not changed much and I can agree with most of this, the exception being Indigo, which despite being a re-invention (again) of DCE RPC, at least simplifies the landscape with a great programming model and addresses a much more loosely-coupled world. All of the models listed above, particularly DCOM, .NET Remoting and MTS/COM+/ES have all dragged us into the world of proxies and arcane nonsense that mad it hard to solve business problems. DCOM caused more white hairs on me and others than most! Everyone who was “expert” in it would come to try to get it running with “security” would spend a week just arbitrarily picking DCOMCNFG options. I mean, who really ever passed anything other than NULLs to CoGetSecurityBlanket and the like? These problems and the proxy/context hardships just migrated into COM+ and ES just covered it with a (sometimes) managed wrapper. I have long posted on the hardships I have had with ES/COM+ and that has made me notorious in the Indigo group and with friends like Don. It's not that ES doesn't work (as Don once took me to task for over the phone!) but how much you have to struggle with it all. As John says so well, “Use Enterprise Services & COM+ When Appropriate: The marriage of .NET and COM+ has been an uneasy one at best. The mismatch between the two systems assumptions (particularly, but not limited to, the difference between garbage collection and ref counting) is so great that complex interactions are typically plagued by nasty bugs. Avoid building systems that require frequent, fine-grained crossing of that border,” I have to go with that (sorry Joe!) but that has been my experience. I still have a lot of hope and faith that Indigo will not drag us into this world and most of what I've seen I really like.
The more I look at BizTalk and WSE (and perhaps Indigo), the more I have the feeling that they got it right. Your thoughts?