Related Links
Patterns & Practices
Microsoft Corporation
December 2002
Applies to:
.NET Framework Version 1.0
Visual Studio .NET Version 2002
SQL Server 2000
Windows 2000
Summary: This guide provides design-level guidance for the architecture and design of .NET Framework applications and services built on Windows 2000 and version 1.0 of the .NET Framework. It focuses on partitioning application functionality into components, walks through their key design characteristics, explains how security, management and communication apply to each layer, and provides information on how the components should be deployed. (This roadmap: 6 printed pages; the entire guide: 120 printed pages)
Application Architecture for .NET: Designing Applications and Services in .pdf format. (1.9 MB, 166 printed pages)
This guide is for you if you are an architect or developer lead or need to:
This guide applies to transactional or OLTP applications that follow a layered design and can be distributed across many physical tiers by using the following technologies: ASP.NET, Web Services, Enterprise Services (COM+), Remoting, ADO.NET, and SQL Server. Some design principles presented in this guide may be useful on other similar scenarios.
Designing distributed applications is no simple task. Many decisions need to be taken at the architecture, design, and implementation levels. These decisions will have an impact on the "abilities" of the application–security, scalability, availability, and maintainability, to name a few–and will have an impact on the architecture, design and implementation of the target infrastructure. This guide will help you understand the choices that arise when designing the layers of a distributed application, and will present these choices as a set of layers of components that you can use to model your application from. Figure 1 shows the logical component layers that this document uses to structure its guidance. These layers are explained, for the most part, in Chapter 2.
Figure 1.0. Component layers found in distributed applications and services built with .NET
Chapter 1: Introduction
This first chapter presents the overall goal of distributed application design, presents how services and service integration relates to traditional application development, and presents a simple retail scenario that is used as a theme for examples in the guide.
Chapter 2: Designing the Components of an Application or Service
This chapter walks you through a distributed application, starting at the user interface, and identifies different types of components or layers commonly used in successful applications. It describes the major technology or design decisions that must be made and the guiding principles for the design of these components.
Chapter 3: Security, Operational Management, and Communications Policies
In this chapter, you learn how different aspects–such as authorization and exception management–affect the design of the application layers, and how design decisions in these areas can permeate through your application. This chapter also discusses the choice of communication mechanisms.
Chapter 4: Physical Deployment and Operational Requirements
This chapter explains how the logical component layers presented above should be deployed in an infrastructure built of many physical tiers and shows common successful deployment patterns that arise when combining the logical component layers, physical tiers, and operational requirements.
Chapter 5: Appendices
The appendices include a glossary, a map of Microsoft products and technologies that allow you to implement or enhance the application component layers discussed in Chapter 2 and a list of related patterns and names applied in the industry to these layers.
To most effectively use this guidance, you should already have experience using .NET development techniques and technologies. You should be familiar with general distributed application architecture issues, and, if you have already implemented .NET Web application solutions, you should know your own application architecture and deployment pattern.
Solution Architect & Program Manager: Edward A. Jezierski
Many thanks to our collaborators, sponsors and reviewers:
Keith Short, Mike Pizzo, Johannes Klein, Rodney Limprecht, Chris Anderson, Anders Hejlsberg, David Treadwell, Jonathan Hawkins, Erik Olson, Brad Rhodes, Rob Howard, Ron Jacobs, John Shewchuck, Luca Bolognese, David Schleifer, Riyaz Pishori, Pablo Castro, Brian Pepin, Mark Boulter, Shawn Burke, Michael Platt, Maarten Mullender, Mike Burner, Dino Chiesa, John Montgomery, Richard Burte, Steve Kirk, Richard Irving, Srinath Vasireddy, Steve Newbury, Sharon Bjeltich, Tom Devey, Kurt Schenk, Bryan Lamos, Paddy Srinivasan, Yves Dolce, Rob Macdonald, Mark Phillips, Blair Shaw, Jeremy Rule, Paul Gomes, Dale Michalk, Martin Petersen-Frey, Angela Crocker, Kenny Jones, Ilia Fortunov, Shantanu Sarkar, Rossen Blagoev, the Think Tank, Bijan Javidi, Bob Jarvis, Aaron Margosis, Maurice Magnier, Doug Orange, Eugenio Pace, Carlos Billy Reynoso, Anthony Menio, Karl Schulmeisters, Ingo Ramner, Bernard Chen (Sapient), Dimitris Georgakopoulos (Sapient), Michael Monteiro (Sapient), Roger Sessions (ObjectWatch), Andrew Roubin, Diego Gonzalez (Lagash), Adrie Geelhoed (CMG), Gerke Geurts (CMG), Sasha Siddhartha, and Franco Ceruti (VBNext).
Prescriptive Architecture Guidance and content team:
Technical Writers: Graeme Malcolm (Content Master Ltd) and Lin Joyner (Content Master Ltd)
Filiberto Selvas Patino, Michael Kropp, Per Vonge Nielsen, Shaun Hayes, J.D. Meier, Rick Maguire, Philip Teale, Ken Perilman, David Trowbridge, Mohammad Al-Sabt, Lars Laakes, Sharon Smith, Chris Sfanos, Claudia Iebbiano (Wadeware) and the architecture review board from Satyam Computer Services Ltd.
To start understanding how application design can differ from service design, jump right into Chapter 1, "Introduction."
Questions on this guide? Comments? Suggestions? To provide feedback on this guide, please send e-mail to [email protected].
Use this newsgroup to consult with your counterparts, peers, and Microsoft Support Professionals in an online, open forum. Everyone else benefits from your questions and comments, and our development team is monitoring the newsgroup on a periodic basis:
Newsgroup: Web-Based Reader
Newsgroup: NNTP Reader
news://msnews.microsoft.com/microsoft.public.dotnet.distributed_apps
The sample code and guidance is provided as-is. Support is available through Microsoft Product Support for a fee.