Titel: Web - Programmierung mit ASP.NET

Untertitel: Nettes aus dem Hause Microsoft

 

Einleitung:

Im Zuge der Veröffentlichung des .NET Frameworks wurde das Thema ASP.NET

für die Entwickler aktuell. Die Technologie fördert die Entwicklung von dynamischen und leistungsfähigeren Web Lösungen. ASP.NET bietet dem Web Entwickler etliche neue Features und reiht sich nahtlos in die .NET Umgebung ein.

 

Fließtext:

ASP.NET hat nichts mehr mit Active Server Pages (ASP) gemein. Die Architektur ist komplett anders aufgebaut und bietet eine größere Leistungsfähigkeit. ASP.NET stellt standardmäßig vielzählige Funktionalitäten (Sessions, Validierung, States) bereit, welche der Entwickler in der Vergangenheit selbst codieren mußte. Dabei konnte die Kompatibilität zu ASPgrößtenteils gewahrt werden.

 

Überschrift: ASP.NET

Primär ist .NET eine Entwicklungsplattform für Enterprise Anwendungen. Mittels ASP.NET vollzieht sich ein Wandel in der Programmierung von dynamischen Websites. Der Entwickler kann zwischen zahlreichen Programmiersprachen (Visual Basic, C++, C#) frei wählen und ist auf keine Sprache festgelegt. ASP war auf Skriptsprachen wie VBSkript oder JSkript ausgelegt. Der Web Entwickler profitiert von den objektorientierten Programmiersprachen. OOP Sprachen sind um einiges leistungsfähiger als Skriptsprachen. So können sämtliche integrierte Klassen und Namespaces (Familie von Klassen) des .NET Frameworks bei der Entwicklung genutzet werden. Die Entwicklung von Web Lösungen ist somit leichter als in der Vergangenheit. Die mitgelieferten Features von ASP.NET vereinfachen den Entwicklungsprozeß zusätzlich. Die Entwicklungszeit verkürzt sich, während die Entwicklungskosten gesenkt werden. Das alles ist möglich, da nicht mehr soviel zu codieren ist. Die Ziele von ASP.NET sind vielfältig. Das oberste Ziel ist es, daß nur noch ein einziger Code für alle Browser benötigt und somit alle Anpassungsarbeiten entfallen. Ebenso stellt ASP.NET eine identische Grundfunktionalität (Web Forms / Web Controls) allen Browsern als Basis zur Verfügung. Die Verarbeitungsgeschwindigkeit spielt für Business Anwendungen eine entscheidende Rolle. Es findet keine Interpretierung mehr statt - alles wird kompiliert. Damit die Zukunft gesichert ist, unterstützt ASP.NET konsequent die neuen Technologien SOAP und XML.

 

Überschrift: Web Services

Die Entwicklung geht heute eindeutig zu Web Diensten (Web Services) hin. Komplette monolithische Web Applikationen gehören der Vergangenheit an. Für eine breite Bereitstellung solcher Web Dienste ist der Einsatz offener Standards unumgänglich. Ein Web Service stellt seinen Dienst bzw. seine Funktionalität weltweit im Web zur Verfügung. Die ein interessierten Clients können daraufhin ermitteln, welchen Zweck der Dienst erfüllt und ob dieser Dienst überhaupt für sie in Frage kommt. Deshalb wurde in ASP.NET das sogenannte SOAP (Simple Object Access Protocol) Protokoll integriert. Es erlaubt einen möglichst flexibeln Datenaustausch zwischen Client und Server. Da SOAP auf XML aufsetzt und über HTTP übermittelt wird, stellen Firewalls kein Kommunikationsproblem dar.

 

Überschrift: ADO.NET

Die meisten Web Services dürften kaum um die Datenspeicherung in einer Datenbank herumkommen. Somit wird ein ASP.NET Programmierer häufig auf ADO.NET zugreifen müssen. ADO.NET ist eine konsequente Weiterentwicklung von ADO (Microsoft ActiveX Data Objects). Es stellt ein standardisiertes Entwicklungsmodell für den Datenaustausch zwischen Applikationen  dar. Das Kernstück von ADO.NET ist die Basisklasse DataSet. Das DataSet ist eine im Speicher abgelegte Kopie von einzelnen Datenbankinhalten. Im DataSet sind mehrere Tabelleninhalte ablegbar. Während der Arbeit mit einem DataSet besteht keine aktive Verbindung mit der physikalischen Datenquelle. Es wird alles im DataSet zwischengespeichert.

 

 

Überschrift: Das Entwicklungssystem „Visual Studio .NET“

Visual Studio.NET ist zur Entwicklung von ASP.NET Sites prädestiniert. Das RAD Werkzeug hebt den Code farblich hervor und Fehler werden schnell ausfindig gemacht. Zusätzlich hilft es aktiv bei der Programmierung, indem es Anweisungen (Statements) komplettiert. Ebenso lassen sich Formulare visuell erstellen. Hierzu zieht man die entsprechenden Server Controls per Drag & Drop auf das Formular. Natürlich verfügt das Werzeug über eine Projektverwaltung, welche alle Dateien des Projektes auflistet. Innerhalb des Browsers kann die gesamte .NET Dokumentation eingesehen werden. Dort ist ein entsprechendes Quick Start Tutorial für ASP.NET zu finden.

 

Überschrift: Die Grundvorausssetzungen

Um ASP.NET unter Windows NT nutzen zu können, muß zuerst das Service Pack 6a aufgespielt werden. Anschließend ist der Web-Server Internet Information Server (IIS) zu installieren. Das Produkt ist im NT Option Pack enthalten und ist von der Web Site:

http://www.microsoft.com/msdownload/ntoptionpack herunterladen. Windows 2000 wird bereits mit dem Web-Server ausgeliefert. Zum Schluß ist nur noch das .NET Framework SDK zu installieren. Es läßt sich über die Site:  http://www.microsoft.com/downloads beziehen.

 

Überschrift: .NET Internas

Da .NET über eine gemeinsame Laufzeitmaschine (Common Language Runtime) verfügt, können verschiedene Sprachen (Visual Basic, C++, C#) bei der Programmierung zum Einsatz kommen. Das ermöglicht flexiblere Möglichkeiten als in der Vergangenheit. Die ASP Seiten wurden auf dem Server interpretiert und kosteten so unnötig Rechenzeit. Für heutige Enterprise Anwendungen ist dieses Konzept nicht weiter tragbar. Deshalb werden ASP.NET Sites zuerst in eine Zwischensprache

MSIL (Microsoft Intermediate Language) kompiliert. Bei dieser Kompilierung werden sogenannte Metadaten erzeugt. Die Daten beschreiben, welchen Leistungskatalog bzw. Funktionalitäten der Code erfüllt. Zum Schluß wird von der Laufzeitmaschine nochmals eine Kompilierung in eine native Sprache durchgeführt. Es erfolgt eine gezielte Kompilierung für einen jeweiligen Rechnertyp. Eine hohe Verarbeitungsgeschwindigkeit ist somit sichergestellt. So wird es möglich, daß die Laufzeitmaschine (Common Language Runtime) mit einer Vielzahl von Sprachen arbeiten kann. Die Parallelen zur Sprache Java sind hierbei unverkennbar. Jedoch wird die CLR dort JVM (Java Virtual Maschine) genannt.

 

Überschrift: Verarbeitungsweise einer Web Anwendung

Jede Web Anwendung basiert auf dem Client / Server Modell. Zuerst sendet ein Client eine Anfrage (Request) an den Web-Server und fragt eine bestimmte ASP.NET Site ab.

Anschließend kompiliert die CLR Runtime diese Datei beim ersten Aufruf in eine .NET Klasse. Für alle weiteren Anfragen steht dieses Kompilat direkt zur Verfügung. Weil der Code kompiliert ist und sich trotzdem dynamisch verwenden läßt, entsteht ein enormer Geschwindigkeitsvorteil. Eine ASP.NET Site besteht aus reinem Text und verfügt über die Dateiendung “.aspx”. So kann der Web-Server diesen Dateityp erkennen und entsprechend

verarbeiten. Auf dem Web-Server wird die .NET Klasse ausgeführt und die entsprechenden HTML-Codefragmente für die Darstellung oder Präsentation an die Clientseite generiert und gesendet. Somit gelangt eine browserunabhängige Site an den Client.

 

Überschrift: Das Programmiermodell

ASP.NET führt ein neues Programmiermodell für die Programmierung dynamischer Web Sites ein. Es handelt sich um ein serverseitiges Objektmodell für alle Elemente einer Web Site. Es führt neue Arten von Controls sogenannte „Server Controls“ ein. Jedes Server Control repräsentiert ein Kontrollelement einer Web Site und wird auf dem Server instanziert. Jedoch sind Server Controls gegenüber reinen HTML Controls vollständig kontrollierbar, da es sich um wirkliche Objekte handelt. Diese verfügen über Eigenschaften, Ereignisse und Methoden. Darüber werden diese je nach Situation manipuliert.

 

In ASP.NET gibt es vier Arten von Server Controls zu unterscheiden:

1. HTML Server Controls

2. Web Controls

3. Validation Controls

4. User Controls

 

Die HTML Server Controls sind serverseitige Repräsentationen der gewöhnlichen HTML Formularelemente. Dessen Funktionalitäten sind stark an die HTML Controls angelehnt. Jedoch sind diese vollständig konsistent zu HTML Controls. Web Controls sind ähnlich zu sehen, jedoch lassen sich damit komplexere Benutzeroberflächen erzeugen. Diese Web Controls umfassen nicht nur Formularelemente, sondern stellen auch Spezialcontrols zur Verfügung. Ein ASP.NET Entwickler sollte standardmäßig auf diese Controls setzen. Über Validation Controls können Benutzereingaben sehr leicht überprüft werden. Bisher mußte dies selbst codiert werden. User Controls sind selbst entwickelte Controls, um spezielle Funktionalitäten bereitzustellen.

 

Überschrift: Server Controls

Alle Server Controls werden auf dem Server erzeugt und für den Client als HTML aufbereitet. ASP.NET arbeitet so völlig clientneutral. Zahlreiche standardmäßigen Kontrollelemente (Web Controls) wie Eingabefeld, Listenauswahl, Schaltfäche, HyperLinks werden als fertige Komponenten von .NET mitgeliefert. Natürlich existieren auch Web Formulare. Die Web Formulare sind genauso leistungsfähig wie Visual Basic Formulare. Dies schafft völlig neue Möglichkeiten in der Formularverarbeitung. Der Aufbau  des Codes ist jetzt wesentlich transparenter, da eine übersichtliche Trennung zwischen HTML-Design und ASP.NET Code erfolgt.  Selbstverständlich können diese Server Controls auf Ereignisse reagieren. Dazu werden vom .NET System gezielt Events ausgelöst. Um auf diese reagieren zu können, sind sogenannte Behandlungsroutinen im Code zu implementieren. Beispielsweise kann das Drücken einer Schaltfläche ein Ereignis auslösen. Durch dieses Konzept wird die Programmierung erheblich vereinfacht. Es ist nicht mehr nötig die umständlichen IF, THEN, ELSE Anweisungen zu codieren.

 

Überschrift: Das erste Beispiel

Nun beginnen wir mit unserem ersten ASP.NET Beispiel. Es verdeutlicht die Programmiertechnik beim Einsatz der Web Form Controls. Zu Beginn wollen wir ein Formular entwerfen, wo später der Name, Alter und Wohnort in die einzelnen Eingabefelder eingetippt werden sollen.

Im Quelltext ist zuerst anzugeben, in welcher Programmiersprache die ASP.NET Site geschrieben ist. Nur so ist .NET in der Lage, diese Site entsprechend zu verarbeiten. Über die

Anweisung <%@ Page Lanuguage=“C#“ %> geben wir die Sprache C# vor. Danach folgt der HTML Code zur Seitenaufbereitung. Über den Tag <FORM> geben wir den konkreten Formularbereich an. Der Zusatz runat=“server“ gibt an, daß die Server Controls von ASP.NET zum Einsatz kommen. Wird dies vergessen, sind die Controls nicht ansprechbar. Über den Tag <asp:textbox> sind die einzelnen Eingabefelder zu definieren. Das Formular soll auch bestätigt werden können, wozu eine Schaltfläche nötig ist. Diese wird über den Tag <asp:button id=”submit” text=”submit” runat=”server”/> angegeben. Im Detail sieht das Ganze so aus:

 

<%@ Page Lanuguage=“C#“ %>

<html>

<body>

<h2>ASP.NET Programmierbeispiel #1</h2>

<form method=“post“ runat=“server“>

Name: <asp:textbox id=“input“ runat=“server“/>

Alter: <asp:textbox id=“input“ runat=“server“/>

Wohnort: <asp:textbox id=“input“ runat=“server“/>

<asp:button id=”submit” text=”submit” runat=”server”/>

</form>

</body>

</html>

 

In der Praxis sind sinnvollere Lösungen gefragt. Nach der Dateneingabe sollte eigentlich eine Antwortsite an den Client gesendet werden. Dies wird im nachfolgenden Beispiel realisiert.

 

Überschrift: Das zweite Beispiel

Mit ASP.NET lassen sich auch einzelne Sitzungen (Sessions) verwalten. Das Web ist dazu nicht in der Lage, da es ein statusloses Medium ist. ASP.NET stellt deshalb das Objekt Session  zur Verfügung. Es erlaubt die Ablage von Werten innerhalb einer Sitzung. Solange ein Benutzer die Web Site besucht, ist die Sitzung aktiv und alles innerhalb der Sitzung kann gespeichert oder abgefragt werden. Die Sitzung ist beendet, sobald die Site verlassen wird. Die Programmierung fällt mittels des Objekts Session sehr einfach aus.

 

 

Angenommen, es erfolgt eine Benutzereingabe auf einer Website, welche zu verabeiten ist. Um diese Informationen auf anderen Sites nutzen zu können, muß der Name im Session Objekt gespeichert werden. Später kann auf den Namen zurückgegriffen werden. Es spielt keine Rolle, wieviele Werte innerhalb einer Sessions gesichert werden. Das folgende Beispiel wurde in der Sprache Visual Basic realisiert:

 

<%@ Page Language = „VB“ %>

<script runat=“server“>

  sub Submit_Click (obj as object, e as EventArgs)

   if tbName.Value <> „“

    Session(„Name“ = tbName.Value

    Response.Write(„Hi“ & Session(Name) & „!“)

   Else

   Response.Write(„You forgot to enter a name!“)

End if

End sub

</script>

 

<html><body>

<form runat=“server“>

Please enter your name:

<input type=“text“ id=“tbName“

runat=“server“/>

<p>

<asp:Button id=“tbSubmit“

text=“Submit“

runat=“server“

OnClick=“SubmitClick“/>

</form>

</body></html>

 

Zu Beginn des Beispiels wird überprüft, ob der Benutzer etwas ins Eingabefeld eingegeben hat. Über die Methode SubmitClick() ist das realisiert. Ist dies nicht der Fall, wird das Objekt Response genutzt, um eine Fehlermeldung auszugeben. Andernfalls wird das Objekt Session angelegt und der eingegebene Name in diesem Objekt gespeichert. Anschließend wird eine Antwortseite erzeugt, indem der User begrüßt wird. Jede Sitzung wird über eine eindeutige Sitzungs-ID verwaltet.

 

 

Überschrift: Objektorientierte Programmierung

Die Objektorientierung ist zu Beginn für jeden Web Entwickler schwierig.

Bisher konnte er kaum etwas wiederverwenden und mußte alles von Grund auf neu codieren. Zu Beginn ist dies eine enorme Umstellung. Die Basis der OOP (Objektorientierte Programmierung) sind Klassen. Das Klassenmodell des .NET Frameworks ist hierarchisch organisiert. Jede Klasse baut auf eine andere Klasse auf. Der Web Programmierer kann diese Klassen bei der Entwicklung nutzen. Ebenso können eigene entworfen und von anderen Klassen abgeleitet werden. Durch Klassen werden Funktionalitäten wiederverwendt ohne diese neu codieren zu müssen. Jede Klasse besteht aus Methoden, Variablen und einem Konstruktor. Die Konzepte der OOP wie Kapselung, Vererbung, Polymorphie können den Entwicklungsprozeß erheblich vereinfachen.

 

Es folgt nun eine Klassendefinition in der Sprache C#:

 

<script Language=C# runat=server>

public class SharpKlasse {

   // Variablen Deklarationsteil

   string text;

   // Der Konstruktor

   public SharpKlasse(string str)

   { this.text = str ; }

   // Methoden der Klasse

   public string HoleText()

   { return text; }

}

</script>

 

Bei dieser ASP.NET Seite ist die C# Klasse innerhalb eines sogenannten ASP.NET Wrapper eingebunden. So kann die C# Klasse auf dem Web-Server ausgeführt werden.

Zu Beginn des Skripts ist anzugeben, in welcher Sprache es geschrieben werden soll und dass das Skript auf dem Server ausgeführt wird. Wir definieren eine öffentliche Klasse über den Modifizierer “public”. Somit können fremde Programme diese Klasse nutzen. Danach wird die Variable “text” definiert, welche von der Klasse genutzt wird. Danach kommt der Konstruktor (SharpKlasse) für die Klasse. Das ist eine Methode worüber die Klasse erzeugt bzw. eine Instanz des Objekts angelegt wird. Der Konstruktor muß immer den gleichen Namen wie die Klasse haben. Grundsätzlich dient die Methode zur Initialisierung der Klasse und führt noch andere Operationen durch. Beispielsweise kann dieser Ressourcen reservieren oder Datenbankverbindungen aufbauen. Darüber hinaus stellt jede Klasse eine Vielzahl von Methoden der Außenwelt zum Aufruf zur Verfügung. Hierüber kann die Außenwelt das Objekt entsprechend manipulieren. Damit diese Methoden von außen erreichbar sind, müssen sie als „public“ definiert sein. In C# entspricht eine Methode im allgemeinen einer Sub bzw. Funktion in Visual Basic. Eine Funktion eines Objekts, die von ausserhalb des Objekts aufgerufen wird, nennt man Methode. Eine Objektmethode wird über die Syntax Objektname.Methode aufgerufen. Bis jetzt ist die Klasse nur definiert, welche irgendwann genutzt werden soll. Dies geschieht im reinen ASP.NET Teil des Quelltextes. Der ASP.NET Teil wird mit: <% @Page Language=“C#“ %> eingeleitet. Hier wird die Sprache der ASP.NET Site festgelegt. Im Allgemeinen müssen in einer ASP.NET Site alle Codeblöcke, sowohl  die innerhalb von <script> als auch innerhalb von <% %>, die gleiche Programmiersprache haben.

Im ASP.NET Teil wird mittels des Schlüsselworts new() eine neue Instanz der „SharpKlasse“ Klasse angelegt und in der Variable “meinObjekt” wird eine Referenz auf dieses Objekt abgelegt. Die Variable “meinObjekt” ist somit vom Typ SharpKlasse. Bei der Objekterzeugung werden verschiedene Übergabeparameter dem Konstruktor übergeben.

 

Der Quelltext nun im Detail:

<% @Page Language=“C#“ %>

<%

SharpKlasse meinObjekt = new SharpKlasse(“Hallo”);

%>

 

Schluß:

Dies war ein Einstieg in ASP.NET. Da ASP.NET mit beeindruckenden Features ausgestattet ist, läßt sich mit wenigen programmierten Zeilen sehr viel erreichen. Eine komplette Web Anwendung oder ein Web Dienst kann in kürzester Zeit implementiert werden. ASP.NET erspart dem Entwickler viel Arbeit und läßt ihm alle Freiheiten. Die Entwickler werden von der Leistungsfähigkeit von .NET auf jeden Fall profitieren.

 

Internet-Links:

www.asp.net

www.asp-zone.com

www.asp.superexpert.com

www.aspdeveloper.net