SOA Patterns > Basics > Service-Orientation Principles > Service-Orientation Design Principles > Service-Orientation and Interoperability
Service-Orientation and Interoperability
One item that may appear to be absent from the preceding list is a principle along the lines of “Services are Interoperable.” The reason this does not exist as a separate principle is because interoperability is fundamental to every one of the principles we just described. Therefore, in relation to service-oriented computing, stating that services must be interoperable is just about as evident as stating that services must exist. Each of the eight principles supports or contributes to interoperability in some manner.
Below are just a few examples:
- Service contracts are standardized to guarantee a baseline measure of interoperability associated with the harmonization of data models.
- Reducing the degree of service coupling fosters interoperability by making individual services less dependent on others and therefore more open for invocation by different service consumers.
- Abstracting details about the service limits all interoperation to the service contract, increasing the long-term consistency of interoperability by allowing underlying service logic to evolve more independently.
- Designing services for reuse implies a high-level of required interoperability between the service and numerous potential service consumers.
- By raising a service’s individual autonomy its behavior becomes more consistently predictable, increasing its reuse potential and thereby its attainable level of interoperability.
- Through an emphasis on stateless design, the availability and scalability of services increase, allowing them to interoperate more frequently and reliably.
- Service Discoverability simply allows services to be more easily located by those who want to potentially interoperate with them.
- Finally, for services to be effectively composable they must be interoperable. The success of fulfilling composability requirements is often tied directly to the extent to which services are standardized and cross-service data exchange is optimized.
A fundamental goal of applying service-orientation is for interoperability to become a natural by-product, ideally to the extent that a level of intrinsic interoperability is established as a common and expected service design characteristic.
Of course, as with any other design characteristic, there are levels of interoperability a service can attain. The ultimate measure is generally determined by the extent to which service-orientation principles have been consistently and successfully realized (and, of course, the maturity level of the underlying technology platform).
Note that increased intrinsic interoperability is one of the key strategic goals associated with service-oriented computing.