Top Banner
Grundlagen ASP.NET 2.0 Steffen Forkmann, msu solutions GmbH [email protected] http://www.msu-solutions.de
39

Grundlagen ASP.NET 2.0

Jan 07, 2016

Download

Documents

tomas

Grundlagen ASP.NET 2.0. Steffen Forkmann, msu solutions GmbH [email protected] http://www.msu-solutions.de. Agenda. Was ist ASP.NET eigentlich? Ein paar Folien zum Einstieg Viele Demos der neuen Features MasterPages/ Themes Konfiguration DataBinding (3-Tier Architektur) - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Grundlagen ASP.NET 2.0

Grundlagen ASP.NET 2.0

Steffen Forkmann, msu solutions GmbH

[email protected]

http://www.msu-solutions.de

Page 2: Grundlagen ASP.NET 2.0

2

Agenda

• Was ist ASP.NET eigentlich?– Ein paar Folien zum Einstieg

• Viele Demos der neuen Features– MasterPages/ Themes– Konfiguration– DataBinding (3-Tier Architektur)– Provider Model– SQL-Caching– URL-Mapping

Page 3: Grundlagen ASP.NET 2.0

3

Was ist ASP.NET

• ASP.NET ist eine Bibliothek für Webseiten und Webservices

• Basiert auf .NET Runtime und .NET Framework– Riesige Objektbibliothek– Garbage Collection– Eigene Klassen und Assemblies problemlos einbindbar

• Objektorientiert und eventgesteuert

Page 4: Grundlagen ASP.NET 2.0

4

Was ist ASP.NET (2)

• Verschiedene Sprachen verfügbar: C#, VB.NET, …• Performanz durch kompilierten Code• Klare Trennung von Design und Programmcode• Automatische Sessionverwaltung• Einfache Datenbankintegration, Lokalisierung und

Fehlerbehandlung

Page 5: Grundlagen ASP.NET 2.0

5

ASP.NET Architektur

Request Handler

HTTP Module

ASP.NET Runtime

HTTP Request

Managed Code

Unmanaged Code

Weitere Funktionalität

HTTP Response

IIS

Page 6: Grundlagen ASP.NET 2.0

6

.aspx – Aufbau

(Inline Code-Blöcke)(Inline Code-Blöcke)

Statischer TextStatischer Text

Control TagsControl Tags

HTML TagsHTML Tags

DirektivenDirektiven

Page 7: Grundlagen ASP.NET 2.0

7

Key-Concepts

• Server controls– Kapseln die Erzeugung des eigenen HTML-Output– Feuern Ereignisse bei Statuswechseln

• “Event Handler”-Code– Inline oder besser als Code-Behind (in separaten File)

• Code-Ausführung in Phasen - nicht linear– Init, Load, Render, Unload, usw.

Page 8: Grundlagen ASP.NET 2.0

8

Ziele bei ASP.NET 2.0

• „Das Rad nicht neu erfinden“– Massive Codereduktion durch deklarative Programmierung und

“Zero-Code-Szenarien”– (Microsoft spricht von 70% Codereduktion)

• Standardfunktionalitäten „out of the box“ mitgeliefert:– Benutzer- / Rollenverwaltung– WYSIWYG „Skins & Themes“ – Architektur– Viele neue Controls wie LogIn- und Registrierungs-Dialoge– SQL Caching

• Hohe Flexibilität durch Provider Model– In jede Ebene des Technologie-Stacks kann manuell eingegriffen

werden

Page 9: Grundlagen ASP.NET 2.0

9

Neue Technologien in ASP.NET 2.0

Daten-controls

Daten-controls

Login-controls

Login-controls Web PartsWeb Parts Andere

neue Controls

Andereneue Controls

MasterPagesMasterPages Themesund Skins

Themesund Skins LokalisationLokalisation KompilierungKompilierung

Benutzer-verwaltung

Benutzer-verwaltung

Rollen-verwaltung

Rollen-verwaltung ProfileProfile KonfigurationKonfiguration

SiteMaps

SiteMaps

HealthMonitoring

HealthMonitoring

SQLCaching

