February 25, 2004
@ 02:05 PM

Of course, there is really no unanimously agreed-upon definition of what’s absolutely fundamental to SOA – or even what SOA really is. But I think there are four things that most people agree on and I think I there’s even a fifth:

To me, the first four core principles are:

·         Explicitness of boundaries [read: there’s stuff that is explicitly public and the rest isn’t],
·         Data exchange governed by an implementation independent message contract,
·         Compatibility of behaviors through negotiation of capabilities based on policies and
·         Service autonomy.

Number five is:

·         Locating and binding to a remote service is always indirect [read: the most important design pattern is the factory pattern]

I hear that there's quite a bit of amusement among the more senior Microsoft folks (and people like me) that there’s a lot of "reinventing COM" going on. It’s not that there’s a push into that direction. It just seems to happen. All of a sudden folks are playing with (differently named) variants of monikers, class factories and all those things. Say what you will, the IClassFactory indirection is great thing to have – one place to find a service, one place to configure a proxy, one place to sneak in a mapper/wrapper that makes the actual service you talk to look like another service.

(Note that I don’t mention SOAP here. Must a service use SOAP? How about services that fall back to something without angle brackets because their respective policies indicate that they can?)

Categories: Architecture

Wednesday, February 25, 2004 11:31:52 PM UTC
http://blog.thetechnologist.net/Trackback,guid,0dc52f8a-da9f-4eb1-ba91-b7b28248fb8d.aspx

And yes, SOAP is not necessary, but doesn't have anything to do with angle brackets. Could SOAP be defined itself without brackets? Yes, as long as you talk about XML infoset instead of talking about xml alone. :)
Thursday, February 26, 2004 12:04:19 AM UTC
Thanks, Sebastien. That's understood. I just wanted to make it very clear that while you may have a SOAP like (and compatible) representation inside your infrastructure, the serialization may be vastly different from what people commonly perceive as SOAP.
Clemens Vasters
Thursday, February 26, 2004 7:04:31 AM UTC
It seems like "reinventing COM" because to a large degree it is. The central theme throughout all of this is "encapsulation", which has been a design goal since the invention of the "function" (if not before).

I believe that we will start to see many the same issues with web services that we saw with COM. Specifically, the actual "implementation independance" will be limited to a handful of standard interfaces, just like COM, and even those will be supported in slightly incompatible ways across different implementations. If you look at all of the old COM literature, "implementation independance" was a major goal.

Building a tight interface that is completely spec'ed out and whose clients do not depend on additional implementation details is very difficult. It takes a lot of skill and effort for the interface designer, the service implementer AND the client implementer. If any of those fail, even slightly, implementation dependance creeps in. Look at operating system API's, J2EE middleware platforms, compiling C to different platform architectures, or any of a variety of analogous efforts. Good encapsulation is HARD.

I'm not bashing XML or SOA or Web Services. They definately have some very good points and provide the ability to shed some bad ideas. However, I don't think they will take care of the encapsulation/interface issue, and be able to provide a new level of implementation independance.
Tito Villalobos
Comments are closed.