Kapitel 1 Wie .NET und ASP.NET funktionieren
Was ist .NET? Was ist ASP.NET? Wo liegt der Unterschied zwischen ASP.NET und dem herkömmlichen ASP?
.NET (sprich: »dotnet«) bezeichnet eine Produktfamilie von Microsoft. Die .NET-Produktfamilie enthält als ein zentrales Element ein umfangreiches Framework, mit dem sich Software auf der Basis aktueller Microsoft-Windows-Betriebssysteme entwickeln und ausführen lässt.
|
Für die Entwicklung von .NET-Software – dazu zählt auch ASP.NET – benötigen Sie das kostenlos erhältliche .NET Framework SDK oder eine der Versionen von Visual Studio .NET. Die Entwicklung von .NET-Software kann auf der Grundlage der Betriebssysteme Windows NT 4.0, Windows 2000 oder XP Professional erfolgen. Windows 98/Me und XP Home Edition sind für die Entwicklung von .NET-Software nicht geeignet, und für ASP.NET gilt die weitere Einschränkung, dass hierfür auch NT 4.0 nicht geeignet ist. |
|
Für die Ausführung von .NET-Software benötigen Sie die .NET-Laufzeitumgebung, die kostenlos verfügbar ist, und ein Betriebssystem, das für .NET geeignet ist. Neben Win NT 4.0, 2000, XP kommen hier auch Windows 98/Me in Frage. Windows 95 wird von .NET nicht mehr unterstützt. |
|
Für die Ausführung von ASP.NET-Anwendungen gilt: Der Server benötigt auf jeden Fall die .NET-Laufzeitumgebung und mindestens Windows 2000. Clients können mit jedem beliebigen Browser unter jedem Betriebssystem auf ASP.NET-Anwendungen zugreifen. Für die Clients sind also keine besonderen Systemvoraussetzungen zu erfüllen. Ein einfacher Browser reicht aus. |
Wenn Sie .NET-Software entwickeln möchten, sollten Sie die Architektur des .NET-Frameworks kennen lernen. Bei der Beschäftigung mit .NET stoßen Sie auf zahlreiche neue Begriffe. Dieses Kapitel erläutert die Grundlagen der .NET-Architektur anhand dieser Begriffe.
1.1 Komponenten der .NET-Architektur
 
1.1.1 Common Language Runtime (CLR)
 
Die Common Language Runtime bildet die Laufzeitumgebung für alle .NET-Programme. Sie ist so etwas wie der Motor von .NET. Das Konzept der Laufzeitumgebungen ist von anderen Sprachen her allgemein bekannt. Visual-Basic-Programme haben beispielsweise bis zur Version 5 ausschließlich mit Hilfe einer eigenen Laufzeitumgebung funktioniert. Das Besondere an der CLR ist, dass sie sprachenunabhängig ist. Die CLR ist eine Laufzeitumgebung für verschiedene Sprachen, von denen VB.NET und C# die bekanntesten sind. Eine Sprache ist für .NET geeignet, wenn es für sie einen Compiler gibt, der MSIL-Code erzeugt. Das ist ein Zwischencode, den die CLR versteht. Die CLR hat außerdem folgende Merkmale:
|
Jede .NET-Anwendung führt die CLR in einer logischen AppDomain aus. Eine AppDomain ist ein virtueller Bereich, mit dem die CLR die einzelnen .NET-Anwendungen voneinander trennt. |
|
Der Just-in-Time-Compiler (JIT) der CLR übersetzt den IL-Code in Maschinencode. |
|
Die CLR verwaltet den Arbeitsspeicher und gibt nicht mehr benötigte Ressourcen automatisch frei (Garbage Collection). |
|
Die CLR überprüft, ob die Befehlsaufrufe im aktuellen Sicherheitskontext erlaubt sind (Code Access Security). |
|
Sie bietet Multithreading. |
|
Sie ermöglicht eine strukturierte Ausnahmebehandlung. |
|
Die CLR bietet über das Common Type System (CTS) einen einheitlichen Satz von Datentypen, den alle .NET-Programmiersprachen unterstützen. |
Der Code, den die CLR ausführt, wird als verwalteter Code (managed Code) bezeichnet. Im Gegensatz dazu steht nicht verwalteter (unmanaged) Code. Dazu zählen beispielsweise herkömmliche COM-Objekte.
1.1.2 .NET Framework
 
