ASP.NET applications are a bit of a contradiction. On the one hand, because they’re hosted over the Internet, they have unique requirements—namely, they need to be able to serve hundreds of clients as easily and quickly as they deal with a single user. On the other hand, ASP.NET includes some remarkable tricks that let you design and code a web application in the same way you program a desktop application. These tricks are useful, but they can lead developers into trouble. The problem is that ASP.NET makes it easy to forget you’re creating a web application—so easy, that you might introduce programming practices that will slow or cripple your application when it’s used by a large number of users in the real world.