Der wohl häufigste Grund für die Anwendung des ASP.NET 2.0 PreCompiler ist das schnellere Starten der Webanwendung.
Zu finden ist das Kommandozeilen Tool unter
%WINDIR%\Microsoft.NET\Framework\v2.0.xxxxx\aspnet_compiler.exe |
Als Nebenprodukt bietet der PreCompiler zusätzliche auch noch erhöhte Sicherheit für Ihre Software.
Fleißige Webprogrammierer kennen es nur zu gut: der erste Aufruf Ihrer frisch auf den Webserver aufgespielten
Webanwendung dauert und dauert und dauert. Grund dafür ist die ASP.NET Engine, die zur Laufzeit den Quellcode in Maschinencode kompiliert. Schlauerweise tut sie dies nur beim ersten Aufruf, danach beliefert sie den Webserver mit Informationen aus dem Cache. Den Cache findet man bei .NET 2.0 im
%WINDIR%\Microsoft.NET\Framework\v2.0.xxxxx\Temporary ASP.NET Files |
In Place PreCompilation
Um unsere Kunden mit stehts mit einem zugigen Aufbau unserer Webseite zu begeistern, können wir diesen ersten Aufruf der Webanwendung mit dem PreCompiler erledigen. Der Syntax für diese "In Place" Prekompilation lautet:
aspnet_compiler.exe -v /Myapp |
Dieser Aufruf kompiliert das Web im virtuellen Verzeichnis "Myapp". Die vorkompilierten Dateien landen im
entsprechenden temporären Ordner von ASP.NET. Unser Web startet jetzt nicht nur zügig, wir wissen jetzt auch, dass unser Web syntaktisch Fehlerfrei ist.
PreCompilation for Deployment
Die zweite Methode, um Webseiten vorzukompilieren, ist "PreCompilation for Deployment". Hier können wir eine
Webanwendung aus dem Dateisystem in ein gewähltes Verzeichnis Vorkompilieren. Das Resultat ist eine "Executable" unseres Webs:
aspnet_compiler.exe -p "c:\meine Quelle" -v / "c:\mein Ziel" |
Der Parameter "-p" referenziert hier ein Verzeichnis im Dateisystem. Der Parameter "-v" wird vom Compiler zum Referenzieren der Root der Webs benötigt. Ein weiterer Vorteil dieses Compileraufrufs: es befindet sich kein
Quellcode mehr auf dem Webserver. Nicht nur alle Klassen aus dem App_Code und die Codebeside-Informationen werden
kompiliert, auch die .aspx, .asmx, .ashx, .master und .ascx Dateien werden landen als vorkompilierte Dateien im
Zielverzeichnis. Resultat dieses Kompilierens ist, dass keine Veränderungen durch einfaches kopieren mehr an der
Webseite vorgenommen werden können. Um wenigstens die .aspx, .asmx, .ashx, .master und .ascx Dateien mit Quelltext im Web zu haben, kann zusätzlich die Option "-u" verwendet werden.
Wer im Besitz eines Visual Studios ist, kann die Vorzüge des Precompiliers auch visuell Nutzen. Unter "Webseite,
veröffentlichen" finden sich die oben beschriebenen Features für das "PreCompile for Deployment" und einige mehr in
einer kompakten Maske wieder.
Fazit
Der ASP.NET Precompiler bietet nicht nur Vorzüge in Sachen Performance. Auch die Sicherheit unserer Webanwendungen profitieren vom Kompilieren. Syntaktische Fehler in unserer Software können so dem Kunden vorenthalten bleiben und Quellcode bleibt dem suchenden Angreifer verborgen.