Chapter 1, “Patterns for Building Enterprise Solutions,” introduces the notion of a pattern, explains how a pattern documents simple, proven mechanisms, and shows how collections of patterns provide a common language for developers and architects. To illustrate these concepts, this chapter applies abbreviated versions of actual patterns to real-life development situations.
Chapter 2, “Organizing Patterns,” explains how patterns emerge at different levels of abstraction and across a variety of domains. This chapter explores pattern levels in detail and outlines an organizing frame that helps you find relevant patterns quickly. The chapter then demonstrates how patterns provide a vocabulary to efficiently describe complex solutions without sacrificing detail.
Chapters 3 through 6 present a catalog of 27 patterns, which are grouped into clusters. Each chapter starts by describing how the patterns in a particular cluster are related and then gives direction on when to use the patterns. For implementation patterns, code examples are written in C# and are for example purposes only. The example code is not meant to be used in production.
Chapter 3, “Web Presentation Patterns,” describes design and implementation patterns related to constructing dynamic Web applications. Depending on the size and the complexity of the application, different design tradeoffs have to be made. The Web Presentation patterns cluster offers a number of pattern alternatives that illustrate the varied types of applications and their resulting tradeoffs.
Chapter 4, “Deployment Patterns,” helps reduce the tension between application development and system infrastructure teams by offering guidance on how to optimally structure your applications and technical infrastructure to efficiently fulfill your solution requirements. The patterns discuss such topics as organizing your application into logical layers, refining layers to provide and consume services, organizing hardware into physical tiers, and allocating processes to processors with a deployment plan.
Chapter 5, “Distributed Systems Patterns,” introduces concepts relevant to both the Distributed Systems and Services patterns clusters, including the distinction between interface-based and service-based collaboration and the concept of near versus far links. Distributed Systems patterns, as defined here, focus on instance-based collaboration and near links.
Chapter 6, “Services Patterns,” briefly revisits collaboration concepts introduced in the previous chapter before presenting patterns that focus on collaboration between applications and external services. In contrast with Distributed Systems, Services patterns are primarily concerned with systems connected by far links using service-based collaboration.
Chapter 7, “Performance and Reliability Patterns,” discusses how enterprise solutions must reliably meet the needs of an unpredictable number of users, and often must operate 24 hours a day, seven days a week. Although there are many ways to increase performance and improve reliability, this patterns cluster focuses how to combine multiple systems that serve any number of applications or users for greater scalability and improved availability.
Appendix A, “Pattlets,” presents a list of patterns that this guide mentions, but that it does not discuss in detail. These patterns are named pattlets to distinguish them from the rest of the patterns in the catalog. For more information about why pattlets are used, see Chapter 2, “Organizing Patterns.”