Microsoft .NET Framework
- Ein Überblick -



1. Warum .NET Framework?
2. Bestandteile des .NET Frameworks
2.1 Common Language Runtime
2.2 Base Class Library
2.4 User Interface
2.5 Common Language Specification
2.6 Programmiersprachen im .NET Framework
2.7 Metadaten
2.8 Assemblies
3. .NET Enterprise Server


1. Warum .NET Framework?

Seit 1996 ist das Internet immer mehr zu einem "dynamischen Ort" geworden: weg von starren Inhalten, hin zu personalisierten Angeboten und E-Commerce. Diese Linie wird weiter verfolgt - Anwendungen werden zu WebServices.

Internet-Anwendungen, die an Komplexität zunehmen, werden von unterschiedlichsten Plattformen aus aufgerufen. Seien es nun Standard-Browser, die auf einem PC betrieben werden, oder aber auch mobile Geräte, sie alle sollen Zugriff auf WebServices haben.
Diese neue Art von Internet-Applikationen benötigt jedoch eine neue Art von Entwicklungsumgebung - genau diese stellt das .NET Framework zur Verfügung.






2. Bestandteile des .NET Frameworks

Das .NET Framework besteht aus einer Vielzahl von Komponenten und basiert auf der neuen Common Language Runtime.



Beim .NET Framework handelt es sich um eine offene Technologie, sodass Drittanbieter die M¨o;glichkeit haben, ihre Produkte .NET-kompatibel zu gestalten. Zugriffe sind von jeder Plattform aus möglich.

(Ob dies allerdings auch in der Praxis möglich sein wird, ist bisher ungewiss: Die Beschreibung vieler Komponenten ist bisher nur als Draft erhältlich.
Auch wenn es sich um einen offenen Standard handelt, so wird Microsoft diesen für sich anpassen können - eine Alternativimplementierung wird damit nicht mehr möglich.)




2.1 Common Language Runtime

Ein Programmierwerkzeug für .NET erzeugt keinen Code für einen spezifischen Prozessor, sondern Zwischencode in der Microsoft Intermediate Language (MSIL, oft auch als IL bezeichnet). Dieser Code wird dann beim Ausführen (oder auch schon davor) von einem Just-in-Time-Compiler (JIT) in Code für den jeweiligen Prozessor übersetzt.



Auch wenn das Konzept sehr dem von Java ähnelt, gibt es doch einen großen Unterschied: Die Java-VM wurde speziell für die Programmiersprache Java entwickelt. Im .NET Framework kann hingegen aus jeder .NET-kompatiblen Sprache MSIL-Code erzeugt werden - Sprachen werden gleichwertig, Implementierungen durch Drittanbieter sind möglich.

