Return to Home Page
Overview
    History
    Acknowledgements
    Podcasts
    Notification Form
    Feedback Form
    Press Release #1
    Press Release #2
    Press Release #3

Master SOA Design
Pattern Catalog
    Master Pattern List (alphabetical)
    Master Pattern List (by category)
    Master Pattern List with
Page Numbers (PDF)
    Master Pattern List (Text)
    Pattern Notation
    Pattern Profiles
    Symbol Legend
    Pattern Contribution Form

SOA Candidate Patterns
    SOA Patterns Review Committee
    Candidate Patterns Overview
    Candidate Patterns List
    Candidate Pattern Contribution Form
    Candidate Pattern
Feedback Form
    SOA Pattern Template

Design Pattern Basics
    What's a Design Pattern?
    What's a Design Pattern Language?
    What's a Compound Pattern?

Supplemental
    SOA Patterns and Application Technologies
    SOA Design Patterns Historical Influences
    SOA Design Patterns and Design Principles
    SOA Design Patterns and Design Granularity
    Legal

Resources
    Design Patterns Publications
    Reference Posters
    SOAPrinciples.com
    WhatIsSOA.com
    SOA Visio Stencil

About the Book



SOA Design Patterns
by Thomas Erl

For more information visit: www.soapatterns.com

Related Publications


"Introducing SOA Design Patterns", SOA World Magazine (PDF)



"The Case for Single-Purpose Services: Understanding the Non-Agnostic Context and a Strategy for Implementation", SOA Magazine (HTML)



"REST-Inspired SOA Design Patterns", SOA Magazine (HTML)



"Service-Orientation and Object-Orientation Part I: A Comparison of Goals and Concepts", SOA Magazine (HTML)



"Service-Orientation and Object-Orientation Part II: A Comparison of Design Principles", SOA Magazine (HTML)



"Service Facade", InformIT (HTML)



"Non-Agnostic Context", InformIT (HTML)



"Domain Inventory", InformIT (HTML)



"Service Normalization", InformIT (HTML)



"Service Decomposition", InformIT (HTML)



"Canonical Schema", InformIT (HTML)



"Policy Centralization", InformIT (HTML)





Master Pattern List (by category)

Home > Master Pattern List (by category)
A list of all the design patterns, sorted by category and presented in the same sequence as in their corresponding chapters. Click on the pattern title to view the pattern description.

Foundational Inventory Patterns


Enterprise Inventory (Erl)

How can services be delivered to maximize recomposition?


Domain Inventory (Erl)

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


Service Normalization (Erl)

How can a service inventory avoid redundant service logic?


Logic Centralization (Erl)

How can the misuse of redundant service logic be avoided?


Service Layers (Erl)

How can the services in an inventory be organized based on functional commonality?


Canonical Protocol (Erl)

How can services be designed to avoid protocol bridging?


Canonical Schema (Erl)

How can services be designed to avoid data model transformation?




Logical Inventory Layer Patterns


Utility Abstraction (Erl)

How can common non-business centric logic be separated, reused, and independently governed?


Entity Abstraction (Erl)

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


Process Abstraction (Erl)

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




Inventory Centralization Patterns


Process Centralization (Erl)

How can abstracted business process logic be centrally governed?


Schema Centralization (Erl)

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


Policy Centralization (Erl)

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


Rules Centralization (Erl)

How can business rules be abstracted and centrally governed?




Inventory Implementation Patterns


Dual Protocols (Erl)

How can a service inventory overcome the limitations of its
canonical protocol while still remaining standardized?


Canonical Resources (Erl)

How can unnecessary infrastructure resource disparity be avoided?


State Repository (Erl)

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


Stateful Services (Erl)

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


Service Grid (Chappell)

How can deferred service state data be scaled and kept fault-tolerant?


Inventory Endpoint (Erl)

How can a service inventory be shielded from external access while
still offering service capabilities to external consumers?


Cross-Domain Utility Layer (Erl)

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




Inventory Governance Patterns


Canonical Expression (Erl)

How can service contracts be consistently understood and interpreted?


Metadata Centralization (Erl)

How can service metadata be centrally published and governed?


Canonical Versioning (Erl)

How can service contracts within the same service inventory be
versioned with minimal impact?




Foundational Service Patterns


Functional Decomposition (Erl)

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


Service Encapsulation (Erl)

How can solution logic be made available as a resource of the enterprise?


Agnostic Context (Erl)

How can multipurpose service logic be positioned as an effective enterprise resource?


Non-Agnostic Context (Erl)

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


Agnostic Capability (Erl)

How can multipurpose service logic be made effectively consumable and composable?




Service Implementation Patterns


Service Facade (Erl)

How can a service accommodate changes to its contract or
implementation while allowing the core service
logic to evolve independently?


Redundant Implementation (Erl)

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


Service Data Replication (Erl)

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


Partial State Deferral (Erl)

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


Partial Validation (Orchard, Riley)

How can unnecessary data validation be avoided?


UI Mediator (Utschig, Maier, Trops, Normann, Winterberg)

How can a service-oriented solution provide a consistent, interactive
user experience?




