Leistungen
Leistungen
Überblick
Leistungsangebot
Kernkompetenzen
Schulungsthemen
In-House-Schulungen
Offene .NET-Seminare
Offene WPS-Seminare
Beratung
Support
.NET/Visual Studio
TFS/ALM/Scrum
Webprogrammierung
PowerShell
Konditionen
Anfrage/Kontakt
In-House-Schulungen
In-House-Schulungen
Überblick
Themen
Schulungskonfigurator
Konzepte
.NET/Visual Studio
C#
VB.NET
ASP.NET
TFS/ALM/Scrum
PowerShell
Konferenzvortraege
Referenzkunden
Trainerprofile
Konditionen
Anfrage
Offene Schulungen
Offene Schulungen
Überblick .NET-Seminare
.NET/C#-Basisseminar
WPF (Desktop)
ASP.NET/AJAX (Web)
WCF/WF (SOA)
ADO.NET/EF (Data)
Windows PowerShell
.NET
.NET
Startseite
Beratung/Training
Offene .NET-Seminare
Einführung
Lexikon
Artikel
Bücher
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
World Wide Wings Demo
Codebeispiele
Scripting
ASP.NET
.NET 2.0
.NET 3.0/3.5
.NET 4.0
Community
Forum
Kommerzielle Leistungen
ASP.NET
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Mehr zu ASP.NET 1.x
Mehr zu ASP.NET 2.0
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
PowerShell
PowerShell
Überblick
Beratung
In-House-Schulungen
Öffentliche Schulungen
Codebeispiele
Commandlet Extensions
Windows Scripting
Windows Scripting
Startseite
Lexikon
FAQ
Buecher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
WMI-Klassenreferenz
Scripting-Tools
WSH-Editoren
Codebeispiele
ASP.NET
.NET-Scripting
Forum
Links
Kommerzielle Leistungen
Windows Server
Windows Server
Startseite
Lexikon
Forum
Service
Service
Website-FAQ
Anmeldung/Login
Leser-Registrierung
Gast-Registrierung
Nachrichten/RSS
Newsletter
Foren
Weblog Deutsch
Lexikon
Downloads
Support
Kontakt
Literaturtipps
Publikationen
Publikationen
Redaktionsbüro
Bücher
Fachartikel
Leser-Portal
Autoren gesucht!
Rezensionen
Über uns
Über uns
Holger Schwichtenberg
Team
Referenzkunden
Kundenaussagen
Referenzprojekte
Partner
Site Map
Tag Cloud
Impressum
Rechtliches
AGB

Kapitel 4: Objektorientierung

Das Webforms-Programmiermodell in ASP.NET ist objektorientiert und ereignisbasiert (ähnlich der Entwicklung von Desktop-Anwendungen mit Visual Basic 6.0 und Windows Forms in .NET). Bei den Serversteuerelementen sind zwei Darstellungsformen zu unterscheiden: In der .aspx-Seite sind Serversteuerelemente(Server Controls) repräsentiert durch Tags (Serversteuerelement-Tag oder Server Control Tag) mit dem Attribut runat="server" und einem Präfix (im Standard asp:). Im Rahmen der serverseitigen Programmierung werden die Serversteuerelemente durch .NET-Objekte (Serversteuerelementobjekt oder Server Control Object) repräsentiert mit Attributen, Methoden und Ereignissen. In dem Serversteuerelementobjekt ist die Logik für das Adaptive Rendering hinterlegt.

Ein Serversteuerelementobjekt ist eine Instanz einer von der Klasse System.Web.UI.Control abgeleiteten Klasse. Ein Webform selbst ist eine von der Klasse System.Web.UI.Page abgeleitete Klasse. Sie wird auch als Seitenklasse bezeichnet.

HINWEIS
Um die Herausforderungen des parallelen Zugriffs durch zahlreiche Benutzer muss sich der Entwickler in ASP.NET (anders als beispielsweise in Java Servlets) keine Gedanken machen, da jeder einzelne Aufruf eine eigene Instanz der von Page abgeleiteten Seitenklasse erhält.

