SOA Patterns > Basics > Service-Orientation Principles > Service-Orientation Design Principles > Service Loose Coupling
Service Loose Coupling
“Service contracts impose low consumer coupling requirements and
are themselves decoupled from their surrounding environment.”
Coupling refers to a connection or relationship between two things. A measure of coupling is comparable to a level of dependency. This principle advocates the creation of a specific type of relationship within and outside of service boundaries, with a constant emphasis on reducing (“loosening”) dependencies between the service contract, its implementation, and its service consumers.
The principle of Service Loose Coupling promotes the independent design and evolution of a service’s logic and implementation while still guaranteeing baseline interoperability with consumers that have come to rely on the service’s capabilities. There are numerous types of coupling involved in the design of a service, each of which can impact the content and granularity of its contract. Achieving the appropriate level of coupling requires that practical considerations be balanced against various service design preferences.
Figure 1 – Coupling represents a core design consideration that spans both intra and inter-service design.
SOA Principles of Service Design by Thomas Erl – Chapter 7: Service Coupling (Intra-Service and Consumer Dependencies) provides an in-depth exploration of this principle and introduces related patterns and concepts.
Related Service-Orientation Computing Goals
Related SOA Patterns
Asynchronous Queuing, Capability Composition, Capability Recomposition, Compatible Change, Compensating Service Transaction, Concurrent Contracts, Contract Centralization, Contract Denormalization, Data Format Transformation, Decoupled Contract, Dual Protocols, Entity Abstraction, Event-Driven Messaging, File Gateway, Intermediate Routing, Inventory Endpoint, Legacy Wrapper, Messaging Metadata, Multi-Channel Endpoint, Partial Validation, Policy Centralization, Process Abstraction, Proxy Capability, Schema Centralization, Service Agent, Service Callback, Service Decomposition, Service Facade, Service Instance Routing, Service Messaging, Service Perimeter Guard, Service Refactoring, Trusted Subsystem, UI Mediator, Utility Abstraction, Validation Abstraction