SQLCaching

Con

trols

Pag

eFr

am

ew

ork

Serv

ices

un

d A

PIs

Page 10: Grundlagen ASP.NET 2.0

10

Vorteile durch VS 2005• “Intellisense Everywhere”!

– Code behind, Inline code, HTML, CSS, ASP.NET, Web.config, XML Dateien, usw.

• WYSIWYG HTML Designer – CSS Style Generator

• Leistungsstarker Debugger– Edit & Continue– Eigene Debugger-Visualizer

• Integrierter ASP.NET Test-Web Server– Testsystem auf lokalem Rechner– Webserver wird mit der Visual Studio IDE geschlossen

• Code wird vom Designer nicht formatiert

Page 11: Grundlagen ASP.NET 2.0

11

Visual Web Developer 2005

• Kostenloser Download als Express-Version:– www.microsoft.com/germany/msdn/vstudio/express/vwd/default.mspx

Page 12: Grundlagen ASP.NET 2.0

12

Konfiguration

• Administrative Tools– ASP.NET MMC snap-in– Web Site Administration Tool (Webadmin.axd)

• machine.config– Systemweite Standard-Einstellungen

• web.config– Projektspezifische Einstellungen

• Configuration API

Page 13: Grundlagen ASP.NET 2.0

13

web.config

• XML-Konfigurationsfile

System.Web

UI

Design

WebControls

HtmlControls

Services

Configuration

Description

Discovery

Protocols

Caching

Configuration

Hosting

Mail

SessionState

Page 14: Grundlagen ASP.NET 2.0

14

Durchgehendes Design

• Standarddesign fürdie meisten Seiten:

• Header, Menü,Inhalt, Footer

Header

Navigation

Inhalt

Footer

Page 15: Grundlagen ASP.NET 2.0

15

Durchgehendes Design (2)

• Bisherige Lösungsmöglichkeiten:– Include Files:

• Keine Code-Kapselung (Code passt evtl. nicht 100%)

• Man bekommt schnell unbalancierte HTML-Tags

• Selten WYSIWYG-Unterstützung

– Tool-basierte Lösungen (z.B. Dreamweaver)• Meist nur Design-Time-Unterstützung

• Code für Seite separat

• Spätere Änderungen sehr schwer

Page 16: Grundlagen ASP.NET 2.0

16

MasterPages

• Wir wollen: Durchgehendes und wartbares Seitendesign ohne Includes

• Lösung: MasterPages– "Visuelle Vererbung" mit Content Platzhaltern– WYSIWYG-Unterstützung durch VS2005– Anwendung deklarativ und programmatisch möglich– Verschachtelte MasterPages werden unterstützt

Page 17: Grundlagen ASP.NET 2.0

17

DemoDemo

Seitenvorlagen (Master Pages)Seitenvorlagen (Master Pages)

Page 18: Grundlagen ASP.NET 2.0

18

Themes

<%@ Page Theme=“Design">

Vorher: Nachher:

Page 19: Grundlagen ASP.NET 2.0

19

DataAccess PHP

// Connectmysql_pconnect($dbServer, $dbUser, $dbPsw);mysql_select_db($dbName);

// Get data$result = mysql_query(“select * from products”);foreach($result as $row){ …}

// update data$query = “insert name, .. into products values (‘$name’, …)”;mysql_query($query);

1. Konfiguration im Code (unverschlüsselt)

2. SQL-Queries im Code

3. Query-Parameter sind potentiell angreifbar

Es geht auch besser! (auch in PHP )

Page 20: Grundlagen ASP.NET 2.0

20

Problem 1: Verschlüsselung   <connectionStrings

configProtectionProvider="DataProtectionConfigurationProvider">  <EncryptedData>    <CipherData>      <CipherValue>

AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAed...GicAlQ== </CipherValue>

    </CipherData>  </EncryptedData></connectionStrings>

private void ProtectSection(string sectionName) { Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); ConfigurationSection section = config.GetSection(sectionName); if (section != null && section.SectionInformation.IsProtected) { section.SectionInformation.ProtectSection();

config.Save(); } }

