Master SOA Design Pattern Catalog
|
|


"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?
|
|


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 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?
|
|


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?
|
|


Concurrent Contracts (Erl)

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


Contract Denormalization (Erl)

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


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 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 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?
|
|


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?
|
|


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?
|
|


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?
|
|


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?
|
|


Reliable Messaging (Little, Rischbeck, Simon)

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


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 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 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?
|
|


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?
|
|

|
|
|