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.
There are 34 new design patterns currently in development and not yet published on this site. These patterns address the following areas:

•  Security

•  REST

•  Grid Computing

•  Addressing

•  Versioning

•  Compensation

•  Attachments

•  Legacy Encapsulation

•  Several more specialzed patterns...

Below is a list of the current published design patterns, as per the first draft of the manuscript. Click on the pattern title to view the pattern description:



Agnostic Capability

How can multi-purpose service logic be made available in a consumable format?


Agnostic Context

How can multi-purpose service logic be positioned as an effective enterprise resource?


Agnostic Sub-Controller

How can agnostic, cross-entity composition logic be separated, reused, and governed independently?


Asynchronous Queuing

How can a service and its consumers accommodate isolated failures and avoid unnecessarily locking resources?


Business-Driven Context

How can a technology architecture be designed to remain in alignment
with changing business goals and requirements?


Capability Composition

How can a service capability be used to solve a problem that requires logic outside of the service boundary?


Capability Recomposition

How can the same capability be used to help solve multiple problems?


Canonical Data Model

How can services be designed to avoid data model transformation?


Canonical Expression

How can service contracts be consistently understood and interpreted?


Canonical Protocol

How can services be designed to avoid protocol bridging?


Canonical Resources

How can unnecessary service resource design disparity be avoided?


Composition Autonomy

How can compositions be implemented to minimize loss of autonomy?


Concurrent Contracts

How can a service facilitate multi-consumer coupling requirements and abstraction concerns at the same time?


Contract Centralization

How can direct consumer-to-implementation coupling be avoided?


Contract Denormalization

How can an agnostic service contract be designed to facilitate a range
of consumer programs?


Cross-Domain Utility Layer

How can redundant utility logic be avoided across domain service inventories?


Cross-Service Transaction

How can a transaction be propagated across messaging-based services?


Data Format Transformation

How can services interact with programs that communicate with different data formats?


Data Model Transformation

How can services interoperate when using different data models for the same type of data?


Dual Protocols

How can an inventory be standardized and not limited to a single communications protocol?


Decomposed Capability

How can a service be designed to minimize the chances of capability
logic deconstruction?


Decoupled Contract

How can a service express its capabilities independently of its implementation?


Distributed Capability

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


Domain Inventory

How can services be delivered to maximize recomposition when
enterprise-wide standardization is not possible?


Enterprise Inventory

How can services be delivered to maximize recomposition?


Entity Abstraction

How can agnostic business logic be separated, reused, and governed independently?


Event-Driven Messaging

How can service consumers be automatically notified of runtime service events?


Functional Decomposition

How can a large business problem be solved without having to build a standalone body of solution logic?


Intermediate Routing

How can dynamic runtime factors affect the path of a message?


Inventory Endpoint

How can a collection of services be shielded from external access while still offering their capabilities to external consumers?


Legacy Wrapper

How can wrapper services with non-standard contracts be prevented from spreading indirect consumer-to-implementation coupling?


Logic Centralization

How can the misuse of redundant service logic be avoided?


Message-Level Security

How can message content be secured throughout a service activity?


Messaging Metadata

How can services be designed to consume activity state data at runtime?


Metadata Centralization

How can service metadata be centrally published and governed?


Non-Agnostic Context

How can single-purpose service logic be positioned as an effective enterprise resource?


Partial State Deferral

How can services be designed to optimize resource consumption while
still remaining stateful?


Process Abstraction

How can non-agnostic process logic be separated and governed independently?


Policy Centralization

How can policies be consistently processed and enforced across multiple services?


Process Centralization

How can abstracted business process logic be centrally governed?


Protocol Bridging

How can a service exchange data with consumers that use different communication protocols?


Proxy Capability

How can a service subject to decomposition continue to support
consumers affected by the decomposition?


Redundant Implementation

How can the reliability and availability of a service be increased?


Reliable Messaging

How can a service communicate reliably with consumers when implemented in an unreliable environment?


Rules Centralization

How can business rules be abstracted and centrally governed?


Schema Centralization

How can service contracts be designed to avoid redundant data representation?


Security Centralization

How can security-related logic be abstracted and centrally maintained?


Service Agent

How can event-driven logic be separated and governed independently?


Service Data Replication

How can service autonomy be preserved when services require access
to shared data sources?


Service Decomposition

How can the granularity of a service be increased subsequent to its implementation?


Service Encapsulation

How can solution logic be made available as an enterprise resource?


Service Façade

How can a service be designed to support multiple contracts while maintaining logic-to-contract coupling?


Service Messaging

How can services interoperate without forming persistent, tightly coupled connections?


Service Normalization

How can an inventory be designed to avoid redundant service logic?


Service Refactoring

How can a service be evolved without impacting existing consumers?


State Repository

How can service state data be persisted for extended periods without consuming service runtime resources?


Stateful Services

How can service state data be persisted and managed without consuming service runtime resources?


Utility Abstraction

How can common utility logic be separated, reused, and independently governed?


Validation Abstraction

How can service contracts be designed to more easily adapt to
validation logic changes?


Vendor-Agnostic Context

How can a technology architecture be designed to avoid inhibiting
dependencies on proprietary vendor platforms?


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.