ASP.NET Überblick und technischer Einstieg. 2 Was ist neu? Code wird jetzt grundsätzlich...

Post on 05-Apr-2015

114 views 0 download

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.