Revolution, Flop oder Marketingtrick? - Microsoft .NET und ASP neu - eine kleine Vorschau
Microsoft ist im Begriff, die heute bekannte Art und Weise des Programmierens für das Internet
grundlegend zu verändern. Mit der Ankündigung des .NET Frameworks und .NET Visual Studio (Beta 1-Versionen sind
erhältlich, Public Release der Endversion wahrscheinlich nicht vor 3. Quartal 2001, eher später) werden
zumindest die "Handwerkszeuge" des Internetprogrammierers auf MS-Plattformen einen Quantensprung vollziehen.
Vor gerade einigen Jahren stellte Microsoft ihre Active Server Site Technologie vor, bekannt
als ASP, das Entwicklern erlaubt, Code innerhalb ihrer Web-Seiten direkt einzubetten. Dieser Code wird auf dem Server
ausgeführt und zurück zum Client als reines HTML gesendet. Dadurch konnte man nichtzuletzt Entwickler anlocken,
die der Verwendung von komplizierten CGI´s überdrüssig geworden waren.
Gerade diese Entwickler entdeckten auch schnell die Schwächen der ASP-Technologie. Aus meiner Sicht der
größte Nachteil: Die Beschränkung von Microsoft nur 2 Scriptsprachen zu implementieren, nämlich
VBScript und Javascript bzw. Jscript (Microsofts propietäre "Verbesserung" von Javascript). Neben allen anderen
Nachteilen derartiger Scriptsprachen wie etwa beschränkter Funktionsumfang, Mangel an umfangreichen Bibliotheken oder
fehlende bzw. eingeschränkte Objektorientierung grenzte diese Art der Implementierung naturgemäß den
Anwendungskreis von Active Server Pages stark ein. Auch im Zusammenhang mit der Beschränkung von ASP auf
MS-Server-Plattformen und deren häufig ausgiebigst breit getretenen Sicherheitslücken neigen viele dazu,
ASP als wenig leistungsfähige Servertechnologie zu brandmarken. Nach dem Willen von Microsoft soll sich dies
jetzt ändern.
Microsofts Lösung lautet also Microsoft .NET (ausgesprochen dotnet). Darin befinden
sich eine Reihe von wesentlichen Neuerungen, darunter auch das total neu entwickelte ASP+, oder auch ASP.NET
genannt. Um der Gerüchteküche ein wenig Luft zu nehmen werden wir einen kleinen Blick auf das .NET Framework
werfen. Weiters werden wir schauen, wie sich diese .NET Strategie auf den Webentwickler und im Besonderen auf den
ASP-Entwickler auswirkt. Ich werde mich bemühen, alles so verständlich wie möglich zu halten.
Was ist .NET?
Es ist wohl anfangs leichter zu erklären, was Microsofts .NET nicht ist!
Zunächst ist es keine neue Sprache, deren Syntax und Bibliotheken Sie mühsam erlernen müssen.
Weiters ist .NET kein neues Betriebssystem – wie anderenorts gerüchteweise angedeutet. Schließlich
ist .NET nicht das Ende der Suche nach Lösungen für die Webentwcklung, nicht die eierlegende
Wollmilchsau. Es ist jedoch ein ziemlich guter Anfang auf der Suche nach besseren Lösungen
.NET ist ein Rahmenmodell, ein Zusatz bzw. eine Erweiterung zum Internet Information Server, der aber wiederum
Voraussetzung für .NET ist. .NET ist wirklich ein Rahmen, ein Modell für die Entwicklung von webbasierenden
Anwendungen, die "Web-Services" genannt werden.
Beispielsweise ist es ein Ziel Microsofts, seine Office-Applikation im Web zum Laufen zu bekommen. Dadurch sollen
User nicht die CD´s kaufen müssen, sondern eben ihre Dokumente online erstellen und dafür Miete bezahlen.
Dies geschieht mit Hilfe von .NET. Anstatt also Hunderte von Megabytes an Software zu installieren loggt man sich
in Office.NET ein und fängt zum Arbeiten an. Dementgegen stehen natürlich die derzeitigen Bandbreitenprobleme
im Netz und auch die liebgewordenen Gewohnheiten der User. Möglicherweise werden wir auch eine Hybrid-Version von
Office sehen, die auf wirklich allen Plattformen gleichermassen funktioniert.
Was also gestaltet Microsofts .NET? Gute Frage! .NET ist kein eindeutiges Konzept, aber wenn sie mit
Enterprise Java Beans vertraut sind, dann haben sie bereits eine Ahnung was .NET sein soll. Im Allgemeinen ist
das .NET Framework eine 3-teilige Modul-Architektur für das Entwickeln von webbasierenden Anwendungen. Das
eigentliche "Hirn" von .NET, die ganze Anwendungslogik, sitzt im mittleren Modul. Das erste Modul dieser Architektur
ist alles das, was der User sieht und erhält, also quasi das "Front-End". Im mittleren Modul sitzt also die komplette
Anwendungslogik. Eben alles, was notwendig ist, um die Daten vom ersten Modul zum dritten Modul und zurück zu senden.
Das dritte und letzte Modul ist dann quasi das "Back-End", indem sich die Datenbank und vieles weitere befindet. Die Vorteile
dieser dreiteiligen Architektur liegen auf der Hand: Durch die Trennung von Logik, Datenbank und Darstellung können
Sie beispielsweise ihre Verarbeitungslogik ändern, ohne dass Sie in das "Front-End" eingreifen müssen und ihre
schöne, funktionierende Anwendung "hinüber" ist.
Wie ich vorhin erwähnte, haben Enterprise Java Beans (EJB) diese Architekturmodellierung bereits vorweggenommen. In einer
derartigen "three-tiered" Architektur mit EJB haben Sie ein Bündel von EJB's, die JAVA-Programme sind, die für
verschiedene datenverarbeitende Aufgaben verwendet werden. Dann schreiben Sie Seiten, die mit diesen EJB's "sprechen"
und stellen die gewünschte Ausgabe dar. Sehr ordentlich, aber begrenzt, weil Sie JAVA benutzen müssen.
Nicht jeder kann und will dazu Java verwenden.
Microsoft hat hingegen dem .NET Framework eine Logik spendiert, dies in jeder möglichen Sprache zu realisieren.
Nochmals:
In jeder möglichen Programmiersprache!
Das bedeutet, Sie können Teile in C++, Perl, oder aber auch Essentielles in JAVA, Pascal entwickeln oder sogar
Microsofts C # (eine Sprache, die die Power von C++ endlich mit absoluter Benutzerfreundlichkeit kombiniert) verwenden
und viele Sprachen mehr. NET kompiliert ihre Bausteine dann in die Zwischensprache IL (IL = Intermediate Language),
die der Server versteht. Tatsächlich geht .NET sogar soweit, dass Sie eine Funktion beispielsweise in Java
programmieren und Variablen und deren Werte zu den Funktionen führen, die in einer beliebigen anderen Sprache
programmiert werden. Natürlich können in der Grundausstattung vom .NET Framework nicht sofort alle Sprachen
eingesetzt werden, Microsoft wird voraussichtlich standardmäßig C++, C#, JScript und Visual Basic mitliefern.
Alle anderen Sprachen werden von Drittherstellern entwickelt und werden nach und nach erhältlich sein. Soweit
bekannt werden derzeit .NET Compiler-Module für APL, Cobol, Pascal, Eiffel, Haskell, ML, Oberon, Perl, Python, Scheme,
Smalltalk, Java von diesen Herstellern entwickelt.
Die Zukunft von ASP = ASP.NET
Aus der Perspektive des Entwicklers ist ASP.NET vermutlich eine der aufregendsten Sachen von
.NET. Asp ist grundlegend überarbeitet bzw. neu "erfunden" worden. ASP.NET-Dateien erhalten jetzt die
.aspx-Extension. Dadurch arbeiten ihre bisherigen ASP-Seiten genauso wie Sie es gewöhnt sind. Sie müssen ihre
Seiten also nicht überarbeiten.
ASP.NET ermöglicht eine große Anzahl von schönen Dingen,
wie verbesserter Datenbanksuchroutinekompatibilität mit HTML-Server-Site-Controls, einfachere Konfiguration und
Anwendungsentwicklung, ein deutlich sauberer Code und Benutzerfreundlichkeit. In den folgenden Zeilen werfen wir einen
Blick auf einige Code-Zeilen von ASP.NET.
HTML Server-Site-Controls
ASP.NET hat große Fortschritte unternommen, um Kompatibilitätsprobleme bei der Ausgabe
zur Vergangenheit gehören zu lassen. Jeder Entwickler kennt den Alptraum den Versuch zu unternehmen, Webseiten auf
jeden Browser und auf jeder Plattform gleich aussehen zu lassen. Bisherige Lösungen sahen so aus, dass man
x-Browserweichen dynamisch einbauen musste, die dann browseroptimierte Seiten auslieferten oder gleich Mehrfachversionen
einer Seite zu bauen. Aufwendig sind beide Lösungen. Möglicherweise nutzen Sie die Browser-Capabilities-Komponente,
aber wenn diese nicht auf dem neuesten Stand ist, können Sie gute Resultate vergessen.
ASP.NET bringt in diesem Zusammenhang neue Server-Side Controls, die Ihnen Programmierarbeit ersparen und kompatiblen
Code für multiple Browser erstellen. Was bedeuten in diesem Fall Server-Side Controls? Nicht viel, denn es besagt
nur, dass der Code HTML-Elemente beeinhaltet, die auf dem Server laufen und client-seitig gerendert werden.
Beispiel: Sie haben in ihrem Code ein Formular-Tag wie:
<form name="meinFormular" action="meineaspseite.aspx" method="post">
Bisher wurde alles, was mit diesem form-Tag einhergeht, client-seitig verarbeitet. Fügen Sie nun runat="Server"
hinzu, sodass die Zeile so aussieht:
<form name="meinFormular" action="meineaspseite.aspx" method="post" runat="Server">
Jetzt ist dieses form-Tag ein Server Control! Jetzt wird diese Zeile vom Server behandelt und nur die visuelle
Darstellung vom Client. Doch machen wir weiter und geben dem Ganzen einen Sinn:
Server-Side Controls entlasten Sie bei der Programmierung von Formularen. Beispielsweise bei der Überprüfung
der eingegebenen Formulardaten. Hier ein kurzes Beispiel für das bisherige Aussehen des Codes:
<%if (Len(Request.Form("vorname")) > 0) OR (Len(Request.Form("nachname")) > 0) then
Dim vorname, nachname
vorname = Request.Form("vor_Name")
nachname = Request.Form("nach_Name")
ConfirmMsg = "Ihr Name lautet: " & vorname & " " & nachname
end if
%>
<html>
<head>
<title>ASP Form Beispiel</title>
</head>
<body>
<% if ConfirmMsg <> "" then %>
<h2><%= ConfirmMsg %></h2>
<% end if %>
<form action="meineseite.asp" method="post" name="Beispielformular">
Vorname:
<input type="text" name="vor_name">
<br>
Nachname:
<input type="text" name="nach_name">
<br>
<input type="submit" value="Submit Form">
</form>
</body>
</html>
Nun, soweit – so gut: Haben Sie aber ein Formular mit sehr vielen Feldern zum Ausfüllen wird die Formularprüfung
in der Programmierung schnell langweilig und aufwendig. Server-Side Controls machen dem ein Ende. Und zwar so:
Betrachten Sie den Code unterhalb und betrachten Sie anschließend den folgenden Quellcode vom Browser. Ist es nicht
erstaunlich, wie der Name und die Wertattribute automatisch ausgefüllt werden? O.K., möglicherweise ist es
nicht erstaunlich, aber wirklich nützlich. Auf einem Formular mit Tonnen von derartigen Feldern haben Sie eine Menge
an Zeit gespart, eine verringerte Dateigröße und selbstverständlich auch eine verbesserte Codelesbarkeit
garantiert.
Wie funktioniert es? Wie ich bereits ausführte, handelt es sich um ein Server-Side Control,
welches sich die Formularelemente mit der id von "vorname" und "nachname" merkt und an den Browser in einer
HTML 3.2-Version mit den ausgefüllten Formularfeldern überträgt. Wo sind die Unterschiede im Code?
<html>
<head>
<title>ASP Form Beispiel</title>
</head>
<body>
<%
if (Len(vorname.value) > 0) OR (Len(nachname.value) > 0) then
Response.Write("Ihr Name lautet: " & vorname.value & " " & nachname.value)
end if
%>
<form runat="server">
Vorname:
<input type="text" id="vorname" runat="server">
<br>
Nachname:
<input type="text" id="nachname" runat="server">
<br>
<input type="submit" value="Submit Form">
</form>
</body>
</html>
Quellcode des Browsers:

