Wiley.com
Print this page Share

Pattern-Oriented Software Architecture, Volume 4, A Pattern Language for Distributed Computing

ISBN: 978-0-470-05902-9
Hardcover
640 pages
April 2007
List Price: US $65.00
Government Price: US $34.68
Enter Quantity:   Buy
Pattern-Oriented Software Architecture, Volume 4, A Pattern Language for Distributed Computing (0470059028) cover image
This is a Print-on-Demand title. It will be printed specifically to fill your order. Please allow an additional 10-15 days delivery time. The book is not returnable.

Foreword xv

About This Book xvii

About The Authors xxiii

Guide To The Reader xxvii

Part I Some Concepts 1

1 On Patterns and Pattern Languages 3

1.1 Patterns Introduced 4

1.2 Inside Patterns 6

1.3 Between Patterns 10

1.4 Into Pattern Languages 13

1.5 Patterns Connected 15

2 On Distributed Systems 17

2.1 Benefits of Distribution 18

2.2 Challenges of Distribution 20

2.3 Technologies for Supporting Distribution 22

2.4 Limitations of Middleware 32

3 On the Pattern Language 33

3.1 Intent, Scope, and Audience 34

3.2 Origins and Genesis 35

3.3 Structure and Content 36

3.4 Presentation 44

3.5 Practical Use 49

Part II A Story 53

4 Warehouse Management Process Control 57

4.1 System Scope 58

4.2 Warehouse Management Process Control 60

5 Baseline Architecture 65

5.1 Architecture Context 66

5.2 Partitioning the Big Ball of Mud 67

5.3 Decomposing the Layers 68

5.4 Accessing Domain Object Functionality 71

5.5 Bridging the Network 72

5.6 Separating User Interfaces 76

5.7 Distributing Functionality 79

5.8 Supporting Concurrent Domain Object Access 82

5.9 Achieving Scalable Concurrency 85

5.10 Crossing the Object-Oriented/Relational Divide 87

5.11 Configuring Domain Objects at Runtime 89

5.12 Baseline Architecture Summary 90

6 Communication Middleware 95

6.1 A Middleware Architecture for Distributed Systems 96

6.2 Structuring the Internal Design of the Middleware 100

6.3 Encapsulating Low-level System Mechanisms 103

6.4 Demultiplexing ORB Core Events 105

6.5 Managing ORB Connections 108

6.6 Enhancing ORB Scalability 111

6.7 Implementing a Synchronized Request Queue 114

6.8 Interchangeable Internal ORB Mechanisms 116

6.9 Consolidating ORB Strategies 118

6.10 Dynamic Configuration of ORBs 121

6.11 Communication Middleware Summary 124

7 Warehouse Topology 129

7.1 Warehouse Topology Baseline 130

7.2 Representing Hierarchical Storage 131

7.3 Navigating the Storage Hierarchy 133

7.4 Modeling Storage Properties 135

7.5 Varying Storage Behavior 137

7.6 Realizing Global Functionality 140

7.7 Traversing the Warehouse Topology 142

7.8 Supporting Control Flow Extensions 144

7.9 Connecting to the Database 146

7.10 Maintaining In-Memory Storage Data 147

7.11 Configuring the Warehouse Topology 149

7.12 Detailing the Explicit Interface 151

7.13 Warehouse Topology Summary 153

8 The Story Behind The Pattern Story 157

Part III The Language 163

9 From Mud To Structure 167

Domain Model ** 182

Layers ** 185

Model-View-Controller ** 188

Presentation-Abstraction-Control 191

Microkernel ** 194

Reflection * 197

Pipes and Filters ** 200

Shared Repository ** 202

Blackboard 205

Domain Object ** 208

10 Distribution Infrastructure 211

Messaging ** 221

Message Channel ** 224

Message Endpoint ** 227

Message Translator ** 229

Message Router ** 231

Publisher-Subscriber ** 234

Broker ** 237

Client Proxy ** 240

Requestor ** 242

Invoker ** 244

Client Request Handler ** 246

Server Request Handler ** 249

11 Event Demultiplexing and Dispatching 253

Reactor ** 259

Proactor * 262

Acceptor-Connector ** 265

Asynchronous Completion Token ** 268

12 Interface Partitioning 271

Explicit Interface ** 281

Extension Interface ** 284

Introspective Interface ** 286

Dynamic Invocation Interface * 288

Proxy ** 290

Business Delegate ** 292

Facade ** 294

Combined Method ** 296

Iterator ** 298

Enumeration Method ** 300

Batch Method ** 302

13 Component Partitioning 305

Encapsulated Implementation ** 313

Whole-Part ** 317

Composite ** 319

Master-Slave * 321

Half-Object plus Protocol ** 324

Replicated Component Group * 326

14 Application Control 329

Page Controller ** 337

Front Controller ** 339

Application Controller ** 341

Command Processor ** 343

Template View ** 345

Transform View ** 347

Firewall Proxy ** 349

Authorization ** 351

15 Concurrency 353

Half-Sync/Half-Async ** 359

Leader/Followers ** 362

Active Object ** 365

Monitor Object ** 368

16 Synchronization 371

Guarded Suspension ** 380

Future ** 382

Thread-Safe Interface * 384

Double-Checked Locking 386

Strategized Locking ** 388

Scoped Locking ** 390

Thread-Specific Storage 392

Copied Value ** 394

Immutable Value ** 396

17 Object Interaction 399

Observer ** 405

Double Dispatch ** 408

Mediator * 410

Command ** 412

Memento ** 414

Context Object ** 416

Data Transfer Object ** 418

Message ** 420

18 Adaptation and Extension 423

Bridge ** 436

Object Adapter ** 438

Chain of Responsibility * 440

Interpreter 442

Interceptor ** 444

Visitor ** 447

Decorator 449

Execute-Around Object ** 451

Template Method * 453

Strategy ** 455

Null Object ** 457

Wrapper Facade ** 459

Declarative Component Configuration * 461

19 Modal Behavior 463

Objects for States * 467

Methods for States * 469

Collections for States ** 471

20 Resource Management 473

Container * 488

Component Configurator * 490

Object Manager ** 492

Lookup ** 495

Virtual Proxy ** 497

Lifecycle Callback ** 499

Task Coordinator * 501

Resource Pool ** 503

Resource Cache ** 505

Lazy Acquisition ** 507

Eager Acquisition ** 509

Partial Acquisition * 511

Activator ** 513

Evictor ** 515

Leasing ** 517

Automated Garbage Collection ** 519

Counting Handle ** 522

Abstract Factory ** 525

Builder * 527

Factory Method ** 529

Disposal Method ** 531

21 Database Access 533

Database Access Layer ** 538

Data Mapper ** 540

Row Data Gateway ** 542

Table Data Gateway ** 544

Active Record 546

22 A Departing Thought 549

Glossary 553

References 573

Index of Patterns 587

Index of Names 593

Subject Index 595

Back to Top