This document provides guidelines for designing web application architecture. It discusses partitioning an application into logical layers, using abstraction to implement loose coupling, reducing round trips, considering caching, logging and instrumentation, avoiding blocking during long-running tasks, authenticating users across trust boundaries, not passing sensitive data in plain text, and running the application using a least-privilege account. It also provides a framework that categorizes common design issues and lists guidelines for key areas like authentication, authorization, caching, and more. The document aims to help architects design secure, high-performance web applications on the Microsoft platform.