Appendix C. SOA Design Patterns Reference

Image

This appendix provides profile tables for the patterns that are documented in SOA Design Patterns and SOA with REST: Principles, Patterns & Constraints for Building Enterprise Solutions with REST, both titles that are part of this book series.

Every profile table contains the following sections:

Requirement – A requirement is a concise, single-sentence statement that presents the fundamental requirement addressed by the pattern in the form of a question. Every pattern description begins with this statement.

Icon – Each pattern description is accompanied by an icon image that acts as a visual identifier. The icons are displayed together with the requirement statements in each pattern profile as well as on the inside book cover.

Problem – The issue causing a problem and the effects of the problem. It is this problem for which the pattern is expected to provide a solution.

Solution – This represents the design solution proposed by the pattern to solve the problem and fulfill the requirement.

Application – This part is dedicated to describing how the pattern can be applied. It can include guidelines, implementation details, and sometimes even a suggested process.

Impacts – This section highlights common consequences, costs, and requirements associated with the application of a pattern and may also provide alternatives that can be considered.

Principles – References to related service-orientation principles.

Architecture – References to related SOA architecture types (as described in SOA Design Patterns).

Note that these tables provide only summarized content from the original publication. All pattern profile tables in this book are also published online at SOAPatterns.org.

Agnostic Capability

By Thomas Erl

Image

How can multi-purpose service logic be made effectively consumable and composable?

Image

Agnostic Context

By Thomas Erl

Image

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

Image

Agnostic Sub-Controller

By Thomas Erl

Image

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

Image

Asynchronous Queuing

By Mark Little, Thomas Rischbeck, Arnaud Simon

Image

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

Image

Atomic Service Transaction

By Thomas Erl

Image

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

Image

Brokered Authentication

By Jason Hogg, Don Smith, Fred Chong, Tom Hollander, Wojtek Kozaczynski, Larry Brader, Nelly Delgado, Dwayne Taylor, Lonnie Wall, Paul Slater, Sajjad Nasir Imran, Pablo Cibraro, Ward Cunningham

Image

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?

Image

Canonical Expression

By Thomas Erl

Image

How can service contracts be consistently understood and interpreted?

Image

Canonical Protocol

By Thomas Erl

Image

How can services be designed to avoid protocol bridging?

Image

Canonical Resources

By Thomas Erl

Image

How can unnecessary infrastructure resource disparity be avoided?

Image

Canonical Schema

By Thomas Erl

Image

How can services be designed to avoid data model transformation?

Image

Canonical Schema Bus

By Clemens Utschig-Utschig, Berthold Maier, Bernd Trops, Hajo Normann, Torsten Winterberg, Thomas Erl

While Enterprise Service Bus provides a range of messaging-centric functions that help establish connectivity between different services and between services and resources they are required to encapsulate, it does not inherently enforce or advocate standardization.

Building upon the platform established by Enterprise Service Bus, this pattern positions entry points into the logic, data, and functions offered via the service bus environment as independently standardized service contracts.

Image

Canonical Schema Bus is comprised of the co-existent application of Enterprise Service Bus, Decoupled Contract, Contract Centralization, and Canonical Schema.

Canonical Versioning

By Thomas Erl

Image

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

Image

Capability Composition

By Thomas Erl

Image

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

Image

Capability Recomposition

By Thomas Erl

Image

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

Image

Compatible Change

By David Orchard, Chris Riley

Image

How can a service contract be modified without impacting consumers?

Image

Compensating Service Transaction

By Clemens Utschig-Utschig, Berthold Maier, Bernd Trops, Hajo Normann, Torsten Winterberg, Brian Loesgen, Mark Little

Image

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

Image

Composition Autonomy

By Thomas Erl

Image

How can compositions be implemented to minimize loss of autonomy?

Image

Concurrent Contracts

By Thomas Erl

Image

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

Image

Content Negotiation

By Raj Balasubramanian, David Booth, Thomas Erl

Image

How can a service capability accommodate service consumers with different data format or representation requirements?

Image

Contract Centralization

By Thomas Erl

Image

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

Image

Contract Denormalization

By Thomas Erl

Image

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

Image

Cross-Domain Utility Layer

By Thomas Erl

Image

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

Image

Data Confidentiality

By Jason Hogg, Don Smith, Fred Chong, Tom Hollander, Wojtek Kozaczynski, Larry Brader, Nelly Delgado, Dwayne Taylor, Lonnie Wall, Paul Slater, Sajjad Nasir Imran, Pablo Cibraro, Ward Cunningham

Image

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

Image

Data Format Transformation

By Mark Little, Thomas Rischbeck, Arnaud Simon

Image

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

Image

Data Model Transformation

By Thomas Erl

Image

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

Image

Data Origin Authentication

By Jason Hogg, Don Smith, Fred Chong, Tom Hollander, Wojtek Kozaczynski, Larry Brader, Nelly Delgado, Dwayne Taylor, Lonnie Wall, Paul Slater, Sajjad Nasir Imran, Pablo Cibraro, Ward Cunningham

Image

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

Image

Decomposed Capability

By Thomas Erl

