Retire Microsoft's Four SOA tenets?
I would say that the tenets' job is done and it's time to retire them. Once you accept the service-oriented paradigm, what further guidance do the tenets provide? Not much, if anyThe SOA tenets originally appeared back in 2004 when Don Box published an article on MSDN called "A Guide to developing and Running Connected Systems with Indigo" (Indigo is what's known today as Windows Communication Foundation or WCF for short). Don Box wrote that WCF is based on SOA principles and that unlike other approaches, specifically object orientation, SOA requires a different set of assumptions:
In Indigo, a service is simply a program that one interacts with via message exchanges. A set of deployed services is a system. Individual services are built to last—the availability and stability of a given service is critical. The aggregate system of services is built to allow for change—the system must adapt to the presence of new services that appear a long time after the original services and clients have been deployed, and these must not break functionality.Don continues to define and explain he following 4 tenets:
Service-oriented development is based on the four fundamental tenets that follow:
- Boundaries are explicit
- Services are autonomous
- Services share schema and contract, not class
- Service compatibility is determined based on policy
Tenet 1: Boundaries are Explicit(Sure, but isn't everything? Ok, so SQL based integration strategies don't fall into this category. How do I build a good boundary? What will version better? What has a lower barrier to mashup/integration?)Hartmut Wilms doesn't really agree with these claims and says that it might be true in perfect SOA world but not in real life. Especially considering that WCF turned out to be a general purpose communications framework with a scope wider than SOA:
Tenet 2: Services are Autonomous(Right. This is a great goal, but provides no guidance or boundaries to achieve it.)
Tenet 3: Services share schema and contract, not class(So do all of my OO programs with interface and classes. What is different from OO design that makes SOA something else?)
Tenet 4: Service compatibility is based upon policy(This is a good start: the types and scope of policy can shape an architecture. The policies are the constraints in a system. There not really defined though, just a statement that they should be there.)
John and Harry, do you really think that every developer has adopted to the message-oriented paradigm and that “service orientation is mainstream”? I’m afraid not. As long as the CLR/JVM/…-First approach is proclaimed by the vendors and the masses listen and follow, the four tenets are far from retirement!Don Box, who wrote the original article also commented on the subject. Don said that the tenets were originally published to explain the principles WCF (or at least the original Indigo vision) was built.
The goal wasn’t to provide any more guidance than “this is what we expect you to do with it” at a pretty abstract level.Regardless, of the original intention, the 4 SOA tenets dominated Microsoft's SOA message for the past 4 years. Do you think there's any merit in these tenets? or is Harry right and its about time we do away with them? Lastly, does anyone outside of the Microsoft development world care either way?
Tom Gilb & Kai Gilb Jan 26, 2015