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.

patterns & practices Developer Center

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 the .pdf version of this guide from the Microsoft.com Download Center.


"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



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:

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:

Chapter 6: Services Patterns

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:

Appendix A: Pattlets

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.


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.

patterns & practices Developer Center