Die Vorteile des MSIL-Codes:

  • Sprachen werden gleichwertig, da alle Compiler MSIL-Code erzeugen
    - eine C# Klasse kann von einer VB.NET Klasse abgeleitet werden → gemeinsame Klassen
    - einheitliche Fehlerbehandlung

  • Vereinfachung des Compilerbaus
    - einheitliches Typsystem ("Common Type System") wird von allen .NET kompatiblen Sprachen genutzt (deshalb sollten sich .NET Sprachen auf die Typen beschränken, die über das CTS definiert sind)
    - alle Sprachelemente sind Objekte
    - Sprachen sind "per Definition" interoperabel

  • Unterschied zu reinen Assembler-Sprachen
    - komplexe Datentypen und Objekte als feste Bestandteile
    - Konzepte der objektorientierten Programmierung (wie Vererbung und Polymorphie) von vornherein unterstützt


    Mit .NET-Technologie entwickelte Applikationen laufen in einem "Managed Environment", man spricht hier auch von "Managed Code":

  • Runtime führt Sicherheitsüberprüfungen durch
  • Runtime übernimmt die Speicherverwaltung (Garbage Collector) und Fehlerbehandlung (Exception Handling)
  • Runtime führt Versionsprüfungen durch


    Die Common Language Runtime besteht aus mehreren Komponenten:




    Class Loader
  • Laden von Klassen
  • Verwalten von Metadaten

    MSIL to Native Compiler
  • Just-in-Time-Konvertierung von MSIL zu nativem Code (schneller als der JIT in Java!)

    Code Manager
  • verwaltet die Ausführung von Code

    Garbage Collector
  • automatisches Lifetime-Management für alle Objekte
  • multiprozessorfähig sowie skalierbar
  • läuft bei geringer Auslastung des Systems
  • multiprozessorfähig sowie skalierbar

    Security Engine
  • Sicherheitskonzept, basierend auf der Herkunft des Codes und der Art des Nutzers

    Debug Engine
  • erlaubt ein Debuggen sowie eine Einzelschritt-Fehlersuche im Code, wenn Fehler während der Ausführung auftreten

    Type Checker
  • verhindert unsichere Casts (Typumwandlungen)
  • verhindert uninitialisierte Variablen

    Exception Manager
  • stellt strukturiertes Exception-Handling zur Verfügung
  • ermöglicht Fehler-Reporting

    Thread Support
  • stellt Klassen und Interfaces für Multithread-Programmierung zur Verfügung

    COM Marshaler
  • Anbindung an COM

    Base Class Library (BCL) Support
  • integriert Code, der die BCL unterstützt




    2.2 Base Class Library

    Auf die Laufzeitumgebung setzt eine gemeinsame Klassenbibliothek auf - von allen .NET-kompatiblen Sprachen kann auf diese zugegriffen werden.



    System - Namespace
    Sammlung häufig gebrauchter Sprachelemente (Ein- und Ausgabe, Collections, Streambearbeitung etc)

    System.Data - Namespace
    Klassen, die das ADO.NET Objektmodell ausmachen

    System.Xml - Namespace
    Unterstützung für XML

    System.Web - Namespace
  • Lower-Level-Services wie Caching, Konfiguration
  • Services zur Kommunikation zwischen Browsern und Servern
  • Klassen und Interfaces zum Erstellen grafischer Web-Benutzeroberflächen

    System.Drawing - Namespace
    Klassen und Interfaces,die ein Zeichnen auf der GUI ermöglichen

    System.WinForms - Namespace
    Klassen und Interfaces zum Erstellen grafischer Programm-Benutzeroberflächen



    2.3 WebServices

    Bei den .NET WebServices handelt es sich um eine Möglichkeit, verteilte Objekte anzusprechen. .NET WebServices stellen eine Neuentwicklung dar, welche im Gegensatz zu DCOM nicht mehr Remote Procedure Call (RPC) zum Zugriff auf die Objekte verwendet, sondern Simple Object Access Protocol (SOAP) über HTTP.

    Solche WebServices können beispielsweise sein:
  • E-Wallet
  • Passport-Authentisierung
  • Speicherung persönlicher Informationen auf Servern (Kontakte, Profile, Listen, Location etc.)
  • Verwalten von Programmeinstellungen

    Insbesondere Microsoft verfolgt dies durch seine ".NET MyServices".

    Die .NET Plattform stellt genau die Tools und Technologien zur Verfügung, die zur Entwicklung derartiger verteilter Anwendungen nötig sind. Wichtig ist hierbei, dass es sich um plattformneutrale Technologien handelt - ebenso, wie auch das Internet selbst (weitestgehend) plattformneutral ist.



    2.4 User Interface

    Es gibt mehrere Möglichkeiten, um eine Benutzeroberfläche zu gestalten:

  • grafische Benutzeroberflächen für Web-Applikationen werden über Elemente des Namespaces System.Web erstellt
  • grafische Benutzeroberflächen für Applikationen, die auf einem Client laufen, werden über Elemente des Namespaces System.WinForms erstellt

    WebForms werden nicht mehr mittels Skriptsprachen erstellt - statt dessen mit VB.NET, C# u.a. Beim ersten Aufruf der Webseite wird diese komplett auf dem Server compiliert; der Browser bekommt dann wieder HTML zu sehen.
    Serverseitige UI-Controls werden als WebControls bezeichnet.



    2.5 Common Language Specification

    Die Common Language Specification ist ein gemeinsamer Standard für objektorientierte Programmiersprachen (Common Language Specification, CLS) sowie deren Typsystem (Common Type System, CTS).
    Alle Programmiersprachen, die sich an die CLS halten, können auf der CLR laufen. Desweiteren kann eine Nutzung von Komponenten über Programmiersprachen-Grenzen hinweg nur gewährleistet werden, wenn sich diese Programmiersprachen an die CLS halten.
    Aus diesem Grund sollte man sich - um die Interoperabilität zu gewährleisten - an die vom .NET Framework verwendeten Typen beschränken.



    2.6 Programmiersprachen im .NET Framework

    Im .NET Framework sind folgende Programmiersprachen standardmäßig verfügbar:

  • VisualBasic.NET
  • Microsoft Visual C#
  • Visual C++ (Managed Extensions to C++)
  • Visual J#
  • Microsoft JScript

    VisualBasic.NET hat kaum mehr Gemeinsamkeiten mit VisualBasic 6.0; die Programmiersprache ähnelt (bis auf das Fehlen der geschweiften Klammern) sehr C#.

    C# ist eine auf C++ basierende Neuentwicklung, die am ehesten mit Java verglichen werden kann, jedoch auf neuen Standards basiert. Im Gegensatz zu C++ verwendet C# keine Pointer mehr, zudem steht der eingebaute Datentyp String zur Verfügung.

    In Visual C++ (Managed Extensions to C++) finden sich nur geringfügige Neuerungen; hier geht es vor allem um eine Integration ins .NET Framework.

    Visual J# ist die neue Version von Microsofts J++

    Als Sprachen von Drittanbietern sind verfügbar:
    APL, COBOL, Pascal, Eiffel, Haskell, ML, Oberon, Perl, Python, Scheme, Smalltalk

    Gemeinsamkeiten von C# und VB.NET

  • Namespaces
  • Typdefinitionen
  • Elemente von Typen
  • Organisation der Dateien: keine Header-Dateien, Reihenfolge der Deklarationen ohne Bedeutung

    Ein "Hello-World"-Programm in C# sieht so aus:

    using System;

    namespace HelloWorld
    {
    public class Class1
    {
    public static void main()
    {
    Console.WriteLine("Hello World");
    }
    }
    }


    ... das gleiche in VB.NET:


    Imports System

    Namespace HelloWorld
    Class Class1
    Shared Sub Main()
    Console.WriteLine("Hello World")
    End Sub
    End Class
    End Namespace


    ... oder

    Module Module1
    Sub Main()
    Console.WriteLine("Hello World")
    End Sub>
    End Module>


    ... und so sieht das C# Programm aus, wenn es in die MSIL compiliert wurde - rot sind hier die Stellen im Code gekennzeichnet, an denen man noch Teile des Quellcodes erkennen kann

    .namespace HelloWorld
    {
    .class public auto ansi Class1
    extends [mscorlib]System.Object
    {
    .method public hidebysig static void Main() il managed
    {
    .entrypoint
    .maxstack 8
    IL_0000: ldstr "Hello World"
    IL_0005: call void [mscorlib]System.Console::WriteLine(class System.String)
    IL_000a: ret
    }
    .method public hidebysig specialname rtspecialname
    instance void .ctor() il managed
    {
    .maxstack 8
    IL_0000: ldarg.0
    IL_0001: call instance void [mscorlib]System.Object::.ctor()
    IL_0006: ret
    }
    }
    }


    Hier zeigt sich deutlich der Unterschied zu Programmiersprachen, die bis auf Maschinenebene heruntercompiliert werden!



    2.7 Metadaten

    Metadaten sind, einfach ausgedrückt, "Daten über Daten".

    In diesen Metadaten sind Beschreibungen der verwendeten Typen abgelegt; sie werden vom Compiler automatisch erstellt und sind somit in jedem Modul enthalten.

    Metadaten lassen sich zur Laufzeit auslesen und ändern ("Reflection").



    br>


    2.8 Assemblies

    In C++ gab es keine Möglichkeit, zusammengehörige Klassen weiter zu gruppieren, was sich vor allem negativ auf die Übersichtlichkeit in großen Anwendungen ausgewirkt hat.

    Aus diesem Grund wurden hier Assemblies eingeführt.

    .NET Anwendungen bestehen aus Assemblies; ein Assembly ist quasi ein "Container für Module". Wird ein Modul compiliert, so gehört es automatisch zu einem Assembly. Versions- sowie Sicherheitsüberprüfungen durch die CLR erfolgen alle auf der Basis von Assemblies.



    Jedes Assembly enthält genau ein Manifest; dieses beschreibt das Assembly.

    Im Assembly enthalten sind:
  • Assembly-Identität: Name + Version + Ländercode
  • Liste aller Module, aus denen das Assembly besteht
  • Liste aller referenzierten Assemblies
  • Typen, Ressourcen, Attribute

    Durch die Einführung von Assemblies gibt es nun neben den - bereits aus C++ bekannten - Access Modifiern (public, private und protected) auch internal.

    Wird eine Klasse als internal deklariert, so kann auf sie nur innerhalb des Assemblies angesprochen werden.

    Klassen sind automatisch internal, es sei denn sie sind als public deklariert.

    protected internal: dies sollte nur für innerhalb von Klassen deklarierte Klassen verwendet werden. Klassen, die mit diesem Access Modifier versehen sind, sind innerhalb des Assemblies protected, nach außen hin internal.







    3. .NET Enterprise Server

    Die Microsoft .NET Enterprise Server Familie ist die Basis für alle geschäftskritischen und hochverfügbaren Anwendungen inkl. der Erstellung von XML-Webdiensten. Es werden Server für die Kommunikation und Zusammenarbeit, für die Verwaltung von Intranet Portalen, wie auch für Datenbanken und E-Business-Anwendungen zur Verfügung gestellt.
    Die Server stellen ihre Dienste für jedes beliebige Gerät bereit und sind skalierbar und anpassbar.

    Microsoft SQL Server Diese neue Version des Microsoft SQL Servers unterstützt XML-Funktionalität und ermöglicht damit die Manipulation von XML-Daten mittels Transact SQL (T-SQL). Es wird ein sicherer Zugriff auf Daten und Services übers Netz ermöglicht.

    Microsoft BizTalk Server Microsoft BizTalk Server bietet vollständige Funktionalität zur Integration von Geschäftsabläufen und zum Austausch von Geschäftsdokumenten innerhalb von Unternehmen sowie über Unternehmensgrenzen hinweg. Enterprise Application Integration (EAI) wird zur Verfügung gestellt.

    Microsoft Host Integration Server Microsoft Host Integration Server ist eine umfassende Integrationsplattform, die eine optimale Lösung für die Kombination von Internet, Intranet und Client-/Servertechnologien bietet.

    Microsoft Exchange Enterprise Server Microsoft Exchange mit Outlook als Client stellt eine Informations- und Kommunikationsplattform dar.

    Microsoft Application Center Application Center ist das Verteilungs- und Verwaltungstool von Microsoft für hochverfügbare Webanwendungen, die auf Microsoft Windows 2000 Server basieren.

    Microsoft Internet Security and Acceleration Server Der Microsoft ISA Server stellt sichere, schnelle und einfach zu verwaltende Internetverbindungen zur Verfügung. ISA Server integriert eine erweiterbare, mehrstufige Unternehmensfirewall und einen skalierbaren, leistungsstarken Webcache. Diese Serversoftware baut auf den Microsoft Windows 2000 Sicherheitsstandards und -richtlinien auf.

    Microsoft Commerce Server Der Microsoft Commerce Server senkt den Aufwand bei der Zusammenstellung und Verwaltung von E-Commerce Websites. Zahlreiche Werkzeuge beschleunigen die Abwicklung von Bestellungen und öffnen Wege zum Datenaustausch mit Partnern. Desweiteren bietet der Microsoft Commerce Server die Möglichkeit, Kundenverhalten zu analysieren.

    Microsoft SharePoint Portal Server Microsoft SharePoint Portal Server ist ein flexibles, unternehmensweites Intranet-Portal, mit dem Mitarbeiter auf einfache Weise Informationen suchen, freigeben und veröffentlichen können. Sie können dabei auf bereits im Unternehmen vorhandene Informationen zugreifen oder neue Informationen weiteren Kollegen zugänglich machen.

    Microsoft Content Management Server Die dynamische Lösung für die Websiteverwaltung in Unternehmen. Microsoft Content Management Server ist das System für die Geschäftsinhaltsverwaltung, das Unternehmen die schnelle und kostengünstige Bereitstellung hoch dynamischer und personalisierter Internet-, Intranet- und Extranetsites ermöglicht.

    Microsoft Mobile Information Server Der Mobile Information Server verbindet die neueste Generation von mobilen Endgeräten mit Firmen-Intranets und ermöglicht so für die Anwender den sicheren Zugriff auf E-Mail, Kontakte, Kalender, Aufgaben oder jede andere Intranet-Anwendung in Echtzeit und von jedem beliebigen Ort aus.