New Years Resolution - Not Quite World Peace, But...

Published 08 January 08 05:46 PM

So it's a new year, and while I'm not really in the habit of making resolutions, there is one thing that I would really like to accomplish this year...

I've spent the majority of my career as a developer building and sharpening my skills in OOD, design patterns, DDD, TDD, and a whole host of other acronyms containing the letter "D".  Then came along services and with it an acronym that every vendor seems to use and no vendor seems to understand: SOA.  As SOA grew in popularity, so did the rise of more and more middleware services.  Some notable examples for me as of recent have been WF and WCF.

The deeper I get into working with these new technologies, the more my concern is growing that SOA at some level seems predicated on designs that I consider OO anti-patterns.  More specifically, SOA seems to favor an anemic domain model (a data model, really) which is consumed by services and orchestrated by workflows to a rich domain model, where both the data and behavior of the problem domain are expressed using the same semantics and syntax.  Fundamentally, it feels to me at this point that SOA requires the problem domain to be factored horizontally by functional layer rather than vertically by logical domain abstraction.

So my resolution: to develop a solid understanding about the practical ramifications of SOA (and associated technologies) on object-orientation.

Have any of you run up against this yet?  I ask the question somewhat rhetorically as I'm seeing it start to pop up on several listgroups that I'm a part of.  What kinds of conclusions have you reached at this point?

Filed under:

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# John Batte said on January 15, 2008 2:44 PM:

Well I agree that there has been a tendency in the development community to take things a little too far and too literally when it comes to SOA.  I was guilty of it myself for a while.  SOA may be the next logical step in software architecture, but we can't forget the underlying fundamentals established in object-oriented and component-oriented programming tenets.  I've begun to sprinkle some salt on the advice of WCF advocates.  To me, WCF is almost an afterthought.  I want my bottom tiers to be functionally unaware of what they are being consumed by, obviously, so WCF considerations are left out entirely.  At the middle tier, I can design my contracts and configure my endpoints and be done with it quickly, usually in just a few hours.  Wrapping functional components as services and then composing the services into applications may be advantageous, or maybe we’re just composing the functional components into a single service and binding a UI to it.  We get the easy deployment and maintenance scenarios that make WCF a joy without compromising any of the structural integrity of our solutions that we’ve already thought long and hard about.  Within each application there remains that vertical factoring, and although it’s based on functional layers often times it also corresponds with the logical domain model we’re developing in.  Am I making any sense here?  This is our current typical pattern.

Leave a Comment

(required) 
(optional)
(required) 

  
Enter Code Here: Required

About hdierking

I am currently the Editor-in-Chief for MSDN Magazine. I joined Microsoft in 2006 as a product planner with the certification team at Microsoft Learning. Prior to that, I spent my career as a developer and later as an architect. My main technology passions include pretty much anything on language theory, agile development, and service-oriented architecture.
Page view tracker