Sunday, November 07, 2004

Service Oriented Architecture (SOA) and other stuff....

One of the hottest topics lately seems to be Service Oriented Architecture and how to implement it. But it is also a major source of confusion and I think that for most developers, SOA is still a big mystery. The main problem seems to be that we have to translate these high level concepts to low-level code, because in the end we just like to write code. However I still think that SOA is an important concept that every developers needs a basic understanding about, so the next couple of weeks I'm going to try to write some posting about SOA, providing some summaries of presentations that I saw and links to interesting sites and blogs.

Lets start with the basics, what is SOA? At PDC 2003 Pat Helland gave a presentation about SOA. The key message was the following:

  • A service-oriented architecture is one where an application is cut into pieces called services

  • These services are invoked by messages, these messages are containers for information which is transmitted from one service to another. Since services only communicate with messages we create explicit boundaries for all our application building blocks.

  • Services allow for loosely coupled relationships, the only thing that needs to be defined is the contract for the message. Integration is based on message formats and exchange patterns, not on classes and objects.

  • Services are policy based and autonomous

  • Definitely check out Pats blog if you want to read more interesting stuff...



    A couple of months later I saw a presentation from Clemens Vasters, he mainly talked about the same concepts but things got a little clearer. There are only 2 types of services, message producers and message consumers. The messages flow through "pipelines", a pipeline is a sequence of services and each service transforms the message. He also gave some concrete tips :

  • The message should be XML based and not binary

  • Use ASP.Net webservices and extend these through WSE to add routing, security,...

  • Do things you have already been doing : isolate out business and data tiers, use serviced components, use stored procedures for data...

  • Think assynchronous


  • Now if you want to know more about it, check out:
  • Architect exchange

  • MSDN .Net architecture center

  • Rich Turner about "When to use ASMX, ES or Remoting"some nice guidelines about how to actually implement all this stuff.

  • Selling Service Orientation and Indigo

  • MSDN TV: Service Orientation and Today's Technologies

  • No comments: