Querdenker - das Online-Magazin mit News zum Nachdenken
Nr. 2 - Januar/Februar 2001 - Bedenkenswertes, Erlesenes und Quergedachtes
Linie horizontal

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:

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
Linie horizontal