You are previewing Pattern-Oriented Software Architecture: A Pattern Language for Distributed Computing, 4th Volume.
O'Reilly logo
Pattern-Oriented Software Architecture: A Pattern Language for Distributed Computing, 4th Volume

Book Description

The eagerly awaited Pattern-Oriented Software Architecture (POSA) Volume 4 is about a pattern language for distributed computing.

The authors will guide you through the best practices and introduce you to key areas of building distributed software systems. POSA 4 connects many stand-alone patterns, pattern collections and pattern languages from the existing body of literature found in the POSA series. Such patterns relate to and are useful for distributed computing to a single language.

  • The panel of experts provides you with a consistent and coherent holistic view on the craft of building distributed systems.

  • Includes a foreword by Martin Fowler

  • A must read for practitioners who want practical advice to develop a comprehensive language integrating patterns from key literature.

Table of Contents

  1. Copyright
  2. Foreword
  3. About This Book
    1. Intended Audience
    2. Structure and Content
    3. Acknowledgments
  4. About The Authors
    1. Frank Buschmann
    2. Kevlin Henney
    3. Douglas C. Schmidt
  5. Guide To The Reader
    1. Introduction to Patterns and Pattern Languages
    2. Introduction to Distributed Computing
    3. Introduction to the Pattern Language for Distributed Computing
    4. The Pattern Language in Action
    5. The Pattern Language in Detail
  6. I. Some Concepts
    1. 1. On Patterns and Pattern Languages
      1. 1.1. Patterns Introduced
        1. 1.1.1. From Building Architecture to Software Architecture
      2. 1.2. Inside Patterns
        1. 1.2.1. A Problem in a Context
        2. 1.2.2. Forces: The Heart of Every Pattern
        3. 1.2.3. Solutions and Consequences
        4. 1.2.4. The Naming of Names
        5. 1.2.5. Brief Notes on the Synthesis of Pattern Form
      3. 1.3. Between Patterns
        1. 1.3.1. Pattern Complements
        2. 1.3.2. Pattern Compounds
        3. 1.3.3. Pattern Stories
        4. 1.3.4. Pattern Sequences
      4. 1.4. Into Pattern Languages
        1. 1.4.1. From Sequences to Languages
        2. 1.4.2. Presenting and Using Pattern Languages
      5. 1.5. Patterns Connected
    2. 2. On Distributed Systems
      1. 2.1. Benefits of Distribution
      2. 2.2. Challenges of Distribution
      3. 2.3. Technologies for Supporting Distribution
        1. 2.3.1. Distributed Object Computing Middleware
        2. 2.3.2. Component Middleware
        3. 2.3.3. Publish/Subscribe and Message-Oriented Middleware
        4. 2.3.4. Service-Oriented Architectures and Web Services
      4. 2.4. Limitations of Middleware
    3. 3. On the Pattern Language
      1. 3.1. Intent, Scope, and Audience
      2. 3.2. Origins and Genesis
      3. 3.3. Structure and Content
      4. 3.4. Presentation
      5. 3.5. Practical Use
  7. II. A Story
    1. 4. Warehouse Management Process Control
      1. 4.1. System Scope
      2. 4.2. Warehouse Management Process Control
    2. 5. Baseline Architecture
      1. 5.1. Architecture Context
      2. 5.2. Partitioning the Big Ball of Mud
      3. 5.3. Decomposing the Layers
      4. 5.4. Accessing Domain Object Functionality
      5. 5.5. Bridging the Network
      6. 5.6. Separating User Interfaces
      7. 5.7. Distributing Functionality
      8. 5.8. Supporting Concurrent Domain Object Access
      9. 5.9. Achieving Scalable Concurrency
      10. 5.10. Crossing the Object-Oriented/Relational Divide
      11. 5.11. Configuring Domain Objects at Runtime
      12. 5.12. Baseline Architecture Summary
    3. 6. Communication Middleware
      1. 6.1. A Middleware Architecture for Distributed Systems
      2. 6.2. Structuring the Internal Design of the Middleware
      3. 6.3. Encapsulating Low-level System Mechanisms
      4. 6.4. Demultiplexing ORB Core Events
      5. 6.5. Managing ORB Connections
      6. 6.6. Enhancing ORB Scalability
      7. 6.7. Implementing a Synchronized Request Queue
      8. 6.8. Interchangeable Internal ORB Mechanisms
      9. 6.9. Consolidating ORB Strategies
      10. 6.10. Dynamic Configuration of ORBs
      11. 6.11. Communication Middleware Summary
    4. 7. Warehouse Topology
      1. 7.1. Warehouse Topology Baseline
      2. 7.2. Representing Hierarchical Storage
      3. 7.3. Navigating the Storage Hierarchy
      4. 7.4. Modeling Storage Properties
      5. 7.5. Varying Storage Behavior
      6. 7.6. Realizing Global Functionality
      7. 7.7. Traversing the Warehouse Topology
      8. 7.8. Supporting Control Flow Extensions
      9. 7.9. Connecting to the Database
      10. 7.10. Maintaining In-Memory Storage Data
      11. 7.11. Configuring the Warehouse Topology
      12. 7.12. Detailing the Explicit Interface
      13. 7.13. Warehouse Topology Summary
    5. 8. The Story Behind The Pattern Story
  8. III. The Language
    1. 9. From Mud To Structure
      1. 9.1. Domain Model **
      2. 9.2. Layers **
      3. 9.3. Model-View-Controller **
      4. 9.4. Presentation-Abstraction-Control
      5. 9.5. Microkernel **
      6. 9.6. Reflection *
      7. 9.7. Pipes and Filters **
      8. 9.8. Shared Repository **
      9. 9.9. Blackboard
      10. 9.10. Domain Object **
    2. 10. Distribution Infrastructure
      1. 10.1. Messaging **
      2. 10.2. Message Channel **
      3. 10.3. Message Endpoint **
      4. 10.4. Message Translator **
      5. 10.5. Message Router **
      6. 10.6. Publisher-Subscriber **
      7. 10.7. Broker **
      8. 10.8. Client Proxy **
      9. 10.9. Requestor **
      10. 10.10. Invoker **
      11. 10.11. Client Request Handler **
      12. 10.12. Server Request Handler **
    3. 11. Event Demultiplexing and Dispatching
      1. 11.1. Reactor **
      2. 11.2. Proactor *
      3. 11.3. Acceptor-Connector **
      4. 11.4. Asynchronous Completion Token **
    4. 12. Interface Partitioning
      1. 12.1. Explicit Interface **
      2. 12.2. Extension Interface **
      3. 12.3. Introspective Interface **
      4. 12.4. Dynamic Invocation Interface *
      5. 12.5. Proxy **
      6. 12.6. Business Delegate **
      7. 12.7. Facade **
      8. 12.8. Combined Method **
      9. 12.9. Iterator **
      10. 12.10. Enumeration Method **
      11. 12.11. Batch Method **
    5. 13. Component Partitioning
      1. 13.1. Encapsulated Implementation **
      2. 13.2. Whole-Part **
      3. 13.3. Composite **
      4. 13.4. Master-Slave *
      5. 13.5. Half-Object plus Protocol **
      6. 13.6. Replicated Component Group *
    6. 14. Application Control
      1. 14.1. Page Controller **
      2. 14.2. Front Controller **
      3. 14.3. Application Controller **
      4. 14.4. Command Processor **
      5. 14.5. Template View **
      6. 14.6. Transform View **
      7. 14.7. Firewall Proxy **
      8. 14.8. Authorization **
    7. 15. Concurrency
      1. 15.1. Half-Sync/Half-Async **
      2. 15.2. Leader/Followers **
      3. 15.3. Active Object **
      4. 15.4. Monitor Object **
    8. 16. Synchronization
      1. 16.1. Guarded Suspension **
      2. 16.2. Future **
      3. 16.3. Thread-Safe Interface *
      4. 16.4. Double-Checked Locking
      5. 16.5. Strategized Locking **
      6. 16.6. Scoped Locking **
      7. 16.7. Thread-Specific Storage
      8. 16.8. Copied Value **
      9. 16.9. Immutable Value **
    9. 17. Object Interaction
      1. 17.1. Observer **
      2. 17.2. Double Dispatch **
      3. 17.3. Mediator *
      4. 17.4. Command **
      5. 17.5. Memento **
      6. 17.6. Context Object **
      7. 17.7. Data Transfer Object **
      8. 17.8. Message **
    10. 18. Adaptation and Extension
      1. 18.1. Bridge **
      2. 18.2. Object Adapter **
      3. 18.3. Chain of Responsibility *
      4. 18.4. Interpreter
      5. 18.5. Interceptor **
      6. 18.6. Visitor **
      7. 18.7. Decorator
      8. 18.8. Execute-Around Object **
      9. 18.9. Template Method *
      10. 18.10. Strategy **
      11. 18.11. Null Object **
      12. 18.12. Wrapper Facade **
      13. 18.13. Declarative Component Configuration *
    11. 19. Modal Behavior
      1. 19.1. Objects for States *
      2. 19.2. Methods for States *
      3. 19.3. Collections for States **
    12. 20. Resource Management
      1. 20.1. Container *
      2. 20.2. Component Configurator *
      3. 20.3. Object Manager **
      4. 20.4. Lookup **
      5. 20.5. Virtual Proxy **
      6. 20.6. Lifecycle Callback **
      7. 20.7. Task Coordinator *
      8. 20.8. Resource Pool **
      9. 20.9. Resource Cache **
      10. 20.10. Lazy Acquisition **
      11. 20.11. Eager Acquisition **
      12. 20.12. Partial Acquisition *
      13. 20.13. Activator **
      14. 20.14. Evictor **
      15. 20.15. Leasing **
      16. 20.16. Automated Garbage Collection **
      17. 20.17. Counting Handle **
      18. 20.18. Abstract Factory **
      19. 20.19. Builder *
      20. 20.20. Factory Method **
      21. 20.21. Disposal Method **
    13. 21. Database Access
      1. 21.1. Database Access Layer **
      2. 21.2. Data Mapper **
      3. 21.3. Row Data Gateway **
      4. 21.4. Table Data Gateway **
      5. 21.5. Active Record
    14. 22. A Departing Thought
    15. Glossary
    16. References