ASP.NET Überblick und technischer Einstieg. 2 Was ist neu? Code wird jetzt grundsätzlich...
-
Upload
alf-schnetzler -
Category
Documents
-
view
114 -
download
0
Transcript of ASP.NET Überblick und technischer Einstieg. 2 Was ist neu? Code wird jetzt grundsätzlich...
ASP.NETÜberblick und technischer Einstieg
2
Was ist neu?
Code wird jetzt grundsätzlich kompiliert!
VB-Script ist (endlich) abgeschafft!
Die Metabase ist abgeschafft!
WebForms
WebServices
Statemanagement
Servererweiterungen ohne ISAPI
...
3
System.Web
Caching
Configuration
Services UI
SessionState
HtmlControls
WebControls
Description
Discovery
Security
Protocols
ASP.NET Klassen
4
Das ASP-Prinzip
ASP-Datei
ASP.DLLinterpretieren
HTML
Server
Browser
5
Das ASP.NET-Prinzip
ASPX-Datei
XSPISAPI.DLL.NET Klasse erstellen
gen<xx>.vb
gen<xx>.DLL
kompilieren
HTML
Controls rendern
Server
CommonLanguageRuntime
Browser
6
IIS
WebForms
WebServices
Common Language Runtime
ASP.NET in der Übersicht
app.aspx
<HTML><script>…</script>…</HTML>
app.asmx
class X {
[WebMethod]
public int
method1()
{ … }
}
HTTP
SOAP
7
WebServices
Einfaches ProgrammiermodellErstellen 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
8
WebServices
9
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 verwendenDiese Controls werden WebControls genannt
10
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 ProgrammiermodellVB for the Web
11
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 Beispiel2 Textfelder für die Eingabe von Vor- und Nachname einer Person
12
WebControls
13
Das DataGrid Control
Funktioniert wie das DataGrid Control in VBbindet 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
14
DataGrid Control
15
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
Diese Technik nennt man CodeBehind!
<%@Page Inherits="MyClass" Src="MyClass.cs"%><%@Page Inherits="MyClass" Src="MyClass.cs"%>
16
CodeBehind
17
ASP.NET Anwendungen
Eine Anwendung besteht ausASP.NET Pages
• WebForms• WebServices
Komponenten (assemblies)
Konfigurationsdateien• config.web• global.asax
Sämtliche Elemente einer Anwendung müssen sich in einem Verzeichnis befinden
18
am1.aspx
config.web
C:\inetpub\applications
global.asax config.web
rc2.aspxrc1.aspx
\MyApp1 \MyApp2
assembly1.dll assembly2.dll
\bin
Aufbau einer Anwendung
19
ASP und ASP.NET
Beide Anwendungsarten können parallel betrieben werden
Die Anwendungsmigration erfordert ÄnderungenScripte müssen innerhalb des Blocks <script runat=server> … </script> deklariert werden
Syntaktische Änderungen in VB.NET gegenüber VB-Script
20
ASP und ASP.NET
Von VB-Script nach VB.NETParameter 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")
21
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
UninstallVerzeichnis löschen
22
Komponente installieren
Code übersetzen csc.exe /target:library MyClass.cs
vbc.exe /target:library MyClass.vb
Filecopy in das bin-Verzeichnis der Anwendungcopy MyClass.dll \wwwroot\<appname>\bin\
Klasse anlegen und benutzen
23
Komponente entfernen
Entfernen der Komponente aus dem bin-Verzeichnis der Anwendung
del MyClass.dll
24
Komponente aktualisieren
Filecopy der Komponente in dasbin-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
25
Komponenten
26
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
27
Konfiguration
App SettingsDatei CONFIG.WEB im root-Verzeichnis
global gültige Standardeinstellungen sind in folgender Datei zu finden
• <windir>\Microsoft.NET\Framework\<version>\config.web
App EventsDatei GLOBAL.ASAX im root-Verzeichnis
28
App Settings
CONFIG.WEB im root-Verzeichnis erstellen
Zugriff auf diese Daten mit folgendem CodeDim Config as HashTable
Config = Context.GetConfig("appsettings")
Dim MyDsn = Config("dsn")
<configuration> <configuration>
<appsettings><appsettings>
<add key="dsn" <add key="dsn" value="localhost;uid=sa;pwd=;Database=foo"/>value="localhost;uid=sa;pwd=;Database=foo"/>
</appsettings></appsettings>
</configuration></configuration>
29
App Events
Bei einer unbehandelten Exception wird das Event Application_Error gefeuert
Zugriff auf Request-Objekt vorhanden
Zugriff auf Exception-Objekt vorhanden
Mögliche VorgehensweiseEintrag in Eventlog erstellen
Einsatz der Framework-Klassen für den Zugriff auf das Eventlog
30
Settings und Events
31
Page Tracing
Folgende Direktive am Seitenanfang einfügen<%@ Page Trace="True" %>
Trace-Aufrufe an den gewünschten Stellen hinzufügenTrace.Write("MyApp", "Button Clicked")
Trace.Warn("MyApp", "Value: " + value)
Seite mit dem Browser aufrufen
32
App Tracing
CONFIG.WEB im root-Verzeichnis erstellen
Zugriff auf die Aufzeichnungen per URL (à spezieller HTTP-Handler)
http://localhost/approot/Trace.axd
<configuration> <configuration>
<trace enabled="true" <trace enabled="true" requestlimit="10"/>requestlimit="10"/>
</configuration></configuration>
33
Tracing
34
Debugging
CONFIG.WEB im root-Verzeichnis erstellen
Debugger einbinden (-> “attachen”)
Breakpoints setzen
Seite bzw. Service im Browser aufrufen
<configuration> <configuration>
<compilation debugmode="true"/><compilation debugmode="true"/>
</configuration></configuration>
35
Debugging
36
Statemanagement
Cookieless sessionSession 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
37
Cookieless Sessions
Für Session IDs werden keine Cookies mehr benötigtMitführen der Session ID in URL
Codeänderungen sind nicht erforderlich
38
Cookieless Sessions
CONFIG.WEB im root-Verzeichnis erstellen
Folgende Zeilen hinzufügen:
<configuration> <configuration>
<sessionstate cookieless="true"/><sessionstate cookieless="true"/>
</configuration></configuration>
39
Cookieless Sessions
40
External Session State
ASP State Service auf dem Rechner startennet start aspstate
CONFIG.WEB im root-Verzeichnis der Anwendung erstellen und diesen Rechner referenzieren
<configuration> <configuration>
<sessionstate inproc="false" <sessionstate inproc="false" server="localhost" />server="localhost" />
</configuration></configuration>
41
External Session State
42
ASP.NET Architektur
Unmanaged Code
Managed Code
...HTTP Handler
HTTP Module
HTTP Module
HTTP Runtime
Host (IIS, Internet Explorer)
HTTP Request
43
HTTP Handler
Funktionalität von ASP.NET an spezielle Anforderungen anpassen
möglich über das "Einklinken" in den Request-Mechanismus
Vergleichbar mit ISAPI-Extensions
einfach zu implemetieren
Diesen Code nennt man HTTP Handler
Beispiel für einen HTTP HandlerTransformieren von Dokumenten per XSL
44
HTTP Handler
Handler-Komponente erstellen
Komponente in das bin-Verzeichnis der Anwendung kopieren
Den HTTP-Handler der Anwendung per CONFIG.WEB bekannt machen
<configuration> <configuration>
<httphandlers><httphandlers>
<add verb="*" path="*.bar" <add verb="*" path="*.bar" type="class,assembly"/>type="class,assembly"/>
</httphandlers></httphandlers>
</configuration></configuration>
45
HTTP Handler
46
Fragen?
47
Mehr Informationen
MSDN onlinewww.microsoft.com/germany/msdn
www.microsoft.com/net
ASP.NET QuickstartSamples, Samples, Samples, ...
ASP.NET Siteswww.aspng.com
www.asp101.com
www.IBuySpy.com
Artikel im VBA-Magazin 1/2001
48
Glossar
API – Application Programming Interface: Definierte Programmierschnittstelle für den Zugriff auf SystemfunktionenIIS – Internet Information Server: Der Webserver von MicrosoftISAPI- 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 genanntXML - 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 LanguageManaged 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 Managed Code genannt.