SOA Design Patterns

Chapter 1: Introduction

1.1 Objectives of this Book
1.2 Who this Book is For
1.3 What this Book Does Not Cover
1.4 Prerequisite Reading
1.5 How this Book is Organized
1.6 Symbols, Figures, and Style Conventions
1.7 Additional Resources

Chapter 2: Case Study Background

2.1 Case #1 Background: Cutit Saws Ltd.
2.2 Case #2 Background: Alleywood Lumber Company
2.3 Case #3 Background: Forestry Regulatory Commission (FRC)

Part I: Fundamentals
Chapter 3: Basic Terms and Concepts

3.1 Architecture Fundamentals
3.2 Service-Oriented Computing Fundamentals
3.3 Service Implementation Mediums

Chapter 4: The Architecture of Service-Orientation

4.1 The Method of Service-Orientation
4.2 The Four Characteristics of SOA
4.3 The Four Common Types of SOA
4.4 The End-Result of Service-Orientation

Chapter 5: Understanding SOA Design Patterns

5.1 Fundamental Design Terminology
5.2 Historical Influences
5.3 Pattern Notation
5.4 Pattern Profiles
5.5 Patterns with Common Characteristics
5.6 Key Design Considerations

Part II: Service Inventory Design Patterns
Chapter 6: Foundational Inventory Design Patterns

Inventory Boundary Design Patterns
Enterprise Inventory
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Domain Inventory
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Inventory Structure Design Patterns
Logic Centralization
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Service Normalization
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Service Layers
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Inventory Standardization Design Patterns
Canonical Schema
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Canonical Protocol
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Chapter 7: Logical Inventory Layer Patterns

Service Layers and Logic Types
Business Logic and Utility Logic
Agnostic Logic and Non-Agnostic Logic
Process Abstraction
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Entity Abstraction
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Utility Abstraction
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Chapter 8: Inventory Centralization Patterns

Process Centralization
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Schema Centralization
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Policy Centralization
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Rules Centralization
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Chapter 9: Inventory Implementation Patterns

Dual Protocols
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Canonical Resources
Problem
Solution
Application
Impacts
Relationships
Case Study Example
State Repository
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Stateful Services
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Service Grid
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Inventory Endpoint
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Cross-Domain Utility Layer
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Chapter 10: Inventory Governance Patterns

Metadata Centralization
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Canonical Expression
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Canonical Versioning
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Part III: Service Design Patterns
Chapter 11: Foundational Service Design Patterns

Service Identification Design Patterns
Functional Decomposition
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Service Encapsulation
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Service Definition Design Patterns
Agnostic Context
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Non-Agnostic Context
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Agnostic Capability
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Chapter 12: Service Implementation Patterns

Service Fa├žade
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Redundant Implementation
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Service Data Replication
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Partial State Deferral
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Partial Validation
Problem
Solution
Application
Impacts
Relationships
Case Study Example
UI Mediator
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Chapter 13: Service Security Patterns

Exception Shielding
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Message Screening
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Trusted Subsystem
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Service Perimiter Guard
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Chapter 14: Service Contract Design Patterns

Decoupled Contract
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Contract Centralization
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Contract Denormalization
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Concurrent Contracts
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Validation Abstraction
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Chapter 15: Legacy Integration Patterns

Legacy Wrapper
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Multi-Channel Endpoint
Problem
Solution
Application
Impacts
Relationships
Case Study Example
File Gateway
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Chapter 16: Service Governance Patterns

Compatible Change
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Version Identification
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Termination Notification
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Service Decomposition
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Decomposed Capability
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Proxy Capability
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Distributed Capability
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Service Refactoring
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Part IV: Service Composition Design Patterns
Chapter 17: Capability Composition Patterns

Capability Composition
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Capability Recomposition
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Chapter 18: Service Messaging Patterns

Service Messaging
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Messaging Metadata
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Service Agent
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Intermediate Routing
Problem
Solution
Application
Impacts
Relationships
Case Study Example
State Messaging
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Service Callback
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Service Instance Routing
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Asynchronous Queuing
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Reliable Messaging
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Event-Driven Messaging
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Chapter 19: Composition Implementation Patterns

Atomic Service Transaction
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Compensating Service Transaction
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Composition Autonomy
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Agnostic Sub-Controller
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Chapter 20: Service Interaction Security Patterns

Data Confidentiality
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Data Origin Authentication
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Direct Authentication
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Brokered Authentication
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Chapter 21: Transformation Patterns

Data Model Transformation
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Data Format Transformation
Problem
Solution
Application
Impacts
Relationships
Case Study Example
Protocol Bridging
Problem
Solution
Application
Impacts
Relationships
Case Study Example

Part V: Supplemental
Chapter 22: Common Compound Design Patterns

“Compound” vs. “Composite”
Compound Patterns and Pattern Relationships
Joint Application vs. Coexistent Application
Compund Patterns and Pattern Granularity
Orchestration
Enterprise Service Bus
Service Broker
Canonical Schema Bus
Official Endpoint
Federated Endpoint Layer
Three-Layer Inventory

Chapter 23: Strategic Architecture Considerations

Architectural Impact of Increased Federation
Increased Intrinsic Interoperability
Increased Vendor Diversity Options
Increased Business and Technology Alignment
Increased ROI
Increased Organizational Agility
Reduced IT Burden

Chapter 24: Principles and Patterns at the U.S. Department of Defense

The Business Operating Environment (BOE)
Principles, Patterns, and the BOE
The Future of SOA and the DoD
SOADoD.org

Part VI: Appendices
Appendix A: Case Study Conclusion

Cutit Saws Ltd.
Alleywood Lumber Company
Forestry Regulatory Commission

Appendix B: Candidate Patterns
Appendix C: Principles of Service-Orientation

Standardized Service Contract
Service Loose Coupling
Service Abstraction
Service Reusability
Service Autonomy
Service Sttelessness
Service Discoverability
Service Composability

Appendix D: Patterns and Principles Cross-Reference
Appendix E: Patterns and Architecture Types Cross-Reference
About the Author
About the Contributors
Index of Patterns
Index