Page 21: Grundlagen ASP.NET 2.0

21

DataAccess PHP

// Connectmysql_pconnect($dbServer, $dbUser, $dbPsw);mysql_select_db($dbName);

// Get data$result = mysql_query(“select * from products”);foreach($result as $row){ …}

// update data$query = “insert name, .. into products values (‘$name’, …)”;mysql_query($query);

1. Konfiguration im Code (unverschlüsselt)

2. SQL-Queries im Code

3. Query-Parameter sind potentiell angreifbar

Es geht auch besser! (auch in PHP )

Page 22: Grundlagen ASP.NET 2.0

22

Problem 2: DataBinding

• Anbindung visueller Elemente an Daten– „Quick and Dirty“, wie in PHP?– Oder nach Lehrbuch, durch Zugriff auf Businesslogik

und DataAccessLayer?

• Lösung: Data Provider Controls– Deklarative Anwendung Codereduktion

Page 23: Grundlagen ASP.NET 2.0

23

3-Tier Architektur

• Strenge Trennung in:– Data Access Layer – Datenzugriff (Queries, ConnectionStrings, …)– Business Logic Layer – Implementierung der Geschäftsregeln– Presentation Layer – Visualisierung der Daten

Page 24: Grundlagen ASP.NET 2.0

24

DemoDemo

Data BindingData Binding

Page 25: Grundlagen ASP.NET 2.0

25

DataAccess PHP

// Connectmysql_pconnect($dbServer, $dbUser, $dbPsw);mysql_select_db($dbName);

// Get data$result = mysql_query(“select * from products”);foreach($result as $row){ …}

// update data$query = “insert name, .. into products values (‘$name’, …)”;mysql_query($query);

1. Konfiguration im Code (unverschlüsselt)

2. SQL-Queries im Code

3. Query-Parameter sind potentiell angreifbar

Es geht auch besser! (auch in PHP )

Page 26: Grundlagen ASP.NET 2.0

26

Problem 3: SQL-Injectionstring _username = Request.Form["username"]; string _password = Request.Form["password"]; string sql = "select * from users where username='" + _username +

"' and password='" + _password + "'";

Username: ' or 1=1 --- Password: [Empty]

Lösung:

1. Eingaben validieren!

2. Parametrisierte Queries:

myCommand = new SqlCommand("select * from users where " +

" username = @Username and Password = @Password"); myParameter = myCommand.Parameters.Add( new SqlParameter("@Username", SqlDbType.VarChar, 50)); myParameter.Direction = ParameterDirection.Input; myParameter.Value = Request.Form["username"];

Select * from users where username=‘‘ or 1=1 --- and password=‘‘

Page 27: Grundlagen ASP.NET 2.0

27

Authentifizierung

• Aufgabe: Aufwand für Autorisierung und Authentifizierung reduzieren– Im besten Fall komplett „out of the Box“– Flexible Anbindung an beliebige Backendsysteme

• Lösung: Membership-Provider– Flexible, modulare Kombination aus

Providerkomponenten, API und User Interface-Komponenten

Page 28: Grundlagen ASP.NET 2.0

28

Membership-Provider

Membership API (Benutzerverwaltung)

Benutzer-daten Access Andere

Datenquellen

Controls LoginLogin LoginStatusLoginStatus LoginViewLoginView

AccessMembershipProviderAccessMembershipProvider Andere ProviderAndere Provider

Membership Provider

MembershipMembership MembershipUserMembershipUser

SqlMembershipProviderSqlMembershipProvider

SQL Server

Andere Login-Controls

Andere Login-Controls

Page 29: Grundlagen ASP.NET 2.0

29

DemoDemo

LogInLogIn

Page 30: Grundlagen ASP.NET 2.0

30

Autorisierung

• Erlaube “Adminstratoren” und lehne Rest ab:

• Auch für Unterverzeichnisse bzw. einzelne Seiten einstellbar

<!-- * = alle, ? = anonym bzw. nicht auth. --><authorization> <allow verbs="POST" Roles="Administrator" /> <deny users="*" /></authorization>

Page 31: Grundlagen ASP.NET 2.0

