{"product_id":"pattern-oriented-software-architecture-a-pattern-language-for-distributed-computing-isbn-9780470059029","title":"Pattern-Oriented Software Architecture, A Pattern Language for Distributed Computing","description":"The eagerly awaited \u003cb\u003ePattern-Oriented Software Architecture (POSA) Volume 4\u003c\/b\u003e is about a pattern language for distributed computing.  \u003cp\u003eThe 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.\u003c\/p\u003e \u003cul\u003e \u003cli\u003eThe panel of experts provides you with a consistent and coherent holistic view on the craft of building distributed systems.\u003c\/li\u003e \u003cli\u003eIncludes a foreword by Martin Fowler\u003c\/li\u003e \u003cli\u003eA must read for practitioners who want practical advice to develop a comprehensive language integrating patterns from key literature.\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003eForeword xv\u003c\/p\u003e \u003cp\u003eAbout This Book xvii\u003c\/p\u003e \u003cp\u003eAbout The Authors xxiii\u003c\/p\u003e \u003cp\u003eGuide To The Reader xxvii\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart I Some Concepts 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e1 On Patterns and Pattern Languages 3\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e1.1 Patterns Introduced 4\u003c\/p\u003e \u003cp\u003e1.2 Inside Patterns 6\u003c\/p\u003e \u003cp\u003e1.3 Between Patterns 10\u003c\/p\u003e \u003cp\u003e1.4 Into Pattern Languages 13\u003c\/p\u003e \u003cp\u003e1.5 Patterns Connected 15\u003c\/p\u003e \u003cp\u003e\u003cb\u003e2 On Distributed Systems 17\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e2.1 Benefits of Distribution 18\u003c\/p\u003e \u003cp\u003e2.2 Challenges of Distribution 20\u003c\/p\u003e \u003cp\u003e2.3 Technologies for Supporting Distribution 22\u003c\/p\u003e \u003cp\u003e2.4 Limitations of Middleware 32\u003c\/p\u003e \u003cp\u003e\u003cb\u003e3 On the Pattern Language 33\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e3.1 Intent, Scope, and Audience 34\u003c\/p\u003e \u003cp\u003e3.2 Origins and Genesis 35\u003c\/p\u003e \u003cp\u003e3.3 Structure and Content 36\u003c\/p\u003e \u003cp\u003e3.4 Presentation 44\u003c\/p\u003e \u003cp\u003e3.5 Practical Use 49\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart II A Story 53\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e4 Warehouse Management Process Control 57\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e4.1 System Scope 58\u003c\/p\u003e \u003cp\u003e4.2 Warehouse Management Process Control 60\u003c\/p\u003e \u003cp\u003e\u003cb\u003e5 Baseline Architecture 65\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e5.1 Architecture Context 66\u003c\/p\u003e \u003cp\u003e5.2 Partitioning the Big Ball of Mud 67\u003c\/p\u003e \u003cp\u003e5.3 Decomposing the Layers 68\u003c\/p\u003e \u003cp\u003e5.4 Accessing Domain Object Functionality 71\u003c\/p\u003e \u003cp\u003e5.5 Bridging the Network 72\u003c\/p\u003e \u003cp\u003e5.6 Separating User Interfaces 76\u003c\/p\u003e \u003cp\u003e5.7 Distributing Functionality 79\u003c\/p\u003e \u003cp\u003e5.8 Supporting Concurrent Domain Object Access 82\u003c\/p\u003e \u003cp\u003e5.9 Achieving Scalable Concurrency 85\u003c\/p\u003e \u003cp\u003e5.10 Crossing the Object-Oriented\/Relational Divide 87\u003c\/p\u003e \u003cp\u003e5.11 Configuring Domain Objects at Runtime 89\u003c\/p\u003e \u003cp\u003e5.12 Baseline Architecture Summary 90\u003c\/p\u003e \u003cp\u003e\u003cb\u003e6 Communication Middleware 95\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e6.1 A Middleware Architecture for Distributed Systems 96\u003c\/p\u003e \u003cp\u003e6.2 Structuring the Internal Design of the Middleware 100\u003c\/p\u003e \u003cp\u003e6.3 Encapsulating Low-level System Mechanisms 103\u003c\/p\u003e \u003cp\u003e6.4 Demultiplexing ORB Core Events 105\u003c\/p\u003e \u003cp\u003e6.5 Managing ORB Connections 108\u003c\/p\u003e \u003cp\u003e6.6 Enhancing ORB Scalability 111\u003c\/p\u003e \u003cp\u003e6.7 Implementing a Synchronized Request Queue 114\u003c\/p\u003e \u003cp\u003e6.8 Interchangeable Internal ORB Mechanisms 116\u003c\/p\u003e \u003cp\u003e6.9 Consolidating ORB Strategies 118\u003c\/p\u003e \u003cp\u003e6.10 Dynamic Configuration of ORBs 121\u003c\/p\u003e \u003cp\u003e6.11 Communication Middleware Summary 124\u003c\/p\u003e \u003cp\u003e\u003cb\u003e7 Warehouse Topology 129\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e7.1 Warehouse Topology Baseline 130\u003c\/p\u003e \u003cp\u003e7.2 Representing Hierarchical Storage 131\u003c\/p\u003e \u003cp\u003e7.3 Navigating the Storage Hierarchy 133\u003c\/p\u003e \u003cp\u003e7.4 Modeling Storage Properties 135\u003c\/p\u003e \u003cp\u003e7.5 Varying Storage Behavior 137\u003c\/p\u003e \u003cp\u003e7.6 Realizing Global Functionality 140\u003c\/p\u003e \u003cp\u003e7.7 Traversing the Warehouse Topology 142\u003c\/p\u003e \u003cp\u003e7.8 Supporting Control Flow Extensions 144\u003c\/p\u003e \u003cp\u003e7.9 Connecting to the Database 146\u003c\/p\u003e \u003cp\u003e7.10 Maintaining In-Memory Storage Data 147\u003c\/p\u003e \u003cp\u003e7.11 Configuring the Warehouse Topology 149\u003c\/p\u003e \u003cp\u003e7.12 Detailing the Explicit Interface 151\u003c\/p\u003e \u003cp\u003e7.13 Warehouse Topology Summary 153\u003c\/p\u003e \u003cp\u003e\u003cb\u003e8 The Story Behind The Pattern Story 157\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart III The Language 163\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e9 From Mud To Structure 167\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDomain Model ** 182\u003c\/p\u003e \u003cp\u003eLayers ** 185\u003c\/p\u003e \u003cp\u003eModel-View-Controller ** 188\u003c\/p\u003e \u003cp\u003ePresentation-Abstraction-Control 191\u003c\/p\u003e \u003cp\u003eMicrokernel ** 194\u003c\/p\u003e \u003cp\u003eReflection * 197\u003c\/p\u003e \u003cp\u003ePipes and Filters ** 200\u003c\/p\u003e \u003cp\u003eShared Repository ** 202\u003c\/p\u003e \u003cp\u003eBlackboard 205\u003c\/p\u003e \u003cp\u003eDomain Object ** 208\u003c\/p\u003e \u003cp\u003e\u003cb\u003e10 Distribution Infrastructure 211\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eMessaging ** 221\u003c\/p\u003e \u003cp\u003eMessage Channel ** 224\u003c\/p\u003e \u003cp\u003eMessage Endpoint ** 227\u003c\/p\u003e \u003cp\u003eMessage Translator ** 229\u003c\/p\u003e \u003cp\u003eMessage Router ** 231\u003c\/p\u003e \u003cp\u003ePublisher-Subscriber ** 234\u003c\/p\u003e \u003cp\u003eBroker ** 237\u003c\/p\u003e \u003cp\u003eClient Proxy ** 240\u003c\/p\u003e \u003cp\u003eRequestor ** 242\u003c\/p\u003e \u003cp\u003eInvoker ** 244\u003c\/p\u003e \u003cp\u003eClient Request Handler ** 246\u003c\/p\u003e \u003cp\u003eServer Request Handler ** 249\u003c\/p\u003e \u003cp\u003e\u003cb\u003e11 Event Demultiplexing and Dispatching 253\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eReactor ** 259\u003c\/p\u003e \u003cp\u003eProactor * 262\u003c\/p\u003e \u003cp\u003eAcceptor-Connector ** 265\u003c\/p\u003e \u003cp\u003eAsynchronous Completion Token ** 268\u003c\/p\u003e \u003cp\u003e\u003cb\u003e12 Interface Partitioning 271\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eExplicit Interface ** 281\u003c\/p\u003e \u003cp\u003eExtension Interface ** 284\u003c\/p\u003e \u003cp\u003eIntrospective Interface ** 286\u003c\/p\u003e \u003cp\u003eDynamic Invocation Interface * 288\u003c\/p\u003e \u003cp\u003eProxy ** 290\u003c\/p\u003e \u003cp\u003eBusiness Delegate ** 292\u003c\/p\u003e \u003cp\u003eFacade ** 294\u003c\/p\u003e \u003cp\u003eCombined Method ** 296\u003c\/p\u003e \u003cp\u003eIterator ** 298\u003c\/p\u003e \u003cp\u003eEnumeration Method ** 300\u003c\/p\u003e \u003cp\u003eBatch Method ** 302\u003c\/p\u003e \u003cp\u003e\u003cb\u003e13 Component Partitioning 305\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eEncapsulated Implementation ** 313\u003c\/p\u003e \u003cp\u003eWhole-Part ** 317\u003c\/p\u003e \u003cp\u003eComposite ** 319\u003c\/p\u003e \u003cp\u003eMaster-Slave * 321\u003c\/p\u003e \u003cp\u003eHalf-Object plus Protocol ** 324\u003c\/p\u003e \u003cp\u003eReplicated Component Group * 326\u003c\/p\u003e \u003cp\u003e\u003cb\u003e14 Application Control 329\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003ePage Controller ** 337\u003c\/p\u003e \u003cp\u003eFront Controller ** 339\u003c\/p\u003e \u003cp\u003eApplication Controller ** 341\u003c\/p\u003e \u003cp\u003eCommand Processor ** 343\u003c\/p\u003e \u003cp\u003eTemplate View ** 345\u003c\/p\u003e \u003cp\u003eTransform View ** 347\u003c\/p\u003e \u003cp\u003eFirewall Proxy ** 349\u003c\/p\u003e \u003cp\u003eAuthorization ** 351\u003c\/p\u003e \u003cp\u003e\u003cb\u003e15 Concurrency 353\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eHalf-Sync\/Half-Async ** 359\u003c\/p\u003e \u003cp\u003eLeader\/Followers ** 362\u003c\/p\u003e \u003cp\u003eActive Object ** 365\u003c\/p\u003e \u003cp\u003eMonitor Object ** 368\u003c\/p\u003e \u003cp\u003e\u003cb\u003e16 Synchronization 371\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGuarded Suspension ** 380\u003c\/p\u003e \u003cp\u003eFuture ** 382\u003c\/p\u003e \u003cp\u003eThread-Safe Interface * 384\u003c\/p\u003e \u003cp\u003eDouble-Checked Locking 386\u003c\/p\u003e \u003cp\u003eStrategized Locking ** 388\u003c\/p\u003e \u003cp\u003eScoped Locking ** 390\u003c\/p\u003e \u003cp\u003eThread-Specific Storage 392\u003c\/p\u003e \u003cp\u003eCopied Value ** 394\u003c\/p\u003e \u003cp\u003eImmutable Value ** 396\u003c\/p\u003e \u003cp\u003e\u003cb\u003e17 Object Interaction 399\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eObserver ** 405\u003c\/p\u003e \u003cp\u003eDouble Dispatch ** 408\u003c\/p\u003e \u003cp\u003eMediator * 410\u003c\/p\u003e \u003cp\u003eCommand ** 412\u003c\/p\u003e \u003cp\u003eMemento ** 414\u003c\/p\u003e \u003cp\u003eContext Object ** 416\u003c\/p\u003e \u003cp\u003eData Transfer Object ** 418\u003c\/p\u003e \u003cp\u003eMessage ** 420\u003c\/p\u003e \u003cp\u003e\u003cb\u003e18 Adaptation and Extension 423\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBridge ** 436\u003c\/p\u003e \u003cp\u003eObject Adapter ** 438\u003c\/p\u003e \u003cp\u003eChain of Responsibility * 440\u003c\/p\u003e \u003cp\u003eInterpreter 442\u003c\/p\u003e \u003cp\u003eInterceptor ** 444\u003c\/p\u003e \u003cp\u003eVisitor ** 447\u003c\/p\u003e \u003cp\u003eDecorator 449\u003c\/p\u003e \u003cp\u003eExecute-Around Object ** 451\u003c\/p\u003e \u003cp\u003eTemplate Method * 453\u003c\/p\u003e \u003cp\u003eStrategy ** 455\u003c\/p\u003e \u003cp\u003eNull Object ** 457\u003c\/p\u003e \u003cp\u003eWrapper Facade ** 459\u003c\/p\u003e \u003cp\u003eDeclarative Component Configuration * 461\u003c\/p\u003e \u003cp\u003e\u003cb\u003e19 Modal Behavior 463\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eObjects for States * 467\u003c\/p\u003e \u003cp\u003eMethods for States * 469\u003c\/p\u003e \u003cp\u003eCollections for States ** 471\u003c\/p\u003e \u003cp\u003e\u003cb\u003e20 Resource Management 473\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eContainer * 488\u003c\/p\u003e \u003cp\u003eComponent Configurator * 490\u003c\/p\u003e \u003cp\u003eObject Manager ** 492\u003c\/p\u003e \u003cp\u003eLookup ** 495\u003c\/p\u003e \u003cp\u003eVirtual Proxy ** 497\u003c\/p\u003e \u003cp\u003eLifecycle Callback ** 499\u003c\/p\u003e \u003cp\u003eTask Coordinator * 501\u003c\/p\u003e \u003cp\u003eResource Pool ** 503\u003c\/p\u003e \u003cp\u003eResource Cache ** 505\u003c\/p\u003e \u003cp\u003eLazy Acquisition ** 507\u003c\/p\u003e \u003cp\u003eEager Acquisition ** 509\u003c\/p\u003e \u003cp\u003ePartial Acquisition * 511\u003c\/p\u003e \u003cp\u003eActivator ** 513\u003c\/p\u003e \u003cp\u003eEvictor ** 515\u003c\/p\u003e \u003cp\u003eLeasing ** 517\u003c\/p\u003e \u003cp\u003eAutomated Garbage Collection ** 519\u003c\/p\u003e \u003cp\u003eCounting Handle ** 522\u003c\/p\u003e \u003cp\u003eAbstract Factory ** 525\u003c\/p\u003e \u003cp\u003eBuilder * 527\u003c\/p\u003e \u003cp\u003eFactory Method ** 529\u003c\/p\u003e \u003cp\u003eDisposal Method ** 531\u003c\/p\u003e \u003cp\u003e\u003cb\u003e21 Database Access 533\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDatabase Access Layer ** 538\u003c\/p\u003e \u003cp\u003eData Mapper ** 540\u003c\/p\u003e \u003cp\u003eRow Data Gateway ** 542\u003c\/p\u003e \u003cp\u003eTable Data Gateway ** 544\u003c\/p\u003e \u003cp\u003eActive Record 546\u003c\/p\u003e \u003cp\u003e\u003cb\u003e22 A Departing Thought 549\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGlossary 553\u003c\/p\u003e \u003cp\u003eReferences 573\u003c\/p\u003e \u003cp\u003eIndex of Patterns 587\u003c\/p\u003e \u003cp\u003eIndex of Names 593\u003c\/p\u003e \u003cp\u003eSubject Index 595\u003c\/p\u003e \"The authors' decision to include a real-life use case was a good strategy it illustrate the application of the pattern language.\" (\u003ci\u003eComputing Reviews\u003c\/i\u003e, February 15, 2008) \u003cp\u003eMany patterns in the software literature focus on distributed computing. Until recently, there has been no holistic view of distributed computing that emphasizes how groups of patterns complete and complement each other. Building complex distributed systems has therefore been a craft that many have tried, but few have mastered. The eagerly anticipated \u003ci\u003ePattern-Oriented Software Architecture (POSA) Volume 4\u003c\/i\u003e provides the missing link in the development of software for distributed systems: it provides a holistic view for distributed computing. \u003c\/p\u003e \u003cp\u003eLeading experts, Frank Buschmann, Kevlin Henney, and Douglas C. Schmidt describe a pattern language that links hundreds of patterns relevant for distributed computing. The authors guide you through the best practices in key areas of developing software for distributed computing systems. \u003ci\u003ePOSA 4\u003c\/i\u003e connects many stand-alone patterns, pattern collections, and languages from the existing body of literature found in the POSA series and other respected sources. The authors explain what pattern languages are and how to use them effectively, by comparing various patterns and distributed computing paradigms. \u003c\/p\u003e\u003cp\u003eThe material covers \u003ci\u003econcepts\u003c\/i\u003e, which provides the context of the book; a \u003ci\u003estory\u003c\/i\u003e, which describes how a real-world process control system for warehouse management was designed with the authors’ pattern \u003ci\u003elanguage\u003c\/i\u003e for distributed computing; and the language itself, which forms the main part of the book. The language addresses technical topics relevant for building distributed systems, such as:\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003e\u003ci\u003eObject interaction\u003c\/i\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ci\u003eInterface and component partitioning\u003c\/i\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ci\u003eApplication control\u003c\/i\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ci\u003eResource management\u003c\/i\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ci\u003eConcurrency and synchronization\u003c\/i\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003e\u003ci\u003ePOSA 4\u003c\/i\u003e is also the only book to offer practical advice demonstrating how to integrate patterns from key literature to provide a comprehensive pattern language for developing distributed computing middleware and applications.\u003c\/p\u003e","brand":"Wiley","offers":[{"title":"Default Title","offer_id":47989755642085,"sku":"NP9780470059029","price":68.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9780470059029.jpg?v=1761785368","url":"https:\/\/k12savings.com\/products\/pattern-oriented-software-architecture-a-pattern-language-for-distributed-computing-isbn-9780470059029","provider":"K12savings","version":"1.0","type":"link"}