Table of Contents
Foreword...xxxvii CHAPTER 1: Introduction...1
1.1 Objectives of this Book ... 4
1.2 Who this Book is For ... 4
1.3 What this Book Does Not Cover... 4
Topics Covered by Other Books ...4
Web Service and REST Service Design Patterns ... 5
SOA Standardization Efforts... 5
1.4 Recommended Reading ... 6
1.5 How this Book is Organized... 7
Part I: Fundamentals... 8
Part II: Service Inventory Design Patterns... 8
Part III: Service Design Patterns . . 8
Part IV: Service Composition Design Patterns . . 9
Part V: Supplemental. . . 10
Part VI: Appendices . . . 10
1.6 Symbols, Figures, Style Conventions . . . 11
Symbol Legend . . . 11
How Color is Used 11
Data Flow and Directionality Conventions . . 11
Pattern Documentation Conventions . 11
1.7 Additional Information 11
Updates, Errata, and Resources (www.soabooks.com) . . . . 11
Visio Stencil (www.soabooks.com) . 12
Community Patterns Site (www.soapatterns.org) . . . . . 12
Master Glossary (www.soaglossary.com) 12
Supplementary Posters (www.soaposters.com) 12
The SOA Magazine (www.soamag.com) 12
Referenced Specifications (www.soaspecs.com). . . . . 12
Notification Service 13
Contact the Author 13
CHAPTER 2: Case Study Background . 15
2.1 Case #1 Background: Cutit Saws Ltd 17
History 18
Technical Infrastructure and Automation Environment . 18
Business Goals and Obstacles. . 18
2.2 Case #2 Background: Alleywood Lumber Company . 19
History 19
Technical Infrastructure and Automation Environment . 20
Business Goals and Obstacles. . 20
2.3 Case #3 Background: Forestry Regulatory
Commission (FRC) . . 21
History 21
Technical Infrastructure and Automation Environment . 21
Business Goals and Obstacles. . 22
PART I: FUNDAMENTALS
CHAPTER 3: Basic Terms and Concepts . . . . . 25
Purpose of this Introductory Chapter . . . 26
3.1 Architecture Fundamentals 26
A Classic Analogy for Architecture and Infrastructure . 27
Technology Architecture 27
Technology Infrastructure . 30
Software Program . 32
Relationship to Design Framework . 33
3.2 Service-Oriented Computing Fundamentals. . . . 35
Service-Oriented Computing . . . 35
Service-Orientation 36
Service-Oriented Architecture (SOA) . . . 37
Service . . . . . 37
Service Capability . 38
Service Consumer. 38
Service Composition . . . 40
Service Inventory. . 42
Service-Oriented Analysis. 43
Service Candidate. 44
3.3 Service Implementation Mediums . . . 44
Services as Components . 45
Services as Web Services 45
REST Services. . . . 46
CHAPTER 4: The Architecture of Service-Orientation . . 47
Purpose of this Introductory Chapter . . . 48
4.1 The Method of Service-Orientation 48
Principles of Service-Orientation. 48
Strategic Goals of Service-Oriented Computing. . . . . . 51
4.2 The Four Characteristics of SOA 52
Business-Driven . . 53
Vendor-Neutral . . . 54
Enterprise-Centric . 58
Composition-Centric . . . 59
4.3 The Four Common Types of SOA . 61
Service Architecture . . . 62
Information Hiding . . . . 64
Design Standards . 64
Service Contracts . 65
Service Agents . . . 67
Service Capabilities . . . 68
Service Composition Architecture . 68
Nested Compositions . . 72
Task Services and Alternative Compositions . 73
Compositions and Infrastructure. 74
Service Inventory Architecture . . 74
Service-Oriented Enterprise Architecture 76
Architecture Types and Scope . . 77
Architecture Types and Inheritance 77
Other Forms of Service-Oriented Architecture . 78
Inter-Business Service Architecture . . 78
Service-Oriented Community Architecture . . 78
4.4 The End Result of Service-Orientation . . 79
CHAPTER 5: Understanding SOA Design Patterns . 85
Purpose of this Introductory Chapter . . . 86
5.1 Fundamental Terminology. 86
What’s a Design Pattern? . 86
What’s a Compound Pattern? . . . 88
What’s a Design Pattern Language? . 88
What’s a Design Pattern Catalog? . . . 89
5.2 Historical Influences 89
Alexander’s Pattern Language . . 90
Object-Oriented Patterns . 91
Software Architecture Patterns . . 92
Enterprise Application Architecture Patterns . . 93
EAI Patterns . 93
SOA Patterns . . . . 94
5.3 Pattern Notation . 95
Pattern Symbols . . 95
Pattern Figures . . . 96
Pattern Application Sequence Figures 96
Pattern Relationship Figures. 96
Compound Pattern Hierarchy Figures 99
Capitalization. . . . 100
Page Number References. 100
5.4 Pattern Profiles . 100
Requirement . . . . 101
Icon . 101
Summary . . 102
Problem . . . . 102
Solution . . . . 102
Application . 103
Impacts . . . . 103
Relationships. . . . 103
Case Study Example. . 103
5.5 Patterns with Common Characteristics. 104
Canonical Patterns . . . 104
Centralization Patterns 105
5.6 Key Design Considerations . . 106
“Enterprise” vs. “Enterprise-wide” . . 106
Design Patterns and Design Principles 106
Design Patterns and Design Granularity . . 107
Measures of Design Pattern Application . . 108
PART II: SERVICE INVENTORY DESIGN PATTERNS
CHAPTER 6: Foundational Inventory Patterns . . . 111
How Inventory Design Patterns Relate to SOA Design
Characteristics . . 113
How Foundational Inventory and Service Patterns Relate . 114
How Case Studies are Used in this Chapter. . 114
6.1 Inventory Boundary Patterns . 114
Enterprise Inventory . 116
Problem . . . . 116
Solution . . . . 117
Application. . 118
Impacts . . . . 120
Relationships. . . . 121
Case Study Example. . 122
Domain Inventory . 123
Problem . . . . 123
Solution . . . . 124
Application. . 125
Impacts . . . . 126
Relationships. . . . 127
Case Study Example. . 128
6.2 Inventory Structure Patterns 130
Service Normalization. 131
Problem . . . . 131
Solution . . . . 132
Application. . 132
Impacts . . . . 133
Relationships. . . . 133
Case Study Example. . 135
Logic Centralization . 136
Problem . . . . 136
Solution . . . . 137
Application. . 137
Impacts . . . . 139
Relationships. . . . 140
Case Study Example. . 142
Service Layers 143
Problem . . . . 143
Solution . . . . 144
Application. . 145
Impacts . . . . 147
Relationships. . . . 147
Case Study Example. . 148
6.3 Inventory Standardization Patterns 149
Canonical Protocol 150
Problem . . . . 151
Solution . . . . 152
Application. . 153
Impacts . . . . 155
Relationships. . . . 155
Case Study Example. . 157
Canonical Schema 158
Problem . . . . 158
Solution . . . . 159
Application. . 159
Impacts . . . . 159
Relationships. . . . 160
Case Study Example. . 161
CHAPTER 7: Logical Inventory Layer Patterns . . . 163
Combining Layers 164
Business Logic and Utility Logic . . . 166
Agnostic Logic and Non-Agnostic Logic 166
Service Layers and Logic Types . . . 167
Utility Abstraction . 168
Problem . . . . 168
Solution . . . . 169
Application. . 170
Impacts . . . . 171
Relationships. . . . 171
Case Study Example. . 173
Entity Abstraction . 175
Problem . . . . 175
Solution . . . . 176
Application. . 176
Impacts . . . . 178
Relationships. . . . 178
Case Study Example. . 180
Process Abstraction . 182
Problem . . . . 182
Solution . . . . 183
Application. . 184
Impacts . . . . 185
Relationships. . . . 185
Case Study Example. . 187
CHAPTER 8: Inventory Centralization Patterns . . 191
Process Centralization 193
Problem . . . . 193
Solution . . . . 194
Application. . 195
Impacts . . . . 196
Relationships. . . . 197
Case Study Example. . 198
Schema Centralization 200
Problem . . . . 200
Solution . . . . 201
Application. . 202
Impacts . . . . 202
Relationships. . . . 203
Case Study Example. . 203
Policy Centralization . 207
Problems . . . 207
Solution . . . . 208
Application. . 209
Impacts . . . . 210
Relationships. . . . 211
Case Study Example. . 213
Rules Centralization . 216
Problem . . . . 216
Solution . . . . 217
Application. . 217
Impacts . . . . 218
Relationships. . . . 219
Case Study Example. . 222
CHAPTER 9: Inventory Implementation Patterns . 225
Dual Protocols 227
Problem . . . . 228
Solution . . . . 228
Application. . 228
Impacts . . . . 233
Relationships. . . . 234
Case Study Example. . 235
Canonical Resources 237
Problem . . . . 238
Solution . . . . 238
Application. . 239
Impacts . . . . 239
Relationships. . . . 239
Case Study Example. . 241
State Repository . . 242
Problem . . . . 242
Solution . . . . 243
Application. . 244
Impacts . . . . 244
Relationships. . . . 244
Case Study Example. . 246
Stateful Services . . 248
Problem . . . . 248
Solution . . . . 248
Application. . 250
Impacts . . . . 250
Relationships. . . . 250
Case Study Example. . 251
Service Grid . . 254
Problem . . . . 254
Solution . . . . 255
Application. . 256
Impacts . . . . 257
Relationships. . . . 258
Case Study Example. . 259
Inventory Endpoint 260
Problem . . . . 260
Solution . . . . 261
Application. . 262
Impacts . . . . 263
Relationships. . . . 263
Case Study Example. . 265
Cross-Domain Utility Layer 267
Problem . . . . 267
Solution . . . . 268
Application. . 269
Impacts . . . . 269
Relationships. . . . 270
Case Study Example. . 270
CHAPTER 10: Inventory Governance Patterns . . . 273
Canonical Expression. 275
Problem . . . . 275
Solution . . . . 275
Application. . 276
Impacts . . . . 277
Relationships. . . . 278
Case Study Example. . 279
Metadata Centralization . . . 280
Problem . . . . 280
Solution . . . . 281
Application. . 282
Impacts . . . . 283
Relationships. . . . 283
Case Study Example. . 284
Canonical Versioning 286
Problem . . . . 286
Solution . . . . 287
Application. . 287
Impacts . . . . 288
Relationships. . . . 288
Case Study Example. . 290
PART III: SERVICE DESIGN PATTERNS
CHAPTER 11: Foundational Service Patterns . . . . 295
Case Study Background 297
11.1 Service Identification Patterns . 299
Functional Decomposition . 300
Problem . . . . 300
Solution . . . . 301
Application. . 302
Impacts . . . . 302
Relationships. . . . 303
Case Study Example. . 303
Service Encapsulation 305
Problem . . . . 305
Solution . . . . 306
Application. . 307
Impacts . . . . 309
Relationships. . . . 309
Case Study Example. . 310
11.2 Service Definition Patterns 311
Agnostic Context. . 312
Problem . . . . 313
Solution . . . . 314
Application. . 315
Impacts . . . . 315
Relationships. . . . 316
Case Study Example. . 317
Non-Agnostic Context 319
Problem . . . . 319
Solution . . . . 320
Application. . 321
Impacts . . . . 322
Relationships. . . . 322
Case Study Example. . 323
Agnostic Capability324
Problem . . . . 324
Solution . . . . 325
Application. . 326
Impacts . . . . 327
Relationships. . . . 327
Case Study Example. . 328
CHAPTER 12: Service Implementation Patterns. . 331
Service Façade . . . 333
Problem . . . . 333
Solution . . . . 334
Application. . 335
Impacts . . . . 341
Relationships. . . . 342
Case Study Example. . 343
Redundant Implementation 345
Problem . . . . 345
Solution . . . . 346
Application. . 346
Impacts . . . . 347
Relationships. . . . 348
Case Study Example. . 349
Service Data Replication . . 350
Problem . . . . 350
Solution . . . . 352
Application. . 353
Impacts . . . . 353
Relationships. . . . 353
Case Study Example. . 354
Partial State Deferral . 356
Problem . . . . 356
Solution . . . . 357
Application. . 358
Impacts . . . . 359
Relationships. . . . 359
Case Study Example. . 360
Partial Validation . . 362
Problem . . . . 362
Solution . . . . 363
Application. . 364
Impacts . . . . 364
Relationships. . . . 364
Case Study Example. . 365
UI Mediator. . . 366
Problem . . . . 366
Solution . . . . 367
Application. . 368
Impacts . . . . 369
Relationships. . . . 370
Case Study Example. . 370
CHAPTER 13: Service Security Patterns . . . 373
Case Study background 374
Exception Shielding . 376
Problem . . . . 376
Solution . . . . 377
Application. . 378
Impacts . . . . 379
Relationships. . . . 379
Case Study Example. . 380
Message Screening381
Problem . . . . 381
Solution . . . . 382
Application . 382
Impacts . . . . 384
Relationships. . . . 385
Case Study Example. . 385
Trusted Subsystem 387
Problem . . . . 387
Solution . . . . 388
Application. . 388
Impacts . . . . 391
Relationships. . . . 391
Case Study Example. . 392
Service Perimeter Guard 394
Problem . . . . 394
Solution . . . . 395
Application . 395
Impacts . . . . 396
Relationships. . . . 396
Case Study Example. . 397
CHAPTER 14: Service Contract Design Patterns . 399
Decoupled Contract . 401
Problem . . . . 401
Solution . . . . 402
Application. . 403
Impacts . . . . 405
Relationships. . . . 405
Case Study Example. . 407
Contract Centralization . 409
Problem . . . . 409
Solution . . . . 410
Application. . 410
Impacts . . . . 411
Relationships. . . . 411
Case Study Example. . 413
Contract Denormalization. . 414
Problem . . . . 414
Solution . . . . 415
Application. . 416
Impacts . . . . 417
Relationships. . . . 417
Case Study Example. . 418
Concurrent Contracts 421
Problem . . . . 421
Solution . . . . 422
Application. . 423
Impacts . . . . 425
Relationships. . . . 425
Case Study Example. . 426
Validation Abstraction 429
Problem . . . . 429
Solution . . . . 430
Application. . 431
Impacts . . . . 432
Relationships. . . . 432
Case Study Example. . 433
Chapter 15: Legacy Encapsulation Patterns . . . 439
Legacy Wrapper. . . 441
Problem . . . . 441
Solution . . . . 442
Application. . 443
Impacts . . . . 444
Relationships. . . . 444
Case Study Example. . 446
Multi-Channel Endpoint . . . 451
Problem . . . . 451
Solution . . . . 452
Application. . 453
Impacts . . . . 454
Relationships. . . . 454
Case Study Example. . 456
File Gateway . 457
Problem . . . . 457
Solution . . . . 458
Application. . 458
Impacts . . . . 459
Relationships. . . . 460
Case Study Example. . 461
CHAPTER 16: Service Governance Patterns. . . . . 463
Compatible Change465
Problem . . . . 465
Solution . . . . 466
Application. . 466
Impacts . . . . 469
Relationships. . . . 469
Case Study Example. . 470
Version Identification 472
Problem . . . . 472
Solution . . . . 473
Application. . 473
Impacts . . . . 474
Relationships. . . . 474
Case Study Example. . 475
Termination Notification . . . 478
Problem . . . . 478
Solution . . . . 479
Application. . 480
Impacts . . . . 480
Relationships. . . . 481
Case Study Example. . 481
Service Refactoring484
Problem . . . . 484
Solution . . . . 485
Application. . 485
Impacts . . . . 486
Relationships. . . . 486
Case Study Example. . 488
Service Decomposition . 489
Problem . . . . 489
Solution . . . . 491
Application. . 492
Impacts . . . . 492
Relationships. . . . 494
Case Study Example. . 495
Proxy Capability . . 497
Problem . . . . 497
Solution . . . . 498
Application. . 498
Impacts . . . . 500
Relationships. . . . 500
Case Study Example. . 501
Decomposed Capability . . . 504
Problem . . . . 504
Solution . . . . 506
Application. . 507
Impacts . . . . 507
Relationships. . . . 508
Case Study Example. . 508
Distributed Capability 510
Problem . . . . 510
Solution . . . . 511
Application. . 512
Impacts . . . . 513
Relationships. . . . 513
Case Study Example. . 514
PART IV: SERVICE COMPOSITION DESIGN PATTERNS
CHAPTER 17: Capability Composition Patterns . . 519
Capability Composition . . . 521
Problem . . . . 521
Solution . . . . 521
Application. . 523
Impacts . . . . 523
Relationships. . . . 523
Case Study Example. . 524
Capability Recomposition . 526
Problem . . . . 526
Solution . . . . 527
Application. . 527
Impacts . . . . 527
Relationships. . . . 529
Case Study Example. . 530
CHAPTER 18: Service Messaging Patterns. . 531
Service Messaging 533
Problem . . . . 533
Solution . . . . 533
Application. . 534
Impacts . . . . 534
Relationships. . . . 535
Case Study Example. . 536
Messaging Metadata 538
Problem . . . . 538
Solution . . . . 538
Application. . 539
Impacts . . . . 540
Relationships. . . . 541
Case Study Example. . 542
Service Agent 543
Problem . . . . 543
Solution . . . . 544
Application. . 544
Impacts . . . . 546
Relationships. . . . 546
Case Study Example. . 548
Intermediate Routing 549
Problem . . . . 549
Solution . . . . 551
Application. . 552
Impacts . . . . 553
Relationships. . . . 553
Case Study Example. . 556
State Messaging . . 557
Problem . . . . 557
Solution . . . . 558
Application. . 560
Impacts . . . . 561
Relationships. . . . 561
Case Study Example. . 562
Service Callback . . 566
Problem . . . . 566
Solution . . . . 568
Application. . 568
Impacts . . . . 570
Relationships. . . . 570
Case Study Example. . 571
Service Instance Routing . . 574
Problem . . . . 574
Solution . . . . 576
Application. . 576
Impacts . . . . 578
Relationships. . . . 578
Case Study Example. . 579
Asynchronous Queuing . . . 582
Problem . . . . 582
Solution . . . . 584
Application. . 584
Impacts . . . . 587
Relationships. . . . 588
Case Study Example. . 589
Reliable Messaging 592
Problem . . . . 592
Solution . . . . 593
Application. . 593
Impacts . . . . 594
Relationships. . . . 595
Case Study Example. . 596
Event-Driven Messaging 599
Problem . . . . 599
Solution . . . . 600
Application. . 602
Impacts . . . . 602
Relationships. . . . 602
Case Study Example. . 604
CHAPTER 19: Composition Implementation Patterns . . 605
Agnostic Sub-Controller 607
Problem . . . . 607
Solution . . . . 608
Application. . 610
Impacts . . . . 610
Relationships. . . . 610
Case Study Example. . 612
Composition Autonomy . . . 616
Problem . . . . 616
Solution . . . . 618
Application. . 619
Impacts . . . . 619
Relationships. . . . 620
Case Study Example. . 620
Atomic Service Transaction 623
Problem . . . . 623
Solution . . . . 624
Application. . 626
Impacts . . . . 626
Relationships. . . . 628
Case Study Example. . 629
Compensating Service Transaction . . 631
Problem . . . . 631
Solution . . . . 633
Application. . 633
Impacts . . . . 635
Relationships. . . . 635
Case Study Example. . 636
CHAPTER 20: Service Interaction Security Patterns . . 639
Data Confidentiality641
Problem . . . . 641
Solution . . . . 643
Application. . 643
Impacts . . . . 644
Relationships. . . . 645
Case Study Example. . 646
Data Origin Authentication. 649
Problem . . . . 649
Solution . . . . 650
Application. . 651
Impacts . . . . 652
Relationships. . . . 653
Case Study Example. . 653
Direct Authentication 656
Problem . . . . 656
Solution . . . . 657
Application. . 657
Impacts . . . . 658
Relationships. . . . 659
Case Study Example. . 660
Brokered Authentication 661
Problem . . . . 661
Solution . . . . 662
Application. . 663
Impacts . . . . 665
Relationships. . . . 665
Case Study Example. . 666
CHAPTER 21: Transformation Patterns . . . . 669
Data Model Transformation 671
Problem . . . . 671
Solution . . . . 672
Application. . 673
Impacts . . . . 674
Relationships. . . . 674
Case Study Example. . 677
Data Format Transformation . . . 681
Problem . . . . 681
Solution . . . . 681
Application. . 683
Impacts . . . . 683
Relationships. . . . 683
Case Study Example. . 685
Protocol Bridging . 687
Problem . . . . 687
Solution . . . . 688
Application. . 688
Impacts . . . . 690
Relationships. . . . 690
Case Study Example. . 692
PART V: SUPPLEMENTAL
CHAPTER 22: Common Compound Design Patterns . . . 697
“Compound” vs. “Composite” . . . 698
Compound Patterns and Pattern Relationships . . . 698
Joint Application vs. Coexistent Application. . . . . . 699
Compound Patterns and Pattern Granularity . . . . . 700
Orchestration. 701
Enterprise Service Bus . 704
Service Broker 707
Canonical Schema Bus . 709
Official Endpoint . . 711
Federated Endpoint Layer . 713
Three-Layer Inventory. 715
CHAPTER 23: Strategic Architecture Considerations. . 717
Increased Federation . 718
Increased Intrinsic Interoperability . . 721
Increased Vendor Diversification Options. . 723
Increased Business and Technology Alignment. . . 725
Increased ROI . 727
Increased Organizational Agility 728
Reduced IT Burden. 729
CHAPTER 24: Principles and Patterns at the
U.S. Department of Defense . 731
The Business Operating Environment (BOE) . . . . . 733
Principles, Patterns, and the BOE . . 734
Incorporation of Information Assurance (IA) . . 736
Adherence to Standards . 736
Data Visibility, Accessibility, and Understandability to
Support Decision Makers 736
Loosely Coupled Services 736
Authoritative Sources of Trusted Data 737
Metadata-Driven Framework for Separation from
Technical Details . 737
Support Use of Open Source Software . . . 738
Emphasize Use of Service-Enabled Commercial
Off-the-Shelf (COTS) Software . 738
Participation in the DoD Enterprise 738
Support Mobility — Users & Devices . . 738
The Future of SOA and the DoD 739
SOADoD.org . . 739
PART VI: APPENDICES
APPENDIX A: Case Study Conclusion 743
Cutit Saws Ltd. 744
Alleywood Lumber Company 744
Forestry Regulatory Commission (FRC) . . . 745
APPENDIX B: Candidate Patterns . . 747
APPENDIX C: Principles of Service-Orientation . . 749
Standardized Service Contract . 751
Service Loose Coupling 753
Service Abstraction . 755
Service Reusability . 756
Service Autonomy . . 758
Service Statelessness . 760
Service Discoverability 762
Service Composability 764
APPENDIX D: Patterns and Principles
Cross-Reference . . . 767
APPENDIX E: Patterns and Architecture Types
Cross-Reference . . . 775
About the Author . . . 783
About the Contributors . 784
Index of Patterns . . . 791
Index . 795