Abbildung 4.2    Abstraktion durch Serversteuerelemente

Das Serversteuerelementobjekt wird durch die Tag-Deklaration in der Webseite initialisiert und durch den serverseitigen Programmcode im Folgenden manipuliert. Die generierte Ausgabe ist die Mischung aus in den Tags hinterlegten Vorgaben und dem Programmablauf.

 

Deklaration in der .aspx-Seite (Serversteuer­element-Tags)

Verwendung im Programmcode (Serversteuerelementobjekt)

<asp:TextBox id="Vorname" runat="server">kein Name
eingetragen </asp:TextBox>

Vorname.Text = "Holger"

Tabelle 4.1    Verwendung von Serversteuerelementen

HINWEIS
Der objektorientierte programmatische Zugriff auf den Inhalt der Webseite löst das sequenzielle Erzeugen von HTML-Quellcode ab, das im klassischen ASP und in verwandten Techniken wie PHP verwendet wird. Microsoft macht dazu die Werbeaussage, dass in ASP.NET gegenüber ASP zwischen 40 % und 70 % weniger Programmcode geschrieben werden muss. Ab ASP.NET 2.0 soll der Aufwand nochmals um 70 % reduziert worden sein.

Beispiel

Anhand eines einfachen Beispiels kann der Unterschied in der Programmierung zwischen dem klassischen »Hinausschreiben« von HTML und der objektorientierten Programmierung in ASP.NET gezeigt werden. Die Anwendung erhöht den Wert in einem Eingabefeld bei jedem Roundtrip um eins. Wenn die Zahl gerade ist, bekommt das Textfeld einen gelben, sonst einen grünen Hintergrund.

Abbildung 4.3    Erhöhen eines Zählers in einem Eingabefeld

<!--- Formulardefinition ASP -->
<FORM id="Form1" method="post">
<INPUT name="count1" type="text"       value="<%=Request("count1")+1%>"
<%if Request("count1") mod 2 = 0 then%>
style="BACKGROUND-COLOR: yellow">
<%else%>
style="BACKGROUND-COLOR: greenyellow">
<%end if%>
<BR>
<INPUT type="submit" value="erhöhen (ASP)" name="Submit1">
</FORM>

Listing 4.1    Lösung in ASP

In der Gegenüberstellung dazu folgt nun die elegantere Lösung in ASP.NET.

<!--- Formulardefinition ASP.NET -->
<FORM id="Form2" method="post" runat="server">
<asp:TextBox id="TextBox1" runat="server">1</asp:TextBox>
<asp:Button id="Button1" runat="server" Text="erhöhen (ASP.NET)"></asp:Button>
</FORM>
<script runat="server">
' === Ereignisbehandlung
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    TextBox1.Text = CInt(TextBox1.Text) + 1
    If CInt(TextBox1.Text) Mod 2 = 0 Then
      TextBox1.BackColor = System.Drawing.Color.Yellow
    Else
      TextBox1.BackColor = System.Drawing.Color.GreenYellow
    End If
End Sub
</script>

Listing 4.2    Lösung in ASP.NET

WICHTIG
In ASP.NET ist es auch weiterhin erlaubt, reines HTML sowie Render- und Display-Blöcke alternativ zu Serversteuer-elementen zu verwenden. Diese Inhalte können dann aber nicht über ein Objekt auf der Serverseite verändert werden. Um die gesamte Seite objektorientiert manipulierbar zu machen, muss man die Serversteuerelemente Label oder PlaceHolder verwenden. Allerdings benötigen diese Serversteuerelemente mehr Rechenzeit als statisches HTML. Der Einsatz sollte daher wohl überlegt sein.

 

Inhalt dieses Kapitels:


<< Kompatibilität zu Windows Forms Steuerelement-Hierarchie (Objektbaum) >>