SOA Patterns > Basics > Service-Orientation Principles > Service-Orientation Design Principles > Service Composability
“Services are effective composition participants,
of the size and complexity of the composition.”
As the sophistication of service-oriented solutions continues to grow, so does the complexity of underlying service composition configurations. The ability to effectively compose services is a critical requirement for achieving some of the most fundamental goals of service-oriented computing.
Complex service compositions place demands on service design that need to be anticipated to avoid massive retro-fitting efforts. Services are expected to be capable of participating as effective composition members, regardless of whether they need to be immediately enlisted in a composition. The principle of Service Composability addresses this requirement by ensuring that a variety of considerations are taken into account.
Figure 1 – The Service Composability design principle helps determine how to carry out a separation of concerns in support of service-orientation. The services that result from the illustrated decomposition of solution logic are assembled to solve Problem A. However, the ultimate, strategic benefit comes with the ability to continually recompose these services to help solve additional problems in the future.
How the application of this design principle helps prepare services for the world of complex compositions is described in SOA Principles of Service Design by Thomas Erl – Chapter 13: Service Composability (Composition Member Design and Complex Compositions).
Related Service-Orientation Computing Goals
Related SOA Patterns
Agnostic Capability, Agnostic Sub-Controller, Brokered Authentication, Capability Composition, Capability Recomposition, Composition Autonomy, Cross-Domain Utility Layer, Data Confidentiality, Data Model Transformation, Data Origin Authentication, Direct Authentication, Domain Inventory, Dual Protocols, Enterprise Inventory, Entity Abstraction, Intermediate Routing, Logic Centralization, Non-Agnostic Context, Process Abstraction, Process Centralization, Protocol Bridging, Reliable Messaging, Service Callback, Service Decomposition, Service Instance Routing, Service Layers, State Messaging, Utility Abstraction