I just read Rocky's piece titled
A SOA Versioning Covenant, which is a great read. The article discusses the differences between
syntactic and
semantic contracts. The latter is what he calls a
covenant. The basic gist is that SO applications should focus more on semantic contracts while providing the ability to process a variety of message types, allowing applications constantly adjust to changing syntactic contracts over time (e.g. versioning).
He's basically arguing for the IDispatch of Web services, where the actual contract is embedded in the implementation and the endpoint simply becomes a message router capable of recognizing and dealing with the variety of incoming messages. He also suggests the possibility of a "super-router" that fills this intermediary role for all service implementations.
You could build this type of infrastructure with Indigo, via the messaging layer and various extensibility points, or even with ASMX/WSE today. But the thing they lack for making this approach easy for developers are the tools for taking care of the syntactic massaging. The RPC-driven API approach promoted by most toolkits as the primary model is why we have to have so many
discussions on contract design, interop, etc.
I believe that BizTalk is the "super-router" Rocky is looking for today. The architecture Rocky describes is exactly what BizTalk is good at. With BizTalk you define ports (endpoints) that can receive a variety of different message types. You can then configure ports with a pipeline and a collection of maps (XSLT) for moving between the different external messages formats and the internal message formats that you want to build the semantic contracts against. Then you create subscriptions with the BizTalk pub/sub engine to route these messages to the appropriate business processes. The business processes define the semantic contracts of the system while ports deal with syntactic massaging. And BizTalk provides some nice developer tools specifically designed for dealing with these tough issues in a highly productive manner.
I think Rocky is right on with his observation and BizTalk is very close to what he's after. As more orgs realize this I think it's likely that many of them will move towards BizTalk for external facing interactions, and the various WS frameworks for building the majority of their internal plumbing.
Posted
Apr 26 2005, 01:52 PM
by
Aaron Skonnard