Return to Home Page

The public review of the manuscript for "SOA Design Patterns" has concluded !
Thank you to all that participated. 234 reviews were received and over 30 new patterns have been contributed,
increasing the size of this book by over 50%. The second draft of the manuscript is currently in development.

About the Public Review
    History
    Podcasts (audio)
    Notification
    Submit Feedback
    Contribute a Proven Pattern
    Contribute a Candidate Pattern
    Acknowledgements
    Press Release

Introduction to SOA Types & Design Patterns
    The Architecture of
Service-Orientation
    Understanding SOA
Design Patterns

SOA Design Patterns
    Basic Service Inventory Design Pattern Language
    Architectural Design Patterns
    Basic Service Design
Pattern Language
    Service Design Patterns
    Common Compound
Design Patterns

Additional Resources
    View Entire TOC
    Symbol Legend
    Master Pattern List
(by category)
    Candidate Design Patterns
    Design Patterns Publications
    Download SOA Principles Poster (PDF)

About the Book



SOA Design Patterns
by Thomas Erl

For more information visit: www.soapatterns.com

Related Publications


Read the article "Introducing SOA Design Patterns" from the
June 2008 SOA World Magazine (High-Res PDF).

PLEASE NOTE

The content on this page is from the first draft of the manuscript for the upcoming book "SOA Design Patterns" by Thomas Erl. This version of the manuscript was authored in September, 2007. Since then, the manuscript has undergone significant content and structural changes as a result of an industry-wide review in which hundreds of SOA practitioners participated in addition to SOA vendors and experts from the design patterns community.

You are welcome to use the information on this page for research purposes, but you should assume that most of it will change in the final release of the "SOA Design Patterns" book.

Note also, that as a result of an industry-wide call for participation from December 2007 to February 2008, over 30 new design patterns have been contributed to this book. As they become finalized and are incorporated by the author, concise descriptions will be published on this site, and full descriptions with examples will be made available in the final, printed book.

Due to the volume of new content and changes, the release of the "SOA Design Patterns" book has been postponed to October, 2008. To learn more about the book, visit www.soapatterns.com. To be notified of updates to this site, use the notification form.

Chapter 8: Service Design Patterns

Home > Chapter 8 Overview > Distributed Capability
Distributed Capability

Distributed Capability

How can a service preserve its functional context while also fulfilling special capability processing requirements?

Problem

A capability that belongs within a service may have unique processing requirements that cannot be accommodated by the default service implementation, but separating capability logic from the service will compromise the integrity of the service context.

Solution

The underlying service logic is distributed, thereby allowing the implementation logic for a capability with unique processing requirements to be physically separated, while continuing to be represented by the same service contract.

Application

The logic is moved and then represented by a service faade, much like a Proxy Capability.

Impacts

The distribution of a capabilitys logic leads to performance overhead associated with remote communication and the need for a separate faade component.

Principles

Standardized Service Contract, Service Autonomy

Architecture

Service

Table 8.7 – Profile summary for the Distributed Capability pattern.

Problem

Each capability within a services functional context represents a body of processing logic. When a service exists in a physically implemented form, its surrounding environment may not be capable of fully supporting all of the processing requirements of all associated capabilities.

For example, a capability may have unique performance, security, availability, or reliability requirements that can only be fulfilled through special architectural extensions or a unique hosting environment. Other times, it is the increased processing demands on a single capability that can tax the overall service implementation to such an extent that it compromises the performance and reliability of other service capabilities.

The logic supporting such a capability can be split off into its own implementation. However, this would result in a separate service that would break the original functional context for which the service was modeled.

Figure 8.21 – The Report operation of the Invoice Web service has high concurrent usage and long response periods for some types of reports. These factors regularly lock up server resources and therefore compromise the performance and reliability of other service operations.

Solution

Capability logic with special processing requirements is distributed to a physically remote environment. A service faade is used to interact with local and distributed service logic on behalf of a single service contract (Figure 8.x).

Figure 8.22 – The logic for the Report operation is relocated to a separate physical environment. The faade component interacts with the reporting logic on behalf of the Invoice service contract.

Application

As explained previously, the application of this pattern consists of the creation of a faade component that acts as the controller of a component composition. The component(s) representing the distributed capability logic interact with the faade logic via remote access.

Performance requirements can be somewhat streamlined by embedding additional processing logic within the faade so that it does more than just relay request and response message values. For example, the faade can contain routines that further parse and extract data from an incoming request message so that only the information absolutely required by the distributed capability logic is transmitted.

An alternative to using service faades is to develop service agents (as per the Service Agent pattern) to intercept request messages for a specific service capability. The agents can carry out the validation that exists within the corresponding contract (or perhaps this validation is deferred to the capability logic itself) and then simply route the request message directly to the capability. These same agents can process the outgoing response messages from the capability as well.

Impacts

This pattern preserves the purity of a services functional context at the cost of imposing performance overhead. The positioning of the contract as the sole access point for two or more implementations of service logic introduces an increased likelihood of remote access whenever the service is invoked.

If the capability logic was separated to guarantee a certain response time during high volume usage, then this may be somewhat undermined by the remote access requirements. On the other hand, overall service autonomy tends to be positively impacted as the autonomy level of the separated capability logic is usually improved as a result of its separation.

Relationships

When structuring a service to support distributed capability processing, the service implementation itself exists like a mini-composition, whereby a faade component takes on the role of both component controller and single access point for the distributed service logic. This is why this pattern has such a strong reliance on the Service Faade pattern and why it is supported by the Decoupled Contract pattern in particular.

The Contract Centralization pattern is also an essential part of the service design because it ensures that the contract will remain the sole access point, regardless of the extent the underlying logic may need to be distributed.

When a distributed capability needs to share access to service-related data, the Service Data Replication pattern can be employed to help facilitate this access without the need to introduce intra-service data sharing issues.

Additionally, this pattern is often the result of applying Service Refactoring, and can therefore be considered a continuation a refactoring effort (especially when applied after the services initial deployment).

Figure 8.23 – The Distributed Capability pattern supports the internal decomposition of service logic and therefore has relationships with both service logic and contract-related patterns.

Case Study Example

Case study content is not available on this Web site.

Prev | Next
The Prentice Hall Service-Oriented Computing Series from Thomas Erl
Home    SOA Books    SOA Magazine    What is SOA?    SOA Principles    SOA Methodology    SOA Glossary Copyright © 2007-2008
SOA Systems Inc.