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
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Redundant Implementation
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Service Data Replication
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Partial State Deferral
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Partial Validation
roblem
Solution
Application
Impacts
Relationships
Case Study Example
UI Mediator
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Chapter 13: Service Security Patterns
Exception Shielding
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Message Screening
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Trusted Subsystem
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Service Perimiter Guard
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Chapter 14: Service Contract Design Patterns
Decoupled Contract
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Contract Centralization
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Contract Denormalization
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Concurrent Contracts
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Validation Abstraction
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Chapter 15: Legacy Integration Patterns
Legacy Wrapper roblem
Solution
Application
Impacts
Relationships
Case Study Example
Multi-Channel Endpoint roblem
Solution
Application
Impacts
Relationships
Case Study Example
File Gateway roblem
Solution
Application
Impacts
Relationships
Case Study Example
Chapter 16: Service Governance Patterns
Compatible Change
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Version Identification
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Termination Notification
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Service Decomposition
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Decomposed Capability
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Proxy Capability
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Distributed Capability
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Service Refactoring
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Part IV: Service Composition Design Patterns
Chapter 17: Capability Composition Patterns
Capability Composition
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Capability Recomposition
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Chapter 18: Service Messaging Patterns
Service Messaging
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Messaging Metadata
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Service Agent
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Intermediate Routing
roblem
Solution
Application
Impacts
Relationships
Case Study Example
State Messaging
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Service Callback
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Service Instance Routing
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Asynchronous Queuing
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Reliable Messaging
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Event-Driven Messaging
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Chapter 19: Composition Implementation Patterns
Atomic Service Transaction
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Compensating Service Transaction
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Composition Autonomy
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Agnostic Sub-Controller
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Chapter 20: Service Interaction Security Patterns
Data Confidentiality
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Data Origin Authentication
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Direct Authentication
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Brokered Authentication
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Chapter 21: Transformation Patterns
Data Model Transformation
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Data Format Transformation
roblem
Solution
Application
Impacts
Relationships
Case Study Example
Protocol Bridging
roblem
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
SOA Design Patterns by Thomas Erl
Foreword by Grady Booch
With contributions from David Chappell, Jason Hogg, Anish Karmarkar, Mark Little, David Orchard, Satadru Roy, Thomas Rischbeck, Arnaud Simon, Clemens Utschig, Dennis Wisnosky, and others.