SOADesignPatternsPoster A2
SOADesignPatternsPoster A2
com)
This poster displays the catalog of patterns from the book SOA Design Patterns (by Thomas Erl, Prentice Hall, Copyright 2008). For more information, visit www.soapatterns.org and www.soapatterns.com.
Foundational Inventory Inventory Implementation Service Governance Service Implementation Service Interaction Security
Enterprise Inventory (Erl) Service Layers (Erl) Dual Protocols (Erl) Stateful Services (Erl) Service Facade (Erl)
How can services be delivered to maximize How can the services in an How can service state data be persisted and managed
Data Confidentiality (Hogg, Smith,
recomposition? inventory be organized based on
How can a service inventory
without consuming service runtime resources?
Compatible Change (Orchard, Riley) How can a service accommodate changes to its Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall,
overcome the limitations of its contract or implementation while allowing the Slater, Imran, Cibraro, Cunningham)
How can a service contract be modified
functional commonality? canonical protocol while still
Domain Inventory (Erl) remaining standardized?
Service Grid (Chappell) without impacting consumers? core service logic to evolve independently? How can data within a message be protected so that
How can services be delivered to maximize Canonical Protocol How can deferred service state data be scaled and Version Identification (Orchard, Redundant it is not disclosed to unintended recipients while in
recomposition when enterprise-wide (Erl) Canonical Resources kept fault-tolerant? transit?
standardization is not possible? How can services be designed to (Erl)
Riely)
Implementation (Erl) Data Origin Authentication
avoid protocol bridging? How can unnecessary infrastructure Inventory Endpoint (Erl) How can consumers be made aware of service
How can the reliability and availability of a
Service Normalization (Erl) resource disparity be avoided? How can a service inventory be shielded from contract version information?
service be increased?
(Hogg, Smith, Chong, Hollander, Kozaczynski, Brader,
How can a service inventory avoid Canonical Schema external access while still offering service Termination Notification
Delgado, Taylor, Wall, Slater, Imran, Cibraro, Cunningham)
Service Data Replication (Erl) How can a service verify that a message originates
redundant service logic? (Erl) State Repository (Erl) capabilities to external consumers? (Orchard, Riley) from a known sender and that the message has not
How can services be designed to How can service state data be How can service autonomy be preserved when
Logic Centralization (Erl) avoid data model transformation? persisted for extended periods Cross-Domain Utility Layer (Erl) How can the scheduled expiry of a service
services require access to shared data sources?
been tampered with in transit?
contract be communicated to consumer
How can the misuse of redundant service without consuming service runtime How can redundant utility logic be avoided across
programs? Partial State Deferral (Erl) Direct Authentication (Hogg, Smith,
logic be avoided? resources? domain service inventories? Chong, Hollander, Kozaczynski, Brader, Delgado, Taylor, Wall,
Service Refactoring (Erl) How can services be designed to optimize Slater, Imran, Cibraro, Cunningham)
How can a service be evolved without resource consumption while still remaining How can a service verify the credentials provided
impacting existing consumers? stateful? by a consumer?
Service Decomposition (Erl) Partial Validation (Orchard, Riley) Brokered Authentication (Hogg,
Inventory Centralization Logical Inventory Layer Inventory Governance How can the granularity of a service be How can unnecessary data validation be Smith, Chong, Hollander, Kozaczynski, Brader, Delgado,
Taylor, Wall, Slater, Imran, Cibraro, Cunningham)
increased subsequent to its implementation? avoided?
How can a service efficiently verify consumer
Process Centralization (Erl) Utility Abstraction (Erl) Canonical Expression (Erl) Proxy Capability (Erl) UI Mediator (Utschig, Maier, Trops, credentials if the consumer and service do not trust
How can abstracted business process logic be centrally governed? Normann, Winterberg) each other or if the consumer requires access to
How can common non-business centric logic be How can service contracts be consistently How can a service subject to decomposition
How can a service-oriented solution provide a multiple services?
Schema Centralization (Erl) separated, reused, and independently governed?
understood and interpreted? continue to support consumers affected by the
consistent, interactive user experience?
decomposition?
How can service contracts be designed to avoid redundant data
Entity Abstraction (Erl) Metadata Centralization
representation?
How can agnostic business logic be separated,
(Erl) Decomposed Capability (Erl)
How can service metadata be centrally
Policy Centralization (Erl) reused, and governed independently? published and governed?
How can a service be designed to minimize the
How can policies be normalized and consistently enforced across chances of capability logic deconstruction?
multiple services? Process Abstraction (Erl) Canonical Versioning (Erl) Distributed Capability (Erl) Service Contract
How can non-agnostic process logic be How can service contracts within the
Foundational Service
Rules Centralization (Erl) How can a service preserve its functional
How can business rules be abstracted and centrally governed?
separated and governed independently? same service inventory be versioned with context while also fulfilling special capability
Functional Decomposition (Erl) Decoupled Contract (Erl)
minimal impact? processing requirements? How can a service express its capabilities
How can a large business problem be solved independently of its implementation?
without having to build a standalone body of
solution logic? Contract Centralization (Erl)
How can direct consumer-to-implementation
Service Encapsulation (Erl) coupling be avoided?
Legacy Encapsulation Capability Composition Transformation How can solution logic be made available as a
resource of the enterprise? Contract Denormalization (Erl)
Legacy Wrapper (Erl, Roy) Data Model Transformation (Erl) Agnostic Context (Erl) How can a service contract facilitate consumer
programs with differing data exchange
How can wrapper services with non-standard Capability Composition (Erl) How can services interoperate when using different data How can multipurpose service logic be requirements?
How can a service capability solve a models for the same type of data? positioned as an effective enterprise resource?
contracts be prevented from spreading indirect
consumer-to-implementation coupling? problem that requires logic outside of the Data Format Transformation (Little, Non-Agnostic Context (Erl) Concurrent Contracts (Erl)
Multi-Channel Endpoint (Roy) service boundary? Rischbeck, Simon) Service Security How can single-purpose service logic be
How can a service facilitate multi-consumer
How can services interact with programs that communicate coupling requirements and abstraction concerns
How can legacy logic fragmented and duplicated for Capability Recomposition with different data formats?
positioned as an effective enterprise resource? at the same time?
different delivery channels be centrally (Erl) Exception Shielding Agnostic Capability (Erl)
consolidated? How can the same capability be used to help Protocol Bridging (Little, Rischbeck, Simon) (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, Validation Abstraction (Erl)
solve multiple problems? Delgado, Taylor, Wall, Slater, Imran, Cibraro, How can multipurpose service logic be made How can service contracts be designed to more
How can a service exchange data with consumers that use
File Gateway (Roy) different communication protocols?
Cunningham) effectively consumable and composable? easily adapt to validation logic changes?
How can service logic interact with legacy systems How can a service prevent the disclosure of
that can only share information by exchanging files? information about its internal implementation
when an exception occurs?
Message Screening
(Hogg, Smith, Chong, Hollander, Kozaczynski, Brader,
Delgado, Taylor, Wall, Slater, Imran, Cibraro,
Orchestration (Erl, Loesgen) Trusted Subsystem Service Messaging (Erl) Service Callback (Karmarkar)
Canonical Schema Bus Agnostic Sub-Controller (Erl) (Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, How can services interoperate without forming How can a service communicate asynchronously with its
Co-existent application of Process Abstraction, State (Utschig, Maier, Trops, Normann, Winterberg, Erl) How can agnostic, cross-entity composition logic be separated, reused, consumers?
Delgado, Taylor, Wall, Slater, Imran, Cibraro, persistent, tightly coupled connections?
Repository, Process Centralization, and Co-existent application of Enterprise Service and governed independently? Cunningham)
Compensating Service Transaction, can can be Bus, Decoupled Contract, Contract How can a consumer be prevented from Messaging Metadata (Erl) Service Instance Routing (Karmarkar)
further extended with Atomic Service Transaction, Centralization, and Canonical Schema. Composition Autonomy (Erl) circumventing a service and directly accessing How can services be designed to process activity- How can consumers contact and interact with service
Rules Centralization, and Data Model How can compositions be implemented to minimize loss of autonomy? specific data at runtime? instances without the need for proprietary processing logic?
Official Endpoint (Erl) its resources?
Transformation.
Joint application of Logic Centralization and Atomic Service Transaction (Erl) Service Perimeter Guard Service Agent (Erl) Asynchronous Queuing (Little, Rischbeck,
Enterprise Service Bus (Erl, Little, Contract Centralization. How can a transaction with rollback capability be propagated across
(Hogg, Smith, Chong, Hollander, Kozaczynski, Brader, How can event-driven logic be separated and Simon)
Rischbeck, Simon) messaging-based services? Delgado, Taylor, Wall, Slater, Imran, Cibraro, governed independently? How can a service and its consumers accommodate
Co-existent application of Asynchronous Queuing, Federated Endpoint Layer isolated failures and avoid unnecessarily locking
Intermediate Routing, and the Service Broker (Erl) Compensating Service Transaction (Utschig, Cunningham)
How can services that run in a private network Intermediate Routing (Little, resources?
Maier, Trops, Normann, Winterberg, Loesgen, Little)
compound pattern and can be further extended via Joint application of Official Endpoint, be made available to external consumers Rischbeck, Simon)
Reliable Messaging, Policy Centralization, Rules Service Normalization, Canonical Protocol,
How can composition runtime exceptions be consistently
without exposing internal resources?
How can dynamic runtime factors affect the path Reliable Messaging (Little, Rischbeck, Simon)
accommodated without requiring services to lock resources? of a message? How can services communicate reliably when implemented
Centralization, and Event-Driven Messaging. Canonical Schema, and Canonical
Expression. in an unreliable environment?
Service Broker (Little, Rischbeck, Simon) State Messaging (Karmarkar)
Co-existent application of Data Model Three-Layer Inventory (Erl) How can a service remain stateless while Event-Driven Messaging (Little, Rischbeck,
participating in stateful interactions? Simon)
Transformation, Data Format Transformation, and Joint application of Utility Abstraction,
Entity Abstraction, and Process Abstraction. How can service consumers be automatically notified of
Protocol Bridging.. runtime service events?