ASPNL logo (1 kb)
zaterdag 17 mei 2008




Microsoft MVP

.NET Codewise Community
<< vorige | overzicht | volgende >>

De verschillen tussen ASP en ASP.NET samengevat

Door Charles Carroll
3 februari 2003

ASP en ASP.NET stoelen wel op dezelfde principes, maar zijn qua aanpak radicaal anders. Hieronder vind je de belangrijkste verschillen op een rijtje.

Object ondersteuning

ASP

  • ASP bevat zes objecten. De componenten zijn interface gebaseerd (niet object gebaseerd), en worden derhalve vaak componenten genoemd.
  • De ingebouwde objecten in ASP kunnen uitgebreid worden met COM objecten of COM+ (inclusief transacties). De COM/COM+ objecten kunnen communiceren met ASP objecten, maar je kunt ook generieke objecten maken die ook bruikbaar zijn in andere soorten applicaties. ASP ondersteunt alleen de standaard COM/COM+ interface, en niet eventuele additionele interfaces.

ASP.NET

  • Kan COM/ COM+ objecten gebruiken (maar er zijn betere alternatieven).
  • Kan gebruikt worden om .NET objecten te maken met interfaces en overerving. Objecten kunnen gemaakt worden in verschillende talen, waarbij overerving van de ene taal naar de andere mogelijk is. Componenten kunnen gemaakt worden zonder ontwikkelomgeving, een teksteditor zoals notepad is al genoeg. Een ontwikkelomgeving is wel gemakkelijk, maar dus geen noodzaak.
  • Kan van componenten SOAP listeners en proxies maken door slechts een aantal attributen in te stellen. Hiervoor is dus heel weinig werk nodig.
  • Het hart van het .NET Framework en de basiscomponenten zijn niet gebonden aan Intel of Windows. Het hele Framework werkt op dit moment alleen op Windows, maar het hart van het Framework, de Common Language Runtime (CLR), en een grote hoeveelheid objecten werkt al op FreeBSD en MacOS 10.2.
  • Het .NET Framework bevat alle faciliteiten die nodig zijn om een robuust commercieel product te maken in de orde van grote van Office 2000. .NET is een enorme bibliotheek met duizenden zelfdocumenterende objecten, die je programmatisch kunt vragen hoe ze gebruikt moeten worden. De objecten varieëren van browser interactie tot encryptie, GDI/GDI+, sockets en abstracties op een hoger niveau.
    De .NET Framework Class Browser 
    demonstreert het rijke object model dat beschikbaar is en hoe je zelf programmatisch toegang krijgt via reflectie.

Taal Ondersteuning

ASP

  • 2 ingebouwde script talen (VBscript, Jscript) die niet gecompileerd zijn. Enkele 3rd party talen: Perlscript, Python, deze zijn echter niet zo robuust en hebben de neiging de server te crashen.
ASP.NET
  • 3 ingebouwde gecompileerde talen (heeft geen script talen): VB.NET (VB7), C# en JScript / JS.NET
  • Als je echt iets cools wil zien, moet je eens kijken naar:
    Visual Inheritance dat toont hoe grafische ontwerpers kunnen werken aan een bestand en programmeurs aan een ander apart bestand.

Database Ondersteuning

ASP

  • Database ondersteuning via ADO dat communiceert met ODBC en OLEDB databases. De meeste database weergave wordt gedaan m.b.v. recordsets en loops. De meeste database manipulatie vereist code die gekoppeld is aan een back-end database. Het is mogelijk dat de code niet werkt als drivers worden verwisseld en derhalve moet voorzichtig geschreven worden.
ASP.NET

Schaalbaarheid

ASP
  • Schaalbaarheid is gelimiteerd omdat 2 van de hoofd objecten (sessie, applicatie) niet schalen op webfarms. Deze objecten moeten vervangen worden door zelfgemaakte of commerciële objecten als die functionaliteit gewenst is op webfarm. Schaalbaarheid, multi-tier applicaties, en transactie systemen kunnen wel gemaakt worden, maar de programmeur heeft weinig gereedschap om hier een simpel klusje van te maken. Het is gewoon een lastige klus en de programmeur moet ervaring hebben met het maken van zulke systemen in het verleden om nu een effectieve te kunnen maken.
ASP.NET
  • Sessies en alle mogelijkheden werden gebouwd met webfarms in het achterhoofd en ondersteunen "web gardens" (1 computer met meerdere CPUs)
  • Voor verschillende vormen van caching zie:
    Overzicht van caching in ASP.NET
    vermindert database toegang en executie van code dramatisch zonder dat er pagina niveau veranderingen nodig zijn.

Third party support

ASP
  • Sommige essentiële COM componenten die nodig zijn om websites te maken (browser detectie, etc.) -- Simpel maar bruikbaar. Voor de meeste sites met complexe benodigdheden moet je veel COM componenten bouwen of kopen om taken te volbrengen.
ASP.NET
  • Veel minder third-party support nodig, omdat veel al in ASP.NET ingebouwd is. Veel fabrikanten van COM componenten maken inmiddels ook server controls voor ASP.NET.

Browser ondersteuning

ASP
  • Browserneutraal, de programmeur moet alle verschillen tussen browsers zelf opvangen.
ASP.NET
  • Validatoren en ingebouwde componenten gebruiken browser-detectie om HTML weer te geven die zich consisten gedraagt in verschillende browseser. ASP.NET heeft vele mogelijkheden zodat controls de browser kunnen detecteren en de HTML heel anders genereren afhankelijk van wat de browser aan de pagina vraagt.

Uitvoer omgeving

