ASP and ASP.Net are very different programming languages. ASP is a scripting language, where as ASP.NET is the web formulation of a compiled language (Visual Basic, C#, J#, C++, .Net). Moreover, unlike ASP, ASP.NET is an object-oriented language.
ASP is run under the inetinfo.exe(IIS) process space and is therefore susceptible to application crashes due to IIS being stopped or restarted.
On the other hand, the ASP.NET worker process is a distinct process (aspnet_wp.exe) separate from the IIS process inetinfo.exe. The process model in ASP.NET is unrelated to process isolation settings in IIS.
Interpretation vs. Compilation
When a traditional ASP page is requested, the text of that page is parsed linearly. All content that is not server-side script is rendered as-is back to the response. All server-side script in the page is first run through the appropriate interpreter (JScript or VBScript), the output of which is then rendered back to the response.
In contrast, ASP.NET pages are always compiled into .NET classes housed within assemblies. This class includes all of the server-side code and the static HTML, so once a page is accessed for the first time (or any page within a particular directory is accessed), subsequent rendering of that page is serviced by executing compiled code. This eliminates all the inefficiencies of the scripting model of traditional ASP.
- Since ASP scripts are interpreted on the fly, there is a performance impact. A common optimization for ASP applications, therefore, is to move a lot of server-side script into precompiled COM components to improve response times. Since all components in ASP.NET are assemblies, there is no performance degradation by using server-side code.
- With ASP, intermingling server-side evaluation blocks with static HTML is less efficient than a single server-side script block, because the interpreter has to be invoked multiple times. To avoid this, many ASP developers resort to large blocks of server-side script, replacing static HTML elements with Response.Write() invocations instead. For ASP.NET, such steps are not required for performance improvement.
- ASP allows different blocks of script within a page to be written in different scripting languages. While this may be appealing in some ways, it also degrades performance by requiring that a particular page load both scripting engines (JScript, VBScript) to process a request, which takes more time and memory than using just one language. ASP.NET has "code-behind" in .aspx files that are parsed and compiled. Multiple server-side languages cannot be used within a single .aspx file.
Since ASP involves scripts being interpreted, debugging is difficult. But with ASP.NET, all the tools available to the .NET developer are applicable to the .aspx developer. Errors with pages are generated as compiler errors, and there is a good chance that most errors will be found at compilation time instead of runtime, because VB.NET and C# are both strongly typed languages.