HOME     
 Themen

 ASP.NET
        Layout & Design
        Datenzugriff & Datenbindung
        Steuerelemente / Controls
        Caching & Performance
        Ressourcen & Lokalisierung
        Konfiguration & Deployment
        Debugging & Error Handling
        HTTP-Module und -Handler
        Sicherheit
        Ajax & Atlas
 ADO.NET
        SQL-Server
 C# & VB.NET
 Windows Forms
        Datenbindung
        Multimedia
 XML & XSLT
 Web Services
 Office
        Sharepoint
 Sicherheit
 Mobile Devices
 Visual Studio
 .NET 3.0
 Informationen

 Über DotNetProject

 Artikel anmelden

 Impressum

 Kompilierung von ASP.NET 2.0-Anwendungen  

Kompilierungsmodell unter ASP.NET 1.x

Das unter ASP.NET 1.x von Visual Studio .NET 2002/2003 angewandte Kompilierungsmodell erstellte aus allen CodeBehind-Dateien und zugehörigen Klassen eine gemeinsame Assembly - eine .dll-Datei, die in das /bin-Verzeichnis abgelegt wurde. Die einzelnen ASPX-Seiten wurden zur Laufzeit in eine bzw. mehrere temporäre Assemblies kompiliert.

Der Hauptnachteil dieser Verfahrensweise war, neben den Themen Sicherheit und Performance, darin zu sehen, dass die ASPX-Dateien weiter ungeschützt im Quelltext vorliegen und mit ausgeliefert werden mussten.

In ASP.NET 2.0 haben hier grundlegende Änderungen Einzug gehalten, die zu wesentlich flexibleren Möglichkeiten für die Bereitstellung von ASP.NET-Anwendungen geführt haben.

Automatische Kompilierung / Kompilierung zur Laufzeit

Standardmäßig wird in ASP.NET 2.0 der Anwendungscode automatisch kompiliert, wenn ein Benutzer die Website das erste Mal anfordert. Hierzu muss weiterhin der gesamte Quellcode der Anwendung (auf dem Zielsystem) vorliegen.

Grundsätzlich wird pro Webseite und für das Anwendungsverzeichnis (Nicht-CodeBehind-Klassen im Verzeichnis /App_Code) jeweils eine Assembly erzeugt. Werden mehrere Programmiersprachen verwendet, so erstellt ASP.NET für jede einzelne Sprache eine separate Assembly.

Diese Kompilierungsoption bietet sich vor allem während der Entwicklungsphase einer Anwendung an.

Vorkompilierung

ASP.NET bietet zudem die Möglichkeit der Vorkompilierung einer kompletten ASP.NET-Anwendung. Dies führt nicht nur zu einer besseren Leistung beim ersten Aufruf sondern ermöglicht auch die Bereitstellung und Weitergabe ohne jeglichen Quellcode und damit einen besseren Schutz geistigen Eigentums.

ASP.NET 2.0 bietet für die Vorkompilierung drei Optionen:

  • Aktualisierbare Vorkompilierung

    Die Webanwendung wird kompiliert, die Inhalte der ASPX- und ASCX-Seiten bleiben erhalten (auch ggf. vorhandener Inline-Code) und werden mit ausgeliefert. Somit können diese Dateien auch nachträglich noch geändert werden, z.B. um das Layout anzupassen. Aktualisierungen führen automatisch zu einer Neukompilierung.

  • Nicht aktualisierbare Vorkompilierung

    Mit dieser Option werden sämtliche ASP.NET-Quelldateien, einschließlich des HTML-Codes, in Assemblies verpackt. Grafiken und reine HTML-Seiten, also statische Inhalte, werden unverändert kopiert. Die ASPX-Seiten bleiben lediglich als "Markierungsdateien" stehen.

    Diese erhalten keinen Inhalt mehr und dienen vor allem der weiteren Konfigurierbarkeit von Datei-Berechtigungen. Diese Option ermöglicht es dem Entwickler, Projekte ohne jeglichen Quellcode auszuliefern.

  • Direkte Vorkompilierung

    Die direkte Vorkompilierung entspricht im Grunde der dynamischen Kompilierung. Hier wird jedoch beim ersten Aufruf eine höhere Performance erzielt.

Der Visual Web Developer (VWD) stellt die Vorkompilierung, inklusive der Möglichkeit, hierbei die Aktualisierbarkeit der Site zu steuern (rot markiert), über "Erstellen/Website veröffentlichen" bereit. Diese Funktion steht in der Express-Version leider nicht zur Verfügung!


Dialog: Vorkompilieren im VWD

Ohne Unterstützung der Entwicklungsumgebung muss man auf das ASP.NET-Kompilierungstool "aspnet_compiler.exe" zurückgreifen. Weitere Informationen zu diesem Tool finden Sie in der MSDN.


Im Zielordner wird eine Datei mit dem Namen "PrecompiledApp.config" angelegt. Diese enthält Informationen über die Veröffentlichung der Anwendung.

Und wie gesagt: Der Zielordner ist fertig zur Auslieferung - er enthält keine Quellcode-Dateien (z.B. Page1.aspx.cs) mehr. Aus diesem Grund findet die Veröffentlichung auch in einen separaten Ordner statt.

Verwendung mehrerer Programmiersprachen

ASP.NET 2.0 bietet nun auch die Möglichkeit, innerhalb eines Projekts mehrere Programmiersprachen zu verwenden. Hierzu müssen im Ordner /App_Code für jede Sprache Unterordner angelegt werden und im Compilation-Abschnitt der Web.config als Verweis entsprechend hinterlegt werden. Jede Programmiersprache wird dann in eine separate Assembly kompiliert.

Nachfolgend ein Beispiel für ein Compilation-Element, konfiguriert für die Verwendung von C# und Visual Basic mit Verweisen auf die entsprechenden Unterordner.

<compilation debug="false">
	<codeSubDirectories>
		<add directoryName="VB" />
		<add directoryName="CS" />
	</codeSubDirectories>
</compilation> 
Die Namen der Order können frei vergeben werden, ASP.NET erkennt automatisch den zu verwendenden Compiler!