Zunächst machen wir eine kleine Formularüberprüfung, d.h. Vor- und Nachname werden geprüft, ob in
diesen Variablen etwas enthalten ist. Len(vorname.value) > 0 ODER Len(nachname.value) > 0 -
In anderen Worten: Vor- und Nachname müssen zumindest 1 Zeichen enthalten. Jedoch, wie ist dies möglich, ohne
dass wir Request.Form verwenden? Einfach durch die Art und Weise wie .NET Zustände sichert und Server Controls damit
beschäftigt.
Jedes Server Control hat eine id-Bezeichnung. ASP.NET verlangt, dass diese ID eindeutig ist um sie entsprechend
handlen zu können. Wie Sie vom Ergebnis des Quellcodes erkennen können, benutzt der Server diese Kennzeichnung,
um die erforderlichen Attributnamen und -werte zuzuweisen. Ausserdem ist es jetzt möglich, jedes
Element anzusprechen, indem man gerade die Identifikation verwendet, die Sie zugewiesen haben.
Obiges Beispiel ist selbstverständlich nur ein winziger Ausschnitt der ASP.NET Features. Mit Server-Side Controls
können Sie mittels einfacher Programmierung dynamische Seiten bauen, Feldgültigkeitsprüfungen einbauen,
und und....
Wenn Sie Erfahrung mit VB-Formularen haben, dann ist ASP.NET eine willkommene Veränderung, weil sie ein
ähnliches Konzept implementieren, nämlich die Web Forms, die auf einer technischen höheren Ebene
operieren, als jener, die ich Ihnen vorstellte. Sie haben hoffentlich gemerkt, dass das Erlernen von ASP+ nicht so
schwierig ist, aber dafür umso nützlicher.
Abschließende Gedanken
Microsofts .NET Framework könnte, ich betone könnte, für die Web-Entwicklung und Programmierung
eine phänomenale Verbesserung werden. Revolution - wie im Titel des Artikels angedeutet - wird es aufgrund der aktuellen
Entwicklung rund um Microsoft (Gerichtsurteile, Imageprobleme, Sicherheitsprobleme) sicherlich nicht werden. Ein Flop
wird es auch angesichts der noch immer vorhandenen Marktpower von Billys Mannen auch nicht werden. Und mit
Marketingtricks muss man bei Microsoft sowieso immer rechnen.
Was benötigen Sie um .NET-Anwendungen laufen zu lassen? Ist es die kompatible Hybrid-Plattform? Wahrscheinlich nicht.
Microsoft hat angegeben, daß NET eine plattformunabhängige Lösung ist, aber das ist noch nicht wirklich zutreffend.
Soweit es Microsoft-Plattformen betrifft, wird .NET auf den bekannten OS-Systemen Win2k, NT4 und Win9x/ME sicherlich
funktionieren. Es scheint ziemlich dumm, andere Plattformen für solch ein großes Konzept nicht zu
unterstützen, aber dies ist die bekannte MS-Politik. Es gibt aber Gerüchte, dass eine kompatible Version für
Linux/Unix in Arbeit sei.
Wie komme ich zu .NET? Wenn Sie mit Windows 2000, NT4, 98 oder Me arbeiten, dann können Sie sich die Beta 1
herunterladen. Vorsicht: Es sind etwa 111 MB und das .NET Framework sollte nicht auf Produktionsmaschinen installiert
werden. Nicht vergessen: Es ist eine Beta 1-Version. Die Version läuft aber schon sehr stabil.
Weitere Voraussetzungen: MDAC V 2.6 (Data Access Components) und Internet Explorer 5.5.
Download:
Microsoft .NET
Microsoft Show zu ASP.NET (Erklärungen, Tipps etc.):
ASP.NET Show
Weitere gute Anlaufstellen für deutschsprachige ASP-Entwickler:
ASP-German
ASP-Heute
ASP-Welt
ASP-Aktuell
|
see-programming
Home
Programmierung
Philosophie
Referenzen und Projekte
Kontakt
Newsletter
querdenker
Frühere Ausgaben
Impressionen - aus den Tiefen des Netzes
Impressum
Haftungsausschluss
|