Enterprise Solution Patterns Using Microsoft .NET
Retired Content |
---|
This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist. Please see the patterns & practices guidance for the most current information. |
Version 1.1.0
Complete List of patterns & practices
Authors: David Trowbridge, Microsoft Prescriptive Architecture Guidance; Dave Mancini and Dave Quick, Microsoft Core Infrastructure Solutions; Gregor Hohpe and James Newkirk, ThoughtWorks, Inc.; David Lavigne, SBI and Company
Microsoft Corporation
June 2003
Summary: This document provides a brief overview of Enterprise Solution Patterns Using Microsoft .NET, which embraces existing work in the patterns community, contributes new patterns, and shows how to implement these patterns in .NET. Included in the guide are an introduction to patterns and a catalog of 32 architecture, design, and implementation patterns.
Download
Download the .pdf version of this guide from the Microsoft.com Download Center.
Introduction
"Enterprise developers and administrators should study these and other patterns not just because they offer advice that can be applied immediately, but because they provide a vocabulary to talk about intellectual property independent of that property." - From the Foreword by Ward Cunningham
Enterprise Solution Patterns Using Microsoft .NET introduces patterns and then presents them in a repository, or catalog, organized to help you locate the right combination of patterns that solve your problem. The Pattern Frame, shown in Figure 1, is used throughout this documentation to delineate the problem space and show the relationships between patterns.
Figure 1: The Pattern Frame
The rows of the Pattern Frame represent progressive levels of abstraction: architecture, design, and implementation. The columns represent viewpoints, or lenses into the solution, which include database, application, deployment, and infrastructure perspectives. The chapters of the guide group the patterns into patterns clusters by subject area.
Who Should Read This Guide
This guide is written for readers in one or more of the following categories:
Architects, designers, and developers who are new to patterns
Architects and designers who are already experienced in using patterns to build enterprise solutions
System architects and system engineers who architect or design systems infrastructure
Contents
Ward Cunningham discusses the merits of patterns in general and how this catalog extends the work of the patterns community.
Chapter 1: Patterns for Building Enterprise Solutions
This chapter 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
In recent years, patterns have emerged at different levels of abstraction and across a variety of domains. Chapter 2 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.
Chapter 3: Web Presentation Patterns
The Web Presentation patterns cluster 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 cluster offers a number of pattern alternatives that illustrate the varied types of applications and their resulting tradeoffs.
This chapter includes the following patterns:
Implementing Intercepting Filter in ASP.NET Using HTTP Module
Implementing Page Cache in ASP.NET Using Absolute Expiration
Chapter 4: Deployment Patterns
The patterns in the Deployment cluster help 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.
This chapter includes the following patterns:
Chapter 5: Distributed Systems Patterns
This patterns cluster introduces concepts relevant to both the Distributed Systems and Service 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.
This chapter includes the following patterns:
Implementing Broker with .NET Remoting Using Server-Activated Objects
Implementing Broker with .NET Remoting Using Client-Activated Objects
Implementing Data Transfer Object in .NET with a Typed DataSet
The Services patterns cluster 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.
This chapter includes the following patterns:
Chapter 7: Performance and Reliability Patterns
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.
This chapter includes the following patterns:
Pattlets are actual patterns to which this guide refers, but which it does not discuss in detail. The appendix lists all of the pattlets defined in this pattern catalog. The concept of pattlets is discussed in Chapter 2, "Organizing Patterns."
Feedback and Support
Questions? Comments? Suggestions? For feedback on this guide, please send e-mail to pnppatfb@microsoft.com.
The patterns documented here are designed to jump-start the architecture and design of enterprise applications. Patterns are simple mechanisms that are meant to be applied to the problem at hand and are usually combined with other patterns. They are not meant to be plugged into an application. Example code is provided "as is" and is not intended for production use. It is only intended to illustrate the pattern, and therefore does not include extra code such as exception handling, logging, security, and validation. Although this deliverable has undergone testing and review by industry luminaries it is not supported like a traditional Microsoft product.
Collaborators
Many thanks to the following advisors who provided invaluable assistance:
Ward Cunningham, Cunningham & Cunningham, Inc.
Martin Fowler, ThoughtWorks, Inc.
Ralph Johnson, University of Illinois at Urbana-Champaign
Robert C. Martin, Object Mentor
Thanks also to the many contributors who assisted us in the production of this guide, in particular:
Mohammad Al-Sabt, Microsoft Prescriptive Architecture Guidance
Chris Colleran, Colleran.net, LLC
Matthew Evans, Microsoft Prescriptive Architecture Guidance
Xiao Guo, ThoughtWorks, Inc.
Steve Kirk, MSDN
Rick McUmber, RDA
Vijay Srinivasan, Satyam Computer Services
Jonathan Wanagel, Microsoft Prescriptive Architecture Guidance
Finally, thanks to the companies that agreed to participate in our user experience test:
Atmedica USA, LLC, a MediMedia USA company
RDA
Safeco Insurance Company
SBI and Company
ThoughtWorks, Inc.