Before we define SOA (Service Oriented Architecture), let us first discuss what SOA is about.
SOA is about loose coupling, SOA is about interoperability, SOA is about flexibility, SOA is about extensibility, SOA is about agility,SOA can be about ad-hocism or rather the appearance of ad-hocism! (We’re talking mash-ups here!)
SOA is about abstraction,SOA is about platform independence,SOA is about simplicity.
SOA is all about reuse, granularity, modularity, composability, componentization and interoperability.
SOA is about standards.
SOA is about encapsulation.
SOA is about contracts.
SOA is about autonomy.
SOA is about optimization.
SOA is about relevance.
SOA is about discoverability.
SOA is about statelessness
SOA is about enterprise application integration or being integrable,
SOA is about strategy,
SOA is about planning,
SOA is about best practices
and SOA is about governance.
So what is SOA?
A service-oriented architecture is essentially a collection of services. These services communicate with each other. The communication can involve either simple data passing or it could involve two or more services coordinating some activity. Some means of connecting services to each other is needed.
Is SOA about Web Services only?
The answer is an emphatic NO. Service Oriented Architecture existed long before web services were visualized and/or conceived. It is the advent of web services though that has brought Service Oriented Architecture to the fore , into mainstream consciousness. Prior service oriented architectures included the DCOM and CORBA component models of programming. And RPC prior to that. In fact, the Microsoft WCF style of programming is quite agnostic as to how you prefer to implement the SOA model; it is aspect oriented so that the developer concentrates on building the functionality and then specify the transport layer. But no, you wouldn’t/shouldn’t be penalized if you answered YES to the above question. Most or almost all SOA systems being implemented , designed and on which IT dollars are being spent deal with web services , so there!