ASP.NET Überblick und technischer Einstieg Was ist neu? Code wird jetzt grundsätzlich kompiliert! VB-Script ist (endlich) abgeschafft! Die Metabase ist abgeschafft! WebForms WebServices Statemanagement Servererweiterungen ohne ISAPI ...

Download Report

Transcript ASP.NET Überblick und technischer Einstieg Was ist neu? Code wird jetzt grundsätzlich kompiliert! VB-Script ist (endlich) abgeschafft! Die Metabase ist abgeschafft! WebForms WebServices Statemanagement Servererweiterungen ohne ISAPI ...

ASP.NET
Überblick und
technischer Einstieg
Was ist neu?
Code wird jetzt grundsätzlich kompiliert!
VB-Script ist (endlich) abgeschafft!
Die Metabase ist abgeschafft!
WebForms
WebServices
Statemanagement
Servererweiterungen ohne ISAPI
...
2
ASP.NET Klassen
System.Web
Services
UI
Description
HtmlControls
Discovery
WebControls
Protocols
Caching
Security
Configuration
SessionState
3
Das ASP-Prinzip
ASP-Datei
ASP.DLL
Server
interpretieren
HTML
Browser
4
Das ASP.NET-Prinzip
ASPX-Datei
XSPISAPI.DLL
Server
.NET Klasse erstellen
gen<xx>.vb
kompilieren
gen<xx>.DLL
Controls rendern
HTML
Common
Language
Runtime
Browser
5
ASP.NET in der Übersicht
WebForms
HTTP
<HTML>
<script>
…
</script>
…
</HTML>
app.aspx
IIS
WebServices
SOAP
Common Language Runtime
class X {
[WebMethod]
public int
method1()
{…}
}
app.asmx
6
WebServices
Einfaches Programmiermodell
Erstellen Sie eine ASMX-Datei, die eine Klasse mit den Methoden
enthält, die Sie zur Verfügung stellen möchten
Das Hinzufügen des Attributs WebMethod zu einer Public-Methode
macht sie automatisch zu einem WebService
ASP.NET macht den “Rest”
• Erzeugen der Service-Beschreibung als
WSDL-Datei (WebService Description Language)
• Compile on demand
7
WebServices
8
WebForms
Keine Scriptsprachen mehr!
Verwenden „echter“ Sprachen: VB.NET, C#, ...
Seite wird beim ersten Aufruf komplett auf dem Server kompiliert
Server sendet dann die kompilierte Seite als HTML an den
Browser
Seiten können serverseitige UI-Controls verwenden
Diese Controls werden WebControls genannt
9
WebControls
Erkennbar am Zusatz runat="server"
Erzeugen serverseitig HTML 3.2-konformen Output
Zugriff auf Control-Eigenschaften anstelle eines x-fachen
"Request.<Controlname>"
Konsistenter Code: z.B.:
• <asp:TextBox runat="server">
• <asp:TextBox TextBoxMode="Password">
• <asp:TextBox Rows="5">
Einheitliches Objektmodell
Eventgesteuertes Programmiermodell
VB for the Web
10
WebControls
WebControls merken sich Ihren Zustand (Viewstate)
nach einem POST stehen die eingegebenen Werte
automatisch wieder in den Controls
realisiert über ein verstecktes Feld im HTML-Code,
den der Server generiert
Controls können zusammengesetzt werden
Einfaches Beispiel
2 Textfelder für die Eingabe von Vor- und Nachname einer Person
11
WebControls
12
Das DataGrid Control
Funktioniert wie das DataGrid Control in VB
bindet Daten aus einer Datenquelle an das Control
serverseitig wird auf der Basis der Daten eine HTML-Tabelle
erstellt und an den Browser geschickt
Aussehen der HTML-Tabelle kann über Templates angepasst
werden
13
DataGrid Control
14
HTML und Code trennen
Code übersetzen
csc.exe /target:library MyClass.cs
vbc.exe /target:library MyClass.vb
ASPX-Datei um folgende Zeile ergänzen
<%@Page Inherits="MyClass" Src="MyClass.cs"%>
Diese Technik nennt man CodeBehind!
15
CodeBehind
16
ASP.NET Anwendungen
Eine Anwendung besteht aus
ASP.NET Pages
• WebForms
• WebServices
Komponenten (assemblies)
Konfigurationsdateien
• config.web
• global.asax
Sämtliche Elemente einer Anwendung müssen sich in
einem Verzeichnis befinden
17
Aufbau einer Anwendung
C:\inetpub\applications
\MyApp2
\MyApp1
rc1.aspx
rc2.aspx
config.web
\bin
am1.aspx
global.asax
assembly1.dll
config.web
assembly2.dll
18
ASP und ASP.NET
Beide Anwendungsarten können parallel betrieben werden
Die Anwendungsmigration erfordert Änderungen
Scripte müssen innerhalb des Blocks
<script runat=server> … </script> deklariert werden
Syntaktische Änderungen in VB.NET gegenüber VB-Script
19
ASP und ASP.NET
Von VB-Script nach VB.NET
Parameter sind standardmäßig als ByVal deklariert
Die Schlüsselwörter SET und LET sind nicht mehr vorhanden
Es gibt keine Default-Eigenschaften mehr
• RS("Name").Value anstelle von RS("Name")
20
Installation
ASP.NET Anwendungen sind grundsätzlich voneinander
isoliert
Verschiedene Anwendungen können parallel mit verschiedenen
Versionen einer Komponente arbeiten
Installation einer ASP.NET Anwendung durch Erstellen
eines Verzeichnisses mit anschließendem Filecopy
Keine Registryänderungen (REGSVR32)
Keine Änderungen in der IIS-Metabase
Kein Neustart des Webservers
Uninstall
Verzeichnis löschen
21
Komponente installieren
Code übersetzen
csc.exe /target:library MyClass.cs
vbc.exe /target:library MyClass.vb
Filecopy in das bin-Verzeichnis der Anwendung
copy MyClass.dll \wwwroot\<appname>\bin\
Klasse anlegen und benutzen
22
Komponente entfernen
Entfernen der Komponente aus dem bin-Verzeichnis der
Anwendung
del MyClass.dll
23
Komponente aktualisieren
Filecopy der Komponente in das
bin-Verzeichnis der Anwendung
Aufrufen dieser Komponente innerhalb einer ASP.NET
Anwendung
Ändern Sie den Sourcecode und erstellen Sie eine neue
Version der Komponente
Führen Sie erneut ein Filecopy der Komponente in das
bin-Verzeichnis der Anwendung aus
24
Komponenten
25
Konfiguration
Konfigurationsdaten werden in XML-Dateien abgelegt
“human-readable and human-writable”
Keine speziellen APIs mehr (IIS-Metabase)
Einfaches Handling für Entwickler und Administratoren
Datei CONFIG.WEB
26
Konfiguration
App Settings
Datei CONFIG.WEB im root-Verzeichnis
global gültige Standardeinstellungen sind in folgender Datei zu
finden
• <windir>\Microsoft.NET\Framework\<version>\config.web
App Events
Datei GLOBAL.ASAX im root-Verzeichnis
27
App Settings
CONFIG.WEB im root-Verzeichnis erstellen
<configuration>
<appsettings>
<add key="dsn"
value="localhost;uid=sa;pwd=;Database=foo"/>
</appsettings>
</configuration>
Zugriff auf diese Daten mit folgendem Code
Dim Config as HashTable
Config = Context.GetConfig("appsettings")
Dim MyDsn = Config("dsn")
28
App Events
Bei einer unbehandelten Exception wird das Event
Application_Error gefeuert
Zugriff auf Request-Objekt vorhanden
Zugriff auf Exception-Objekt vorhanden
Mögliche Vorgehensweise
Eintrag in Eventlog erstellen
Einsatz der Framework-Klassen für den Zugriff auf das Eventlog
29
Settings und Events
30
Page Tracing
Folgende Direktive am Seitenanfang einfügen
<%@ Page Trace="True" %>
Trace-Aufrufe an den gewünschten Stellen hinzufügen
Trace.Write("MyApp", "Button Clicked")
Trace.Warn("MyApp", "Value: " + value)
Seite mit dem Browser aufrufen
31
App Tracing
CONFIG.WEB im root-Verzeichnis erstellen
<configuration>
<trace enabled="true"
requestlimit="10"/>
</configuration>
Zugriff auf die Aufzeichnungen per URL (à spezieller
HTTP-Handler)
http://localhost/approot/Trace.axd
32
Tracing
33
Debugging
CONFIG.WEB im root-Verzeichnis erstellen
<configuration>
<compilation debugmode="true"/>
</configuration>
Debugger einbinden (-> “attachen”)
Breakpoints setzen
Seite bzw. Service im Browser aufrufen
34
Debugging
35
Statemanagement
Cookieless session
Session ID wird in die URL eingebaut
Cookie auf der Clientseite nicht mehr notwendig
passiert automatisch, Code ist nicht erforderlich
Bei statischen und dynamisch generierten Seiten
External Session State
Statusinformationen werden extern gespeichert
Crash-Resistent, überlebt Neustarts
36
Cookieless Sessions
Für Session IDs werden keine Cookies mehr benötigt
Mitführen der Session ID in URL
Codeänderungen sind nicht erforderlich
37
Cookieless Sessions
CONFIG.WEB im root-Verzeichnis erstellen
Folgende Zeilen hinzufügen:
<configuration>
<sessionstate cookieless="true"/>
</configuration>
38
Cookieless Sessions
39
External Session State
ASP State Service auf dem Rechner starten
net start aspstate
CONFIG.WEB im root-Verzeichnis der Anwendung
erstellen und diesen Rechner referenzieren
<configuration>
<sessionstate inproc="false"
server="localhost" />
</configuration>
40
External Session State
41
ASP.NET Architektur
Unmanaged Code
HTTP Request
Host (IIS, Internet Explorer)
HTTP Runtime
HTTP Module
HTTP Module
HTTP Handler
...
Managed Code
42
HTTP Handler
Funktionalität von ASP.NET an spezielle Anforderungen
anpassen
möglich über das "Einklinken" in den RequestMechanismus
Vergleichbar mit ISAPI-Extensions
einfach zu implemetieren
Diesen Code nennt man HTTP Handler
Beispiel für einen HTTP Handler
Transformieren von Dokumenten per XSL
43
HTTP Handler
Handler-Komponente erstellen
Komponente in das bin-Verzeichnis der Anwendung
kopieren
Den HTTP-Handler der Anwendung per CONFIG.WEB
bekannt machen
<configuration>
<httphandlers>
<add verb="*" path="*.bar"
type="class,assembly"/>
</httphandlers>
</configuration>
44
HTTP Handler
45
Fragen?
46
Mehr Informationen
MSDN online
www.microsoft.com/germany/msdn
www.microsoft.com/net
ASP.NET Quickstart
Samples, Samples, Samples, ...
ASP.NET Sites
www.aspng.com
www.asp101.com
www.IBuySpy.com
Artikel im VBA-Magazin 1/2001
47
Glossar
API – Application Programming Interface: Definierte Programmierschnittstelle
für den Zugriff auf Systemfunktionen
IIS – Internet Information Server: Der Webserver von Microsoft
ISAPI- Internet Server API: Mit dieser Schnittstelle können Erweiterungen für
den IIS entwickelt werden. Solche Erweiterungen können nur mit C++
programmiert werden.
Cookie: Kennung, die auf der Festplatte eines Benutzers abgelegt wird. Mit
dieser Kennung kann eine Webseite herausfinden, ob dieser Benutzer die
Seite zuvor schon besucht hat. Die Kennung wird auch Session ID genannt
XML - eXtensible Markup Language: Textbasiertes, allgemeines Datenformat,
das Grundregeln für den Aufbau eigener Datenformate definiert.
XSL - XML Stylesheet Language: XML-basierte Sprache, mit der
Transformationen von XML-Daten definiert werden können.
CLR – Common Language Runtime: gemeinsame Laufzeitumgebung für alle
.NET Anwendungen.
MSIL – Microsoft Intermediate Language
Managed Code: In der .NET Plattform wird kein nativer Code mehr erzeugt.
Stattdessen generieren Compiler unter .NET eine Zwischensprache (MSIL),
die dann unter Aufsicht der CLR bei Bedarf in nativen Code übersetzt und
ausgeführt wird. Deshalb wird der von den Compilern erzeugte Code auch
48
Managed Code genannt.