Aus der Sicht eines Entwicklers bezeichnet das .NET Framework die umfangreiche Klassenbibliothek, die ein Entwickler für seine Arbeit benutzt. Das .NET Framework bietet die gesamte Funktionalität, die man zur Entwicklung von Desktop-Anwendungen oder Internetapplikationen benötigt.
Das .NET Framework umfasst mehrere tausend Klassen. Im .NET Framework SDK ist eine ausführliche Dokumentation des .NET Frameworks enthalten. Typischerweise wird ein Entwickler für seine Programme nicht alle Klassen nutzen, sondern benötigt nur einen Teil davon für seine Arbeit. Dennoch muss ein Entwickler für den Einstieg in die .NET-Welt einen gewissen Lernaufwand einkalkulieren.
1.1.3 Microsoft Intermediate Language (MSIL)
 
Wenn Sie VB.NET-Code oder C#-Code kompilieren und eine exe-Datei oder dll-Datei erstellen, dann enthalten diese Dateien keinen Maschinencode, sondern Code in Form der Microsoft Intermediate Language (MSIL oder IL). Diesen Code kann die Common Language Runtime CLR mit Hilfe des Just-in-Time-Compilers ausführen. Die MSIL wird also nicht interpretiert, sondern erst kompiliert und dann ausgeführt.
1.1.4 Managed Code, unmanaged Code
 
MSIL-Code, der von der CLR ausgeführt wird, wird als managed Code (verwalteter Code) bezeichnet. Wenn .NET-Programme auch herkömmliche COM-Objekte nutzen, werden diese Bestandteile als unmanaged Code ausgeführt. Die Vorteile der CLR, wie etwa automatische Speicherbereinigung, die strukturierte Ausnahmebehandlung etc., gelten nur für managed Code.
1.1.5 Common Type System (CTS)
 
Das Common Type System definiert einen Satz von Variablentypen, die von allen .NET-Sprachen unterstützt werden. VB.NET und C# verfügen darüber hinaus aber über Datentypen, die nicht mit dem CTS kompatibel sind.
| Tipp Wer Klassen entwickelt, sollte sich bei allen Variablen, die öffentlich zugänglich sind, auf die CTS-Typen beschränken. Nur so ist gewährleistet, dass andere Klassen mit Ihren selbst erstellten Klassen kooperieren können.
|
1.1.6 Common Language Specification (CLS)
 
Die Common Language Specification definiert einen Satz von Sprachfeatures, der von allen .NET-Sprachen verarbeitet werden kann. Das betrifft insbesondere die Typenbibliothek im Common Type System (CTS). Die meisten Mitglieder der .NET-Klassen sind CLS-kompatibel. Nur in Ausnahmefällen werden Sprachfeatures, die nicht CLS-kompatibel sind, unterstützt. In der Regel ist aber eine CLS-kompatible Alternative verfügbar.
1.1.7 Just-in-Time-Compiler
 
Der Just-in-Time-Compiler (JIT) übersetzt MSIL-Code in Maschinencode. Er ist ein Bestandteil der Common Language Runtime (CLR).
1.1.8 ASP.NET
 
ASP.NET bildet innerhalb des .NET Frameworks ein Subsystem für einen spezialisierten Bereich: die Erstellung von serverseitigen Webapplikationen.
1.1.9 Web Services
 
Web Services bilden eine Möglichkeit, Daten und Dienste rechnerübergreifend zur Verfügung zu stellen. Web Services sollen die Integration unterschiedlicher Software ermöglichen, die auf verschiedenen Hardwareplattformen unter unterschiedlichen Betriebssystemen läuft. Das .NET Framework enthält spezialisierte Klassen, die die Entwicklung von Web Services ermöglichen. Web Services haben in der täglichen Arbeit eines Entwicklers bislang nicht die herausragende Bedeutung erlangt, die Microsoft ihnen in seinen eigenen Werbeaussagen zumisst.
1.1.10 VB- und C#-Compiler
 
Die .NET-Compiler für VB.NET und C# erzeugen keinen Maschinencode, sondern einen Zwischencode in der Microsoft Intermediate Language (MSIL). Dieser IL-Code wird von der Common Language Runtime (CLR) ausgeführt.
1.1.11 Assembly
 
Beim Kompilieren entstehen eine oder mehrere exe- und dll-Dateien. Diese Dateien bilden zusammen eine Assembly (»Baugruppe«). Eine Assembly bildet eine logische Einheit. Beim Kompilieren werden der Assembly Informationen hinzugefügt, die diese Assembly beschreiben, das ist das so genannte »Manifest«. Ein Manifest enthält folgende Informationen:
|
den Namen der Assembly und Versionsinformationen, die aus Hauptversions-, Nebenversions-, Revisions- und Buildnummer besteht, |
|
eine Auflistung der Typen, die in der Assembly definiert werden, |
|
eine Liste von Referenzen auf externe Ressourcen. Dabei werden globale von privaten Objekten unterschieden. Globale Objekte liegen im Global Assembly Cache. Private Objekte liegen im gleichen Verzeichnis wie die Anwendung selbst oder darunter, |
|
eine Auflistung der benötigten Berechtigungen. |
|