ASP
  • Nauw gekoppeld aan Internet Information Server (IIS).
  • De ASP-engine is niet gedocumenteerd waardoor deze niet makkelijk uitgebreid kan worden. Je kunt alleen low-level ISAPI filters maken om taken te volbrengen die ASP niet makkelijk zal ondersteunen.
  •  In ASP wordt een script gecompileerd wanneer de eerste persoon dat script opvraagt. Dit moet echter telkens opnieuw als script cache vol is en het script verwijderd is, of als de server opnieuw opgestart wordt.
ASP.NET
  • Opereert buiten IIS om er zeker van te zijn dat de infrastructuur van IIS niet nodig is, en ASP.NET dus met elke webserver zou kunnen werken.
  • Zeer uitbreidbare en high-level objecten die HTTP Handlers genoemd worden, kunnen de meest complexe taken volbrengen zonder dat daarvoor de gehele ASP.NET infrastructuur overgeërfd hoeft te worden.
  • De gecompileerde code van objecten en pagina's wordt bewaard op de harde-schijf, zodat de compilatie nooit opnieuw uitgevoerd hoeft te worden, totdat de broncode verandert.

Installeren

ASP
  • Als een applicatie is gemaakt zitten de instellingen in de Windows Registry, de Metabase, MTS catalogs, en IIS. Overschrijven en kopiëren van een applicatie naar een andere server is een complex en vervelend klusje met slechts een aantal automatische tools. Component registratie wordt verricht m.b.v. verschillende software pakketten die door een systeembeheerder gedraaid moeten worden. Zie:
    Overzicht van het installeren en configureren van ASP.NET applicaties
    voor meer details.
ASP.NET
  • Enorm complexe applicaties slaan hun instellingen en componenten op in tekstbestanden. Het kopieren van deze tekstbestanden van server naar server is genoeg om de instellingen correct over te zetten op de andere server. Er zijn geen tools nodig voor component registratie, aangezien componenten geen registry entries nodig hebben en niet gecompileerd hoeven te worden voordat ze gekopieerd worden naar de server. Alle configuratie/beveiligings opties zijn opgeslagen in XML/tekst bestanden.

Versiebeheer

ASP
  • Bij een nieuwe versie van componenten moet de server gestopt en herstart worden.
  • Als nieuwe component versies geïnstalleerd worden, worden de oude versies vervangen.
ASP.NET
  • Als een component herschreven is om een nieuwe versie te krijgen, dan zal bij de eerstvolgende gebruiker die een pagina opvraagt de nieuwe versie gebruikt worden, in een nieuwe thread. De oude en nieuwe versies bestaan naast elkaar in het geheugen aangezien er een volledig draaiend component op een thread aanwezig is. Uiteraard zal het ASP.NET werk proces uiteindelijk alle gebruiker verzoeken eindigen die communiceren met het oude component zodat ze niet onnodig geheugen innemen.
  • ASP.NET of andere programma´s kunnen elke versie van een assembly gebruiken aangezien .NET side-by-side executie van verschillende versies ondersteunt.

Stabiliteit

ASP
  • De omgeving gaat er vanuit dat de code en bibliotheken nauwkeurig geschreven zijn, alle bugs gevonden zijn, en dat er tests onder zware load uitgevoerd zijn. Fouten in code of componenten of geheugen lekken veroorzaken daardoor dat het systeem steeds langzamer wordt, waardoor zachte of harde reboots nodig kunnen zijn.
ASP.NET
  • Het proces dat ASP.NET uitvoert (ASP.NET werkproces) gaat er vanuit dat alle componenten en code kunnen crashen, dat geheugen kan lekken, en slechte code kan bevatten (zoals bijvoorbeeld oneindige loops). Het ASP.NET werkproces merkt slechte code op, isoleert de thread die de code uitvoert, staat niet toe dat nieuwe code op dezelfde uitgevoerd wordt, en vernietigt vervolgens de thread en alle slechte code. Als code geheugen lekt, kan het ASP.NET werkproces een nieuwe instantie maken om nieuwe verzoeken uit te voeren. Ook hier wordt de lekkende thread vernietigt, zodat er geen reboot nodig is. Zie:
    Overzicht van crashbeveiliging in ASP.NET
    voor meer informatie. 

Debugging

ASP
  • Debuggen alleen mogelijk met Visual Interdev. Tools zijn niet gedetailleerd en hebben daardoor beperkte mogelijkheid tot diep in het systeem kijken.
  • Foutafhandeling heeft in alle talen flinke beperkingen. VBscript heeft On Error Resume Next en geen On Error Goto. JavaScript heeft try...catch, maar geen andere taal heeft dat.
ASP.NET
  • Krachtige debugging, milliseconde timing en profiling zijn ingebouwd. Dit kan gedaan worden zonder HTML. Zie:
    Debugging #2: Page Tracing/Timing
    voor een voorbeeld.
  • Alle huidige paginaverzoeken kunnen achteraf opgeslagen en gecontroleerd worden. Zie:
    Application trace 
    voor een voorbeeld op je server (normaal gesproken moeten zulke dingen met een paswoord beschermd worden op je server zodat alleen programmeurs toegang kunnen krijgen).
  • Debuggen kan ook met tools die niet aan een specifieke editor gekoppeld zijn.
  • Foutafhandeling in de code is makkelijk omdat er veel mogelijkheden zijn voor foutafhandeling (ongeveer 8 x zoveel als voor ASP). De meeste talen ondersteunen try...catch en verschillende andere robuuste manieren van foutafhandeling.
© Charles Carroll (vertaling copyright ASPNL)

<< vorige | ^ naar boven | overzicht | volgende >>
copyright 2000-2007 ASPNL