320 likes | 469 Views
Softwareentwicklung mit .NET Teil 3 ASP.NET Web Forms Dr. Ralph Zeller. Internet. Web Form. Web Applikationen .
E N D
Softwareentwicklung mit .NET Teil 3 ASP.NET Web Forms Dr. Ralph Zeller
Internet Web Form Web Applikationen • ASP.NET definiert eine Web Applikation als„die Summe aller Dateien, Seiten, Handler, Module und Executables, die in einem bestimmten virtuellen Verzeichnis auf einem Web Server aufgerufen und ausgeführt werden.“ • Verteilte Applikationen Präsentation Middle Tier Datenbank Web Service
HTML Buch Elizabeth Castro Englisch: Peachpit Press, 2000 Deutsch: Markt und Technik, 2001
Alt: Active Server Pages • Was sind ASP? • Server Side Scripting • Datei enthält HTML und Script Code • Ausführung durch HTTP Aufruf • Script Code wird am Server interpretiert <%@ Language="VBScript" %> <html> <head> <title>Simple ASP Page</title> </head> <body> <h1>Today's date is <%= Date %></h1><p> <h1>The current time is <%= Time %></h1> </body> </html>
Alt: Active Server Pages • Was kann ich mit ASP machen? • Einfach und schnell Web Applikationen erstellen • Web Inhalte dynamisch erzeugen • Client Side Scripting zur Validierung • Funktionalität durch COM Komponenten erweitern (z.B. Datenbankzugriff)
ASP Hypothekar Rechner • method = "post" • Formulardaten werden im HTTP Header übertragen • action = "Hcalc.asp" • Weist auf die ASP Seite, die durch drücken von “Berechnen” aufgerufen wird • Postback • Scriptobjekte werden automatisch mit den Werten in den Eingabefeldern initialisiert. • Eingabe verschwindet • Zustand der Eingabefelder wird nicht am Server gespeichert
Web Client ASP.NET Applikationen IIS .NETFramework Betriebssystem Neu: ASP.NET • Pattform für Web Applikationen • Neues Ausführungsmodell
ASP.NET Konzept • Trennung von UI und Programmcode • Basiert auf .NET Framework • Code wird beim ersten Aufruf einer Seite compiliert • Zustandsmanagement • Mehrer Programmiersprachen können verwendet werden • Dateiupdate bei laufenden Serverbetrieb
ASP.NET Hyp. Rechner • Web Controls ersetzen <input> Tags • Web Controls laufen am Server (RunAt = "server") • Server Side Scripts können Web Controls durch ihre ID direkt referenzieren (ID = "Kapital") • C# Script • Verbindung zum Script über OnClick Attribut • Input Daten werden direkt aus Web Control gelesen • Output wird an ein Label Control übergeben • <form> Tag hat kein Methoden oder Action Attribut • Kein extra Code für Postback
ASP.NET Anwendungen • Eine Anwendung besteht aus • ASP.NET Pages • .aspx Files mit WebForms • .cs, .vb, … Files mit Code • Komponenten (Assemblies) • Konfigurationsdateien • config.web • global.asax • Sämtliche Elemente einer Anwendung müssen sich in einem Verzeichnis befinden
Aufbau einer Anwendung C:\Inetpub\wwwroot \MyApp2 \MyApp1 rc1.aspx rc2.aspx \bin am1.aspx config.web global.asax config.web assembly1.dll assembly2.dll
Konfiguration • App Settings • Datei Web.config im root-Verzeichnis • globale Standardeinstellungen, die für alle ASP.NET Anwendungen gelten, befinden sich in folgender Datei • \Windows\Microsoft.NET\Framework\<version>\config\Machine.config • App Events • Datei global.asax im root-Verzeichnis
Events • Events strukturieren Programmablauf • Vereinfacht die Organisation des Codes • Vermeidet Spagetticode • Code kann auf Page Events reagieren • Page_Load • Page_Unload • Code kann auf Control Events reagieren • Button1_Click • Textbox1_Changed
Event Modell • Client feuert Event – Server verarbeitet Event • Verbindung zwischen Event und Handler durch "On" vor Eventnamen und Verwendung als Attribut Event Message Server Web Client Parse Message Event Aufruf Event Handler Event Handler Antwort // ListBox ruft bei jeder Änderung SelectedIndexChanged auf <asp:ListBox ID="MyListBox" RunAt="server" OnSelectedIndexChanged="OnNewSelection"/>
Lebenszyklus einer Seite Page_Load Control Events Textbox1_Changed 1. Change Events Button1_Click 2. Action Events Page_Unload
Page_Load Event • Wird bei jeder neuen Instanz der Seite ausgelöst • Alle Input Werte sind bereits vorhanden • Noch keine Ausgabe an den Client erfolgt <script language="C#" runat="Server"> void Page_Load (Object sender, EventArgs e) { // ISPostBack ist ein Property der Page Klasse if (IsPostBack == false) // Hier wird z.B. eine Datenbank abgefragt, // mit dessen Werten einige Controls der Seite // initialisiert werden. } </script>
Code und Daten trennenCode-behind • Code innerhalb der <script> Tags wird in .cs Datei ausgelaget • .aspx File enthält keinen Code • Page Direktive verbindet .aspx und .cs Datei • Diese Technik nennt man Code-behind <%@ Page Inherits="SeiteBerechnen" Src="HCalc2.cs" %>
Server Controls • ASP.NET enthält 45 Server Controls • diese sind nach logischen Kriterien gruppiert • HTML Controls • Controls / Properties entsprechen 1:1 HTML Elementen • Web Controls • Grundlegende Controls • List Controls • Rich Controls • Validation Controls
HTML Controls • abgeleitet von System.Web.UI.HtmlControls • Unterschied zu normalen HTML Tags • HTML Controls • <a>, <img>, <form> • <table>, <tr>, <td>, <th> • <select>, <textarea>, < input type=button>, • <input type=text>, <input type=file>, • <input type=check>, <input type=button>, • <input type=radio>, <input type=hidden> <input type="text"> // normales HTML input Feld <input type="text" runat="server" /> // HTML Control
Web Controls • Abstrakte Controls • Kein 1:1 Mapping zu HTML Server Controls • abgeleitet von System.Web.UI.WebControls • umfangreiche Funktionalität • z.B. Calendar Control • Automatische Anpassung an den Browser • z.B. enthält das RequiredFieldValidator Control Client-seitiges Scripting, wenn der Browser das unterstützt • einheitliches Objektmodell • eventgesteuertes Programmiermodell
Custom Controls • Selbstentwickelte, compilerte Web Controls • Mit Internet Service Manager ein Virtuelles Verzeichnis \Inetpub\wwwroot\<appname> erstellen • Code übersetzen • csc.exe /target:library MyClass.cs • Filecopy in das bin-Verzeichnis der Anwendung • copy MyClass.dll \Inetpub\wwwroot\<appname>\bin • .aspx File anlegen und Control benutzen
User Controls • Mit User Controls können Teile einer WebForm zu einem eigenständigen Control zusammengefasst werden • Dadurch können wiederverwendbare UI Komponenten erstellt werden • User Controls verhalten sich wie Objekte • Properties, Felder, Events, Methoden • Dateiendung ist .ascx
Uff... Fragen?