Foreword Chapter 1:Introduction 1.1 Objectives of this Book 1.2 Who this Book is For 1.3 What this Book Does Not Cover Topics Covered by Other Books Web Service and REST Service Design Patterns SOA Standardization Efforts 1.4 Recommended Reading 1.5 How this Book is Organized Part I:Fundamentals Part II:Service Inventory Design Patterns Part III:Service Design Patterns Part IV:Service Composition Design Patterns Part V:Supplemental Part VI:Appendices 1.6 Symbols,Figures,Style Conventions Symbol Legend How Color is Used Data Flow and Directionality Conventions Pattern Documentation Conventions 1.7 Additional Information Updates,Errata,and Resources(www.soabooks.com) Visio Stencil(www.soabooks.com) Community Patterns Site(www.soapatterns.org) Master Glossary(www.soaglossary.com) Supplementary Posters(www.soaposters.com) The SOA Magazine(www.soamag.com) Referenced Specifications(www.soaspecs.com) Notification Service Contact the Author Chapter 2:Case Study Background 2.1 Case #1 Background:Cutit Saws Ltd. History Technical Infrastructure and Automation Environment Business Goals and Obstacles 2.2 Case #2 Background:Alleywood Lumber Company History Technical Infrastructure and Automation Environment Business Goals and Obstacles 2.3 Case #3 Background:Forestry Regulatory Commission(FRC) History Technical Infrastructure and Automation Environment Business Goals and Obstacles PART I:Fundamentals CHAPTER 3:Basic Terms and Concepts Purpose of this Introductory Chapter 3.1 Architecture Fundamentals A Classic Analogy for Architectureand Infrastructure Technology Architecture Technology Infrastructure Software Program Relationship to Design Framework 3.2 Service-Oriented Computing Fundamentals Service-Oriented Computing Service-Orientation Service-Oriented Architecture(SOA) Service Service Capability Service Consumer Service Composition Service Inventory Service-Oriented Analysis Service Candidate 3.3 Service Implementation Mediums Services as Components Services as Web Services REST Services CHAPTER 4:The Architecture of Service-Orientation Purpose of this Introductory Chapter 4.1 The Method of Service-Orientation Principles of Service-Orientation Strategic Goals of Service-Oriented Computing 4.2 The Four Characteristics of SOA Business-Driven Vendor-Neutral Enterprise-Centric Composition-Centric 4.3 The Four Common Types of SOA Service Architecture Information Hiding Design Standards Service Contracts Service Agents Service Capabilities Service Composition Architecture Nested Compositions Task Services and Alternative Compositions Compositions and Infrastructure Service Inventory Architecture Service-Oriented Enterprise Architecture Architecture Types and Scope Architecture Types and Inheritance Other Forms of Service-Oriented Architecture Inter-Business Service Architecture Service-Oriented Community Architecture 4.4 The End Result of Service-Orientation CHAPTER 5:Understanding SOA Design Patterns Purpose of this Introductory Chapter 5.1 Fundamental Terminology What's a Design Pattern? What's a Compound Pattern? What's a Design Pattern Language? What's a Design Pattern Catalog? 5.2 Historical Influences Alexander's Pattern Language Object-Oriented Patterns Software Architecture Patterns Enterprise Application Architecture Patterns EAI Patterns SOA Patterns 5.3 Pattern Notation Pattern Symbols Pattern Figures Pattern Application Sequence Figures Pattern Relationship Figures Compound Pattern Hierarchy Figures Capitalization Page Number References 5.4 Pattern Profiles Summary Problem Solution Application Impacts Relationships Case Study Example 5.5 Patterns with Common Characteristics Canonical Patterns Centralization Patterns 5.6 Key Design Considerations ?Enterprise?vs.?Enterprise-wide? Design Patterns and Design Principles Design Patterns and Design Granularity PART II:SERVICE INVENTORY DESIGN PATTERNS CHAPTER 6:Foundational Inventory Patterns How Inventory Design Patterns Relate to SOA Design Characteristics How Foundational Inventory and Service Patterns Relate How Case Studies are Used in this Chapter 6.1 Inventory Boundary Patterns Enterprise Inventory Problem Solution Application Impacts Relationships Case Study Example Domain Inventory Problem Solution Application Impacts Relationships Case Study Example 6.2 Inventory Structure Patterns Service Normalization Problem Solution Application Impacts Relationships Case Study Example Logic Centralization Problem Solution Application Impacts Relationships Case Study Example Service Layers Problem Solution Application Impacts Relationships Case Study Example 6.3 Inventory Standardization Patterns Canonical Protocol Problem Solution Application Impacts Relationships Case Study Example Canonical Schema Problem Solution Application Impacts Relationships Case Study Example CHAPTER 7:Logical Inventory Layer Patterns Combining Layers Business Logic and Utility Logic Agnostic Logic and Non-Agnostic Logic Service Layers and Logic Types Utility Abstraction Problem Solution Application Impacts Relationships Case Study Example Entity Abstraction Problem Solution Application Impacts Relationships Case Study Example Process 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 Problems 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 Canonical Expression Problem Solution Application Impacts Relationships Case Study Example Metadata Centralization 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 Patterns Case Study Background 11.1 Service Identification Patterns Functional Decomposition Problem Solution Application Impacts Relationships Case Study Example Service Encapsulation Problem Solution Application Impacts Relationships Case Study Example 11.2 Service Definition 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 Facade 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 Case Study background 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 Perimeter 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 Encapsulation 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 Refactoring Problem Solution Application Impacts Relationships Case Study Example Service Decomposition Problem Solution Application Impacts Relationships Case Study Example Proxy Capability Problem Solution Application Impacts Relationships Case Study Example Decomposed Capability Problem Solution Application Impacts Relationships Case Study Example Distributed Capability 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 Agnostic Sub-Controller Problem Solution Application Impacts Relationships Case Study Example Composition Autonomy Problem Solution Application Impacts Relationships Case Study Example Atomic Service Transaction Problem Solution Application Impacts Relationships Case Study Example Compensating Service Transaction 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 Compound 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 Increased Federation Increased Intrinsic Interoperability Increased Vendor Diversification 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 Incorporation of Information Assurance(IA) Adherence to Standards Data Visibility,Accessibility,and Understandability to Support Decision Makers Loosely Coupled Services Authoritative Sources of Trusted Data Metadata-Driven Framework for Separation from Technical Details Support Use of Open Source Software Emphasize Use of Service-Enabled Commercial Off-the-Shelf(COTS)Software Participation in the DoD Enterprise Support Mobility-Users & Devices 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(FRC) APPENDIX B:Candidate Patterns APPENDIX C:Principles of Service-Orientation Standardized Service Contract Service Loose Coupling Service Abstraction Service Reusability Service Autonomy Service Statelessness 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