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 (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.soabooks.com/patterns

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 (alphabetical)

Home > Master Pattern List (alphabetical)
A list of all the design patterns, sorted alphabetically. Click on the pattern title to view the pattern description.



Agnostic Capability (Erl)

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


Agnostic Context (Erl)

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


Agnostic Sub-Controller (Erl)

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


Asynchronous Queuing (Little, Rischbeck, Simon)

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


Atomic Service Transaction (Erl)

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


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?


Canonical Expression (Erl)

How can service contracts be consistently understood and interpreted?


Canonical Protocol (Erl)

How can services be designed to avoid protocol bridging?


Canonical Resources (Erl)

How can unnecessary infrastructure resource disparity be avoided?


Canonical Schema (Erl)

How can services be designed to avoid data model transformation?


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

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


Canonical Versioning (Erl)

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


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?


Compatible Change (Orchard, Riley)

How can a service contract be modified without impacting consumers?


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

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


Composition Autonomy (Erl)

How can compositions be implemented to minimize loss of autonomy?


Concurrent Contracts (Erl)

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


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?


Cross-Domain Utility Layer (Erl)

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


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

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


Data Format Transformation (Little, Rischbeck, Simon)

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


Data Model Transformation (Erl)

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


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?


Decomposed Capability (Erl)

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


Decoupled Validation Logic (Balasubramanian, Carlyle, Pautasso)

How can a service designed to validate an input document avoid rejecting future versions of the media type?


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?


Distributed Capability (Erl)

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


Domain Inventory (Erl)

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


Dual Protocols (Erl)

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


Enterprise Inventory (Erl)

How can services be delivered to maximize recomposition?


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.


Entity Abstraction (Erl)

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


Event-Driven Messaging (Little, Rischbeck, Simon)

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


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?


Federated Endpoint Layer (Erl)

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


File Gateway (Roy)

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


Functional Decomposition (Erl)

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


Intermediate Routing (Little, Rischbeck, Simon)

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


Inventory Endpoint (Erl)

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


Legacy Wrapper (Erl, Roy)

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


Logic Centralization (Erl)

How can the misuse of redundant service logic be avoided?


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?


Messaging Metadata (Erl)

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


Metadata Centralization (Erl)

How can service metadata be centrally published and governed?


Multi-Channel Endpoint (Roy)

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


Non-Agnostic Context (Erl)

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


Official Endpoint (Erl)

Joint application of Logic Centralization and Contract Centralization.


Orchestration (Erl, Loesgen)

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


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?


Policy Centralization (Erl)

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


Process Abstraction (Erl)

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


Process Centralization (Erl)

How can abstracted business process logic be centrally governed?


Protocol Bridging (Little, Rischbeck, Simon)

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


Proxy Capability (Erl)

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


Redundant Implementation (Erl)

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


Reliable Messaging (Little, Rischbeck, Simon)

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


Rules Centralization (Erl)

How can business rules be abstracted and centrally governed?


Schema Centralization (Erl)

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


Service Agent (Erl)

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


Service Broker (Little, Rischbeck, Simon)

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


Service Callback (Karmarkar)

How can a service communicate asynchronously with its consumers?


Service Data Replication (Erl)

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


Service Decomposition (Erl)

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


Service Encapsulation (Erl)

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


Service Facade (Erl)

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


Service Grid (Chappell)

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


Service Instance Routing (Karmarkar)

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


Service Layers (Erl)

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


Service Messaging (Erl)

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


Service Normalization (Erl)

How can a service inventory avoid redundant service logic?


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 Refactoring (Erl)

How can a service be evolved without impacting existing consumers?


State Messaging (Karmarkar)

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


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?


Termination Notification (Orchard, Riley)

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


Three-Layer Inventory (Erl)

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


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?


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

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


Utility Abstraction (Erl)

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


Validation Abstraction (Erl)

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


Version Identification (Orchard, Riley)

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


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-2011
SOA Systems Inc.