31

Sitemap-Provider

Site Navigation API

Site Maps

Web.sitemap OtherData Stores

Controls MenuMenu TreeViewTreeView SiteMapPathSiteMapPathSiteMap-

DataSourceSiteMap-

DataSource

SiteMapSiteMap

SiteMapNodeSiteMapNodeSiteMapNodeSiteMapNode SiteMapNodeSiteMapNode

XmlSiteMapProviderXmlSiteMapProvider Other Site MapProviders

Other Site MapProviders

Providers

Page 32: Grundlagen ASP.NET 2.0

32

DemoDemo

SiteMapSiteMap

Page 33: Grundlagen ASP.NET 2.0

33

SQL-Caching

• Aufgabe:– Hohe Performance bei datengetriebenen,

hochfrequentierten Webseiten

• Lösung: SQL Caching– Zusammenarbeit von Datenbank und Webapplikation– Cache-Invalidierung bei Datenänderung;

Seite wird nur bei geänderten Daten neu gerendert– SQL-Server 2000 und 7.0

• Polling-Prozess und Trigger (Table-Level)

– SQL-Server 2005• Direkte Unterstützung durch Notifications (Row-Level)

Page 34: Grundlagen ASP.NET 2.0

34

SQL-Caching (Polling)

• SQL-Server 2000: Mit aspnet_regsqlcache entsprechende Tabellen konfigurieren

• Web.config:<system.web> <cache>

<sqlCacheDependencyenabled="true"pollTime="1000"> <databases><addname="Northwind" connectionStringName="Northwind"/>

</databases> </sqlCacheDependency> </cache></system.web>

ASP.NET-Seite oder DataSource für Caching konfigurieren:<%@ OutputCacheduration="3600"

varybyparam="none" sqldependency="Northwind:Categories"%>

Page 35: Grundlagen ASP.NET 2.0

35

SQL-Caching (Push)

IISSQL-Server

2005

Worker Process (ASP.NET Application)

Worker Process (ASP.NET Application)

TableTable

NotificationQueue

NotificationQueue

PubsPubs

SQLDependencyOnChange

SQLDependencyOnChange

SQLCommandSQLCommand

UPDATE INSERTDELETE

OnChange

Neu registrieren, wenn wieder

benachrichtigt werden soll

Cache-Invalidieru

ng

Page 36: Grundlagen ASP.NET 2.0

36

URL-Mapping

• Virtuelle URLs werden auf physische URLs abgebildet

• Wichtig für Suchmaschinen<urlMappings enabled="true"> <add url="~/Home.aspx" mappedUrl="~/default.aspx?tabindex=0" /> <add url="~/Forums.aspx" mappedUrl="~/default.aspx?tabindex=1" /> <add url="~/Faq.aspx" mappedUrl="~/default.aspx?tabindex=2" /></urlMappings>

Virtuelle URL

Physische URL

Page 37: Grundlagen ASP.NET 2.0

37

Fazit

• ASP.NET 2.0 soll Produktivität, „gute“ Architektur und Performance vereinen– ASP.NET bietet eine drastische Erhöhung der

Produktivität für „Allerweltsaufgaben“ bei der Webprogrammierung

– Kompromisslose Objektorientierung und mehrschichtige Architektur

– Caching

Page 38: Grundlagen ASP.NET 2.0

38

Literatur

Kostenlos verfügbare Online-Bücher und Artikel

• C# OpenBook http://www.galileocomputing.de/openbook/csharp/index.htm

• Einstieg in VB.NET OpenBook http://www.galileocomputing.de/openbook/vb_net/

• Einstieg in ASP.NET OpenBookhttp://www.galileocomputing.de/openbook/asp/

• 3-tier Architecture with ASP.NET 2.0http://msdn2.microsoft.com/en-us/library/aa581769.aspx

Page 39: Grundlagen ASP.NET 2.0

39

Vielen Dank

• Gibt es Fragen?• Gerne beantworte ich diese auch via Email an

[email protected]!• Die Vortragsfolien können auf der Webseite

http://www.navision-blog.de/ herunter geladen werden