Wednesday, December 01, 2004

SOA Revisited

The past couple of weeks, I looked at some notes I took after watching some presentations about architecture. SOA - (Service Oriented Architecture) definitely seems to be the hype word at the moment. Well not so long ago, the hype word was web services. But I think if we take a look at Gartners hype cycle for new technology, web services seem to have hit rock bottom, or as Gartner puts it "Trough of disillusionment".

But the hype about SOA will revive the interest in webservices because web services are one of the enablers of SOA. Web services are currently the first universally accepted interface, every software vendor or product has SOAP support. Web services allow us to define a software architecture in which the services are the core.

A while ago, I blogged about SOA, but lets recap, what is SOA? Actually it is nothing more then a design philosophy, a philisophy which is governed by 4 tenets:
1. Services have explicit boundaries : only interaction possible at the service boundary - e.g. Asmx webservices
2. Services are autonomous : no assumptions about how the service is implemented, loosely coupling
3. Services share schema & contract not objects : "pass by value" - the WSDL contains both the service and the data contract
4. Services are policy based : policies describe the rules for interaction, transactions, security, wire protocol

These tenets have also some technical consequences however, such as:
  • Try to avoid remoting & enterprises services at service boundaries, these are tightly coupled, component based architectures. Use .Net remoting only in very specific scenarios - for iIn process cross application domain calls and
    when you have to implement a custom wire format (For more elaborate discussions, take a look at Clemens Vasters blog). One fo the reasons you should avoid Remoting is because it uses SOAP encoding differently from web services

  • Use asmx webservices and WSE for basic policy implementations

  • Use a WDSL first approach, start from your xml schemas and then go to the class implementations
  • No comments: