ASP.NET Overview for IIS
ASP.NET was developed to make it much easier to develop dynamic, scalable Web applications. ASP was easy to use and made the creation of dynamic Web content easy, but as the complexity of the dynamic content increased, the code necessary to enable complex pages became unmanageable. ASP.NET simplifies the creation of complex pages by providing pre-built server-side controls and object types that Web developers can use much like the drag-and-drop controls that Windows developers use to develop Windows desktop applications.
ASP.NET is installed along with the .NET Framework version 1.1 as a part of each of the Windows Server 2003 family of products. You simply need to add it as a new program from the Control Panel or use the Configure Your Server Wizard to enable it. For more information, see ASP.NET Platform Requirements.
On servers running Windows Server 2003, when you use the Configure Your Server Wizard or the Add or Remove Programs dialog box to install ASP.NET, ASP.NET is automatically enabled in IIS Manager. However, if you install ASP.NET from a Web download or as part of an application download such as Visual Studio? .NET development system, you must enable ASP.NET manually. For instructions, see Enabling ASP, ASP.NET, CGI, and ISAPI Extensions.
ASP.NET functionality is contained in an ISAPI dll called Aspnet_isapi.dll. When IIS receives a request for a resource with an extension .aspx or .ascx it first applies IIS security rules to authenticate the user, and then calls aspnet_isapi.dll to process the request.
Aspnet_isapi.dll is native C++ code which runs in the IIS process. It communicates with Aspnet_wp.exe, the worker process that hosts the .NET Framework. All the resources of the framework, including ADO.NET are available to ASP.NET.
Aspnet_isapi.dll can be viewed by the Visual C++ Dependency Walker tool for its exported functions, but cannot be viewed by .NET MSIL Disassembler (Ildasm.exe) tool.
ASP.NET is highly extendible. New object types and custom server controls can be created in any .NET CLS-compliant programming language. The code-behind development model allows developers to create just about any functionality, compile it into a dll library and import it into a Web page. See the topics Introduction to Web Forms Pages and Developing ASP.NET Server Controls.
ASP.NET is built around an extensible architecture known as the HTTP runtime. The runtime handles requests and delivers responses. The runtime is designed like an execution pipeline where any number of components can be daisy-chained together. HTTP modules and HTTP filters are components that can be added to the pipeline by developers to customize the request/response chain of events. HTTP modules are equivalent to ISAPI filters; HTTP handlers are equivalent to ISAPI extensions.
Information on developing secure ASP.NET applications is fully covered in the .NET Frameworks SDK under the following sections:
ASP Compared to ASP.NET
ASP.NET provides a unified Web development model that includes the services necessary for you to build enterprise-class Web applications. While ASP.NET is largely syntax compatible with Active Server Pages (ASP), it provides a new programming model and infrastructure that allow you to create a powerful new class of applications. ASP.NET is part of the .NET Framework and allows you to take full advantage of the features of the common language runtime, such as type safety, inheritance, language interoperability, and versioning.
When IIS receives a request for an .asp page, it calls the ASP application, the ISAPI extension ASP.dll, to process the request. ASP and ASP.NET are processed by different applications. Therefore, an ASP application cannot communicate with an ASP.NET application.
ISAPI Compared to ASP.NET
ASP.NET is extremely rich. There is a huge amount of functionality out of the box that saves development time when building complex Web sites, on-line stores, and Web services.
ASP.NET is easily extensible with HTTP modules and HTTP handlers that can be developed in any CLR-compliant language, not just in C++ (or Delphi) as with ISAPIs. HTTP modules and handlers are defined in the ASP.NET SDK.