Service Security Patterns


Exception Shielding (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)

How can a service prevent the disclosure of information about
its internal implementation when an exception occurs?


Message Screening (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)

How can a service be protected from malformed or malicious input?


Trusted Subsystem (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)

How can a consumer be prevented from circumventing a service and directly accessing its resources?


Service Perimeter Guard (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)

How can services that run in a private network be made available
to external consumers without exposing internal resources?




Service Contract Design Patterns


Decoupled Contract (Erl)

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


Contract Centralization (Erl)

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


Contract Denormalization (Erl)

How can a service contract facilitate consumer programs with
differing data exchange requirements?


Concurrent Contracts (Erl)

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


Validation Abstraction (Erl)

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




Legacy Encapsulation Patterns


Legacy Wrapper (Erl, Roy)

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


Multi-Channel Endpoint (Roy)

How can legacy logic fragmented and duplicated for different delivery
channels be centrally consolidated?


File Gateway (Roy)

How can service logic interact with legacy systems that can only
share information by exchanging files?




Service Governance Patterns


Compatible Change (Orchard, Riley)

How can a service contract be modified without impacting consumers?


Version Identification (Orchard, Riely)

How can consumers be made aware of service contract version
information?


Termination Notification (Orchard, Riley)

How can the scheduled expiry of a service contract be communicated
to consumer programs?


Service Refactoring (Erl)

How can a service be evolved without impacting existing consumers?


Service Decomposition (Erl)

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


Proxy Capability (Erl)

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


Decomposed Capability (Erl)

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


Distributed Capability (Erl)

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




Capability Composition Patterns


Capability Composition (Erl)

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


Capability Recomposition (Erl)

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




Service Messaging Patterns


Service Messaging (Erl)

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


Messaging Metadata (Erl)

How can services be designed to process activity-specific data at
runtime?


Service Agent (Erl)

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


Intermediate Routing (Little, Rischbeck, Simon)

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


State Messaging (Karmarkar)

How can a service remain stateless while participating in stateful interactions?


Service Callback (Karmarkar)

How can a service communicate asynchronously with its consumers?


Service Instance Routing (Karmarkar)

How can consumers contact and interact with service instances
without the need for proprietary processing logic?


Asynchronous Queuing (Little, Rischbeck, Simon)

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


Reliable Messaging (Little, Rischbeck, Simon)

How can services communicate reliably when implemented in
an unreliable environment?


Event-Driven Messaging (Little, Rischbeck, Simon)

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




Composition Implementation Patterns


Agnostic Sub-Controller (Erl)

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


Composition Autonomy (Erl)

How can compositions be implemented to minimize loss of autonomy?


Atomic Service Transaction (Erl)

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


Compensating Service Transaction (Utschig, Maier, Trops, Normann, Winterberg, Loesgen, Little)

How can composition runtime exceptions be consistently
accommodated without requiring services to lock resources?




Service Interaction Security Patterns


Data Confidentiality (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)

How can data within a message be protected so that it is not
disclosed to unintended recipients while in transit?


Data Origin Authentication (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)

How can a service verify that a message originates from a known
sender and that the message has not been tampered with in transit?


Direct Authentication (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)

How can a service verify the credentials provided by a consumer?


Brokered Authentication (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)

How can a service efficiently verify consumer credentials if
the consumer and service do not trust each other or
if the consumer requires access to multiple services?




Transformation Patterns


Data Model Transformation (Erl)

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


Data Format Transformation (Little, Rischbeck, Simon)

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


Protocol Bridging (Little, Rischbeck, Simon)

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




Common Compound Design Patterns


Orchestration (Erl, Loesgen)

Co-existent application of Process Abstraction, State Repository, Process Centralization, and Compensating Service Transaction, can can be further extended with Atomic Service Transaction, Rules Centralization, and Data Model Transformation.


Enterprise Service Bus (Erl, Little, Rischbeck, Simon)

Co-existent application of Asynchronous Queuing, Intermediate Routing, and the Service Broker compound pattern and can be further extended via Reliable Messaging, Policy Centralization, Rules Centralization, and Event-Driven Messaging.


Service Broker (Little, Rischbeck, Simon)

Co-existent application of Data Model Transformation, Data Format Transformation, and Protocol Bridging.


Canonical Schema Bus (Utschig, Maier, Trops, Normann, Winterberg, Erl)

Co-existent application of Enterprise Service Bus, Decoupled Contract, Contract Centralization, and Canonical Schema.


Official Endpoint (Erl)

Joint application of Logic Centralization and Contract Centralization.


Federated Endpoint Layer (Erl)

Joint application of Official Endpoint, Service Normalization, Canonical Protocol, Canonical Schema, and Canonical Expression.


Three-Layer Inventory (Erl)

Joint application of Utility Abstraction, Entity Abstraction, and Process Abstraction.


The Prentice Hall Service-Oriented Computing Series from Thomas Erl
Home    SOA Books    SOA Magazine    What is SOA?    SOA Principles    SOASchool.com    SOA Glossary Copyright © 2007-2010
SOA Systems Inc.