Recently I have started reading a self paced training kit titled – “Microsoft .NET Framework 3.5 – Windows Communication Foundation” authored by Bruce Johnson, Peter Madziak, Sara Morgan. This is a Microsoft Press publications.
I had purchased this book last year but never did I look into it. Lately I have been flipping through the pages to get some more insights on WCF and service oriented development in .NET.
What struck me was the chapter 1 opening statements in the book. I quote “This book intentionally avoids the term SOA – Service Oriented Architecture. The term SOA – Service Oriented Applications will be used instead to convey the very practical scenario wherein applications are composed of collection of services that communicate only by exchanging messages”.
Now having spent close to decade in the technology this was like a fresh thought that just struck me. Just ponder over these words – Service Oriented Architecture and Service Oriented Applications. Till this moment I had never ever thought of a second dimension to the acronym SOA. Every time SOA is referred it would always mean architecture. But applications – sounds interesting angle.
I looked up the dictionary of the net – wikipedia – for the meaning of Service Oriented Architecture. Here is what wikipedia defines SO Architecture as -
“Service-oriented architecture (SOA) is a flexible set of design principles used during the phases of systems development and integration in computing. A system based on a SOA will package functionality as a suite of interoperable services that can be used within multiple separate systems from several business domains.”
Another interesting definition for SO Architecture is from OASIS group. Here is what OASIS defines SOA as –
“A paradigm for organizing and utilizing distributed capabilities that may be under the control of different ownership domains. It provides a uniform means to offer, discover, interact with and use capabilities to produce desired effects consistent with measurable preconditions and expectations.”
Here is a pictorial representation of the SOA.
Now lets contrast this to another dimension i.e. SOA being Service Oriented Applications. What the authors are trying to say is – If you have an application which contains a collection of services and that these services communicate to each other via messages – it can be termed as Service Oriented Applications. So SOA may be using SOA in their design i.e. Service Oriented Application will in turn be based on Service Oriented Architecture. Just give this a thought. In a lay mans terms – a Service Oriented Application is nothing but some services exist. These services can receive messages to trigger business logic. They might return response messages indicating their action.
I completely agree with the authors in giving a second dimension to the term SOA. I just couldn’t resist writing this one. So if you have made it this far that means you have read this post and I would expect you to drop a comment . Let me know what you think about this SOA v/s SOA.
As always, Happy Coding. Code with passion, Decode with patience.