5.3
.NET Framework und Compact Framework

Am Anfang habe ich erläutert, dass .NET eher ein Konzept oder eine Philosophie ist und nicht ein einzelnes fertiges Produkt. Trotzdem gibt es den .NET-Download, nämlich das .NET Framework. Dieses benötigen Sie, wenn Sie .NET-Applikationen ausführen möchten. Ab Windows Server 2008 und ab Windows Vista ist es standardmäßig in der aktuellsten Version integriert, bei den anderen Betriebssystemen müssen Sie es nachinstallieren. Verfügbar ist das .NET Framework für folgende Microsoft-Betriebssysteme (in chronologischer Reihenfolge des Erscheinungsdatums):
- Windows NT (SP6a), mit Einschränkungen
- Windows 98/ME, mit Einschränkungen
- Windows 2000, mit Einschränkungen
- Windows XP
- Windows 2003
- Windows Vista/7/8/8.1
- Windows Server 2008/2008R2/2012/2012R2
Interessanterweise gibt es ein Open-Source-Projekt, das sich mit dem »Nachbau« des .NET Frameworks für Linux/Unix beschäftigt. Es heißt Mono. Nähere Informationen darüber finden Sie unter http://www.mono-project.com.
Inwieweit dieses Projekt in der näheren Zukunft tatsächlich Bedeutung im Alltag der Unternehmens-IT erlangt, kann man sicherlich kontrovers diskutieren. Interessant ist aber in jedem Fall, dass sich etliche hochkompetente und teilweise renommierte Entwickler daranbegeben, einen .NET-Clone zu entwickeln.
Schauen wir uns das .NET Framework kurz an. In Abbildung 5.6 ist das übliche Schichtenmodell zu erkennen:
- Die Grundlage ist die Windows-Plattform, momentan Win32.
- In der nächsthöheren Schicht finden sich bekannte Technologien wie COM+, MSMQ (Message Queuing), die Internet Information Services (IIS) und ADO als Technologie für den Datenzugriff.
- Dann geht es richtig los mit .NET in Form der Common Language Runtime, der Klassenbibliothek und etlichen weiteren Komponenten.
- Die oberste Schicht bilden die Programmiersprachen, mit denen .NET-Code erzeugt werden kann. Es sind dies mittlerweile nicht nur die von Microsoft in Visual Studio bereitgestellten Programmiersprachen VB.net, C#, J# und C++, mittlerweile unterstützen auch andere Hersteller, wie beispielsweise Borland mit dem Delphi-Produkt, die .NET-Entwicklung.
Abbildung 5.6 Das .NET Framework im Schichtenmodell
Die Ausführung von .NET-Code unterscheidet sich grundlegend von der Ausführung »normaler« Programme. Bei Letzterer erzeugt der Compiler nativen Code, der direkt ausgeführt werden kann. In einer .NET-Umgebung verhält es sich anders, wie Sie in dem Flussdiagramm (Abbildung 5.7) erkennen können:
- Der Compiler erzeugt zwar eine EXE- oder DLL-Datei, allerdings besteht diese aus einer Art Zwischencode, der Intermediate Language (IL). Diese Dateien sind ohne das .NET Framework nicht ausführbar, obwohl sie die Extension .exe haben. Sie können das einfach verifizieren, indem Sie eine .NET-EXE auf eine Maschine ohne installiertes Framework kopieren und versuchen, diese zu starten – es wird eine Meldung erscheinen, dass ein .NET Framework erforderlich ist.
- Startet man eine .NET-EXE, wird die Common Language Runtime aktiv. Zunächst ermittelt der Class Loader, welche Assemblys zur Ausführung zusätzlich benötigt werden. Diese finden sich zumeist in DLL-Dateien.
- Als Nächstes erstellt der JIT-Compiler aus der Intermediate Language »echten« ausführbaren Code. Der JIT-Compiler benötigt für diese Kompilierung nur wenige Augenblicke. Dieser Vorgang ist vom Zeitbedarf nicht vergleichbar mit der Kompilierung in Visual Studio. Das Kompilieren zur Laufzeit bietet übrigens den Vorteil, dass eine auf die Maschine optimierte Übersetzung erfolgen kann. Herkömmlicher Code ist für den kleinsten gemeinsamen Nenner – letztendlich also für den ältesten noch unterstützten x86-Prozessor – übersetzt. Bei Messungen hat sich herausgestellt, dass »geJITteter« Code in der Tat häufig schneller ist, obwohl am Anfang der Kompilierungsvorgang durchgeführt werden muss.
- Während der Ausführung des Codes achtet die Laufzeitumgebung auf die Einhaltung der definierten Sicherheitsrichtlinien der Code Access Security (hierzu finden Sie mehr im nächsten Abschnitt).
Abbildung 5.7 Die Ausführung von .NET-Code
.NET Compact Framework
Neben dem .NET Framework existiert mit dem .NET Compact Framework eine spezielle Variante des .NET Frameworks für mobile Geräte mit WinCE-basierten Betriebssystemen, unter anderem solche mit dem Windows Mobile-Betriebssystem. Für noch kleinere Geräte ist das .NET Micro Framework gedacht.
Die Klassenbibliothek des .NET Compact Frameworks ist eine Untermenge derjenigen des »großen« Frameworks, enthält allerdings deutlich weniger Funktionen. Das hängt zum einen damit zusammen, dass ein installiertes .NET Framework mit deutschem Sprachpaket weit über 100 MB Speicher beansprucht, was für viele mobile Geräte deutlich zu viel ist. Darüber hinaus sind etliche Funktionen zu ressourcenintensiv, als dass man diese sinnvoll auf einem Mobilgerät einsetzen könnte.
Dem Compact Framework (CF) fehlen einige grundlegende Eigenschaften des großen .NET Frameworks. .NET CF verfügt beispielsweise nicht über Code Access Security.
Das .NET Compact Framework ist ein innovativer wichtiger Schritt in die richtige Richtung, denn damit kann ein Entwickler, der Erfahrungen im .NET-Umfeld gesammelt hat, mit relativ geringem Einarbeitungsaufwand anspruchsvolle Applikationen für Mobilgeräte entwickeln. Die Klassenbibliothek, die von .NET CF zur Verfügung gestellt wird, dürfte im Umfeld der Entwicklung für Mobilgeräte in dieser Funktionsvielfalt einzigartig sein.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.