Designing application and middleware software to run in concurrent and networked environments is a significant challenge to software developers. The patterns catalogued in this second volume of Pattern-Oriented Software Architectures (POSA) form the basis of a pattern language that addresses issues associated with concurrency and networking.
The book presents 17 interrelated patterns ranging from idioms through architectural designs. They cover core elements of building concurrent and network systems: service access and configuration, event handling, synchronization, and concurrency. All patterns present extensive examples and known uses in multiple programming languages, including C++, C, and Java.
The book can be used to tackle specific software development problems or read from cover to cover to provide a fundamental understanding of the best practices for constructing concurrent and networked applications and middleware.
About the Authors
This book has been written by the award winning team responsible for the first POSA volume "A System of Patterns", joined in this volume by Douglas C. Schmidt from University of California, Irvine (UCI), USA.
Visit our Web Page
About the Author
Douglas C. Schmidt, University of California, Irvine (UCI), USA.
Michael Stal is the authors of Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects, published by Wiley.
Hans Rohnert is the authors of Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects, published by Wiley.
Frank Buschmann is the authors of Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects, published by Wiley.
Read an Excerpt
Chapter 1: Concurrent andNetworked Objects"With the exception o/music, we have been trained to think of patterns as fixed affairs. It's easier and The right way to begin to think of the pattern which connects is to think of a dance o/'interacting parts, Gregory Bateson - Cultural Anthropologist This chapter introduces topics related to concurrent and networked objects. We first motivate the need for advanced software development techniques in this area. Next, we present an overview of key design challenges faced by developers of concurrent and networked objectoriented applications and middleware. To illustrate how patterns can be applied to resolve these problems, we examine a case study of an object-oriented framework and a high-performance Web server implemented using this framework. In the case study we focus on key patterns presented in this book that help to simplify four important aspects of concurrent and networked applications:
- Service access and configuration
- Event handling
- Synchronization and Concurrency
Desktop computer clock speeds will run at - 100 Gigahertz
Local area network link speeds will run at - 100 Gigabits/second
Wireless link speeds will run at - 100 Megabits/ second and
The Internet backbone link speeds will run at - 10 Terabits/ second Moreover, there will be billions of interactive and embedded computing and communication devices in operation throughout the world. These powerful computers and networks will be available largely at commodity prices, built mostly with robust common-off the-shelf (COTS) components, and will inter-operate over an increasingly convergent and pervasive Internet infrastructure. To maximize the benefit from these advances in hardware technology, the quality and productivity of technologies for developing concurrent and networked middleware and application software must also increase. Historically, hardware has tended to become smaller, faster, and more reliable. It has also become cheaper and more predictable to develop and innovate, as evidenced by 'Moore's Law'. In contrast, concurrent and networked software has often grown larger, slower, and more error-prone. It has also become very expensive and timeconsuming to develop, validate, maintain, and enhance.
Although hardware improvements have alleviated the need for some low-level software optimizations, the lifecycle cost [Boe81] and effort required to develop software-particularly mission-critical concurrent and networked applications-continues to rise. The disparity between the rapid rate of hardware advances versus the slower software progress stems from a number of factors, including:
Inherent and accidental complexities. There are vexing problems with concurrent and networked software that result from inherent and accidental complexities...
Table of ContentsAbout This Book.
About The Authors.
Guide To The Reader.
1 Concurrent and Distributed Objects
2 The Patterns.
2.2 Service Access Patterns.
2.3 Event Handling Patterns.
Asynchronous Completion Token.
2.4 Initialization Patterns.
2.5 Synchronization Patterns.
Double Checked Locking Optimization.
2.6 Concurrency Patterns.
3 Tying the Patterns Together.
3.1 From Individual Patterns To Pattern Languages.
3.2 A Pattern Language for Distributed.
3.3 Beyond Networking, Distribution, and Concurrency Notations.
Index of Patterns.