Image

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

Image

Decoupled Contract

By Thomas Erl

Image

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

Image

Direct Authentication

By Jason Hogg, Don Smith, Fred Chong, Tom Hollander, Wojtek Kozaczynski, Larry Brader, Nelly Delgado, Dwayne Taylor, Lonnie Wall, Paul Slater, Sajjad Nasir Imran, Pablo Cibraro, Ward Cunningham

Image

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

Image

Distributed Capability

By Thomas Erl

Image

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

Image

Domain Inventory

By Thomas Erl

Image

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

Image

Dual Protocols

By Thomas Erl

Image

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

Image

Endpoint Redirection

By Raj Balasubramanian, David Booth, Thomas Erl

Image

How can consumers of a specific service endpoint adapt when the service endpoint changes or is removed?

Image

Enterprise Inventory

By Thomas Erl

Image

How can services be delivered to maximize recomposition?

Image

Enterprise Service Bus

By Thomas Erl, Mark Little, Thomas Rischbeck, Arnaud Simon

Enterprise Service Bus represents an environment designed to foster sophisticated interconnectivity between services. It establishes an intermediate layer of processing that can help overcome common problems associated with reliability, scalability, and communications disparity.

Image

Enterprise Service Bus is fundamentally comprised of the co-existent application of Asynchronous Queuing, Intermediate Routing, and Service Broker, and can be further extended via Reliable Messaging, Policy Centralization, Rules Centralization, and Event-Driven Messaging.

Entity Abstraction

By Thomas Erl

Image

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

Image

Entity Linking

By Raj Balasubramanian, David Booth, Thomas Erl

Image

How can services expose the inherent relationships between business entities in order to support loosely-coupled composition?

Image

Event-Driven Messaging

By Mark Little, Thomas Rischbeck, Arnaud Simon

Image

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

Image

Exception Shielding

By Jason Hogg, Don Smith, Fred Chong, Tom Hollander, Wojtek Kozaczynski, Larry Brader, Nelly Delgado, Dwayne Taylor, Lonnie Wall, Paul Slater, Sajjad Nasir Imran, Pablo Cibraro, Ward Cunningham

Image

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

Image

Federated Endpoint Layer

By Thomas Erl

Federation is an important concept in service-oriented computing. It represents the desired state of the external, consumer-facing perspective of a service inventory, as expressed by the collective contracts of all the inventory’s services.

The more federated and unified this collection of contracts (endpoints) is, the more easily and effectively the services can be repeatedly consumed and leveraged.

Image

The joint application of Official Endpoint, Service Normalization, Canonical Protocol, Canonical Schema, and Canonical Expression results in Federated Endpoint Layer.

File Gateway

By Satadru Roy

Image

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

Image

Functional Decomposition

By Thomas Erl

Image

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

Image

Idempotent Capability

By Cesare Pautasso, Herbjörn Wilhelmsen

Image

How can a service capability safely accept multiple copies of the same message to handle communication failure?

Image

Intermediate Routing

By Mark Little, Thomas Rischbeck, Arnaud Simon

Image

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

Image

Inventory Endpoint

By Thomas Erl

Image

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

Image

Legacy Wrapper

By Thomas Erl, Satadru Roy

Image

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

Image

Lightweight Endpoint

By Raj Balasubramanian, Benjamin Carlyle, Thomas Erl, Cesare Pautasso

Image

How can lightweight units of business logic be positioned as effective reusable enterprise resources?

Image

Logic Centralization

By Thomas Erl

Image

How can the misuse of redundant service logic be avoided?

Image

Message Screening

By Jason Hogg, Don Smith, Fred Chong, Tom Hollander, Wojtek Kozaczynski, Larry Brader, Nelly Delgado, Dwayne Taylor, Lonnie Wall, Paul Slater, Sajjad Nasir Imran, Pablo Cibraro, Ward Cunningham

Image

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

Image

Messaging Metadata

By Thomas Erl

Image

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

Image

Metadata Centralization

By Thomas Erl

Image

How can service metadata be centrally published and governed?

Image

Multi-Channel Endpoint

By Satadru Roy

Image

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

Image

Non-Agnostic Context

By Thomas Erl

Image

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

Image

Official Endpoint

By Thomas Erl

As important as it is to clearly differentiate Logic Centralization from Contract Centralization, it is equally important to understand how these two fundamental patterns can and should be used together.

Applying these two patterns to the same service realizes the Official Endpoint compound pattern. The repeated application of Official Endpoint supports the goal of establishing a federated layer of service endpoints, which is why this compound pattern is also a part of Federated Endpoint Layer.

Image

The joint application of Logic Centralization and Contract Centralization results in Official Endpoint.

Orchestration

By Thomas Erl, Brian Loesgen

An orchestration platform is dedicated to the effective maintenance and execution of parent business process logic. Modern-day orchestration environments are especially expected to support sophisticated and complex service composition logic that can result in long-running runtime activities.

Image

Orchestration is fundamentally comprised of the co-existent application of Process Abstraction, State Repository, Process Centralization, and Compensating Service Transaction, and can be further extended via Atomic Service Transaction, Rules Centralization, and Data Model Transformation.

