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.
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.)
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
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.
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.
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.
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
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").
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.
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.