Posted by Vivek on August 23, 2008
If you ask 5 different people definition of the buzzword “SOA”, they all will come with a different answers. SOA is not something that can be defined in two or three lines.
“SOA is the architectural style that supports loosely coupled services to enable business flexibility in an interoperable, technology-agnostic manner. SOA consists of a composite set of business-aligned services that support a flexible and dynamically re-configurable end-to-end business processes realization using interface-based service descriptions.”
To be more precise, any SOA must exhibit the following features:
Loose coupling – Services maintain a relationship that minimizes dependencies and only requires that they retain an awareness of each other.
Service contract – Services adhere to a communications agreement, as defined collectively by one or more service descriptions and related documents.
Autonomy – Services have control over the logic they encapsulate.
Abstraction – Beyond what is described in the service contract, services hide logic from the outside world.
Reusability – Logic is divided into services with the intention of promoting reuse.
Composability – Collections of services can be coordinated and assembled to form composite services.
Statelessness – Services minimize retaining information specific to an activity.
Discoverability – Services are designed to be outwardly descriptive so that they can be found and assessed via available discovery mechanisms.
This is important when the following objectives are to be achieved: