ASP e ASP.Net sono linguaggi di programmazione molto diversi. ASP è un linguaggio di scripting, dove as ASP.NET è la formulazione web di un linguaggio compilato (Visual Basic, C #, J #, C ++, .Net). Inoltre, a differenza di ASP, ASP.NET è un linguaggio orientato agli oggetti.
ASP viene eseguito nello spazio del processo inetinfo.exe (IIS) ed è quindi suscettibile di arresti anomali delle applicazioni a causa dell'arresto o del riavvio di IIS.
D'altra parte, il processo di lavoro ASP.NET è un processo distinto (aspnet_wp.exe) separato dal processo IIS inetinfo.exe. Il modello di processo in ASP.NET non è correlato alle impostazioni di isolamento dei processi in IIS.
Quando viene richiesta una pagina ASP tradizionale, il testo di quella pagina viene analizzato linearmente. Tutto il contenuto che non è uno script sul lato server viene reso come-è tornato alla risposta. Tutti gli script lato server nella pagina vengono prima eseguiti tramite l'interprete appropriato (JScript o VBScript), il cui output viene quindi restituito alla risposta.
Al contrario, le pagine ASP.NET vengono sempre compilate in classi .NET ospitate all'interno di assiemi. Questa classe include tutto il codice lato server e l'HTML statico, quindi quando si accede a una pagina per la prima volta (o si accede a qualsiasi pagina all'interno di una particolare directory), il rendering successivo di tale pagina viene servito eseguendo codice compilato. Ciò elimina tutte le inefficienze del modello di scripting dell'ASP tradizionale.
Poiché ASP implica l'interpretazione degli script, il debug è difficile. Ma con ASP.NET, tutti gli strumenti disponibili per lo sviluppatore .NET sono applicabili allo sviluppatore .aspx. Gli errori con le pagine sono generati come errori del compilatore e ci sono buone probabilità che la maggior parte degli errori vengano rilevati al momento della compilazione invece del runtime, poiché VB.NET e C # sono entrambi linguaggi fortemente tipizzati.