Application Architecture for .NET: Designing Applications and Services 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 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.

Intended Audience:

This guide is for you if you are an architect or developer lead or need to:

- Determine how an application will be split into components,
- Choose what technologies will be used in a transactional line of business application or service,
- Design what management and security policies should be applied, and
- Decide how the application will be deployed.

Prerequisites:

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.

:| "For inexperienced developers or people just starting out on the path of good software architecture, this book may provide some insights, but doesn't offer much practical advice on how to solve concrete problems."

:) "I strongly believe that software engineers need to read more abstract, general books such as this along with the specific, applicable type books. The help keeps us focused on problem solving as opposed to solution techniques. Both are needed to keep us fresh and effective in out roles."