An ASP.NET application consists of files, pages, handlers, modules and executable code that can be invoked from a virtual directory. Unlike a Windows application, users do not directly run an ASP.NET application - requests are passed to the ASP.NET worker process. Web pages in the same virtual directory execute in the same application domain. The global.asax file allows handling of application-level events, and configuration is managed through XML configuration files like web.config. ASP.NET uses lazy initialization to create application domains on the first request, and recycles domains periodically to maintain performance.