Partial State Deferral

By Thomas Erl

Image

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

Image

Partial Validation

By David Orchard, Chris Riley

Image

How can unnecessary data validation be avoided?

Image

Policy Centralization

By Thomas Erl

Image

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

Image

Process Abstraction

By Thomas Erl

Image

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

Image

Process Centralization

By Thomas Erl

Image

How can abstracted business process logic be centrally governed?

Image

Protocol Bridging

By Mark Little, Thomas Rischbeck, Arnaud Simon

Image

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

Image

Proxy Capability

By Thomas Erl

Image

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

Image

Redundant Implementation

By Thomas Erl

Image

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

Image

Reliable Messaging

By Mark Little, Thomas Rischbeck, Arnaud Simon

Image

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

Image

Reusable Contract

By Raj Balasubramanian, Benjamin Carlyle, Thomas Erl, Cesare Pautasso

Image

How can service consumers compose services without having to couple themselves to service-specific contracts?

Image
Image

Rules Centralization

By Thomas Erl

Image

How can business rules be abstracted and centrally governed?

Image

Schema Centralization

By Thomas Erl

Image

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

Image

Service Agent

By Thomas Erl

Image

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

Image

Service Broker

By Mark Little, Thomas Rischbeck, Arnaud Simon

Although all of the Service Broker patterns are used only out of necessity, establishing an environment capable of handling the three most common transformation requirements can add a great deal of flexibility to a service-oriented architecture implementation, and also has the added bonus of being able to perform more than one transformation function at the same time.

Image

Service Broker is comprised of the co-existent application of Data Model Transformation, Data Format Transformation, and Protocol Bridging.

Related Patterns in Other Catalogs

Broker (Buschmann, Henney, Schmidt, Meunier, Rohnert, Sommerland, Stal)

Related Service-Oriented Computing Goals

Increased Intrinsic Interoperability, Increased Vendor Diversification Options, Reduced IT Burden

Service Callback

By Anish Karmarkar

Image

How can a service communicate asynchronously with its consumers?

Image

Service Data Replication

By Thomas Erl

Image

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

Image

Service Decomposition

By Thomas Erl

Image

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

Image

Service Encapsulation

By Thomas Erl

Image

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

Image

Service Façade

By Thomas Erl

Image

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

Image

Service Grid

By David Chappell

Image

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

Image

Service Instance Routing

By Anish Karmarkar

Image

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

Image

Service Layers

By Thomas Erl

Image

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

Image

Service Messaging

By Thomas Erl

Image

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

Image

Service Normalization

By Thomas Erl

Image

How can a service inventory avoid redundant service logic?

Image

Service Perimeter Guard

By Jason Hogg, Don Smith, Fred Chong, Tom Hollander, Wojtek Kozaczynski, Larry Brader, Nelly Delgado, Dwayne Taylor, Lonnie Wall, Paul Slater, Sajjad Nasir Imran, Pablo Cibraro, Ward Cunningham

Image

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

Image

Service Refactoring

By Thomas Erl

Image

How can a service be evolved without impacting existing consumers?

Image

State Messaging

By Anish Karmarkar

Image

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

Image

State Repository

By Thomas Erl

Image

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

Image

Stateful Services

By Thomas Erl

Image

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

Image

Termination Notification

By David Orchard, Chris Riley

Image

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

Image

Three-Layer Inventory

By Thomas Erl

This compound pattern is simply comprised of the combined application of the three service layer patterns. Three-Layer Inventory exists because the combined application of these three patterns results in common layers of abstraction that have been proven to complement and support each other by establishing services with flexible variations of agnostic and non-agnostic functional contexts.

Image

The joint application of Utility Abstraction, Entity Abstraction, and Process Abstraction results in Three-Layer Inventory.

Trusted Subsystem

By Jason Hogg, Don Smith, Fred Chong, Tom Hollander, Wojtek Kozaczynski, Larry Brader, Nelly Delgado, Dwayne Taylor, Lonnie Wall, Paul Slater, Sajjad Nasir Imran, Pablo Cibraro, Ward Cunningham

Image

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

Image

UI Mediator

By Clemens Utschig-Utschig, Berthold Maier, Bernd Trops, Hajo Normann, Torsten Winterberg

Image

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

Image

Uniform Contract

By Raj Balasubramanian, Benjamin Carlyle, Cesare Pautasso

Uniform Contract is a compound pattern comprised of the combined application of Reusable Contract, Lightweight Endpoint, and Entity Linking.

Image

Uniform Contract is considered a specialized variation of Reusable Contract that is applied to all services within a given boundary (usually a service inventory). This compound pattern further requires that service functions are broken down to related individual resources, as per Lightweight Endpoint. It further enables links from one resource to another. Links are followed by service consumers to invoke the capabilities of each resource without foreknowledge of the service that exposes them, as per Entity Linking.

Utility Abstraction

By Thomas Erl

Image

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

Image

Validation Abstraction

By Thomas Erl

Image

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

Image

Version Identification

By David Orchard, Chris Riley

Image

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

Image
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset