New Years Resolution - Not Quite World Peace, But...
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?
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.