Скачать презентацию Grundlagen ASP NET 2 0 Steffen Forkmann msu Скачать презентацию Grundlagen ASP NET 2 0 Steffen Forkmann msu

407102c7657e6f7d7a0d075ed1a5a645.ppt

  • Количество слайдов: 39

Grundlagen ASP. NET 2. 0 Steffen Forkmann, msu solutions Gmb. H steffen. forkmann@msu-solutions. de Grundlagen ASP. NET 2. 0 Steffen Forkmann, msu solutions Gmb. H steffen. [email protected] de http: //www. msu-solutions. de

Agenda • Was ist ASP. NET eigentlich? – Ein paar Folien zum Einstieg • Agenda • Was ist ASP. NET eigentlich? – Ein paar Folien zum Einstieg • Viele Demos der neuen Features – – – 2 Master. Pages/ Themes Konfiguration Data. Binding (3 -Tier Architektur) Provider Model SQL-Caching URL-Mapping

Was ist ASP. NET • ASP. NET ist eine Bibliothek für Webseiten und Webservices 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 3

Was ist ASP. NET (2) • • • Verschiedene Sprachen verfügbar: C#, VB. NET, 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 4

ASP. NET Architektur Unmanaged Code HTTP Request HTTP Response IIS ASP. NET Runtime HTTP ASP. NET Architektur Unmanaged Code HTTP Request HTTP Response IIS ASP. NET Runtime HTTP Module Request Handler Weitere Funktionalität Managed Code 5

. aspx – Aufbau Direktiven (Inline Code-Blöcke) Statischer Text Control Tags HTML Tags 6 . aspx – Aufbau Direktiven (Inline Code-Blöcke) Statischer Text Control Tags HTML Tags 6

Key-Concepts • Server controls – Kapseln die Erzeugung des eigenen HTML-Output – Feuern Ereignisse 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. 7

Ziele bei ASP. NET 2. 0 • „Das Rad nicht neu erfinden“ – Massive 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 Log. In- und Registrierungs-Dialoge SQL Caching • Hohe Flexibilität durch Provider Model – In jede Ebene des Technologie-Stacks kann manuell eingegriffen werden 8

Services und APIs Page Framework Controls Neue Technologien in ASP. NET 2. 0 9 Services und APIs Page Framework Controls Neue Technologien in ASP. NET 2. 0 9 Datencontrols Logincontrols Web Parts Andere neue Controls Master. Pages Themes und Skins Lokalisation Kompilierung Benutzerverwaltung Rollenverwaltung Profile Konfiguration Site Maps Health Monitoring SQL Caching

Vorteile durch VS 2005 • “Intellisense Everywhere”! – Code behind, Inline code, HTML, CSS, 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 10

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

Konfiguration • Administrative Tools – ASP. NET MMC snap-in – Web Site Administration Tool 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 12

web. config • XML-Konfigurationsfile System. Web UI Caching Design Configuration Web. Controls Description Hosting web. config • XML-Konfigurationsfile System. Web UI Caching Design Configuration Web. Controls Description Hosting Html. Controls Discovery Mail Protocols 13 Services Session. State

Durchgehendes Design • Standarddesign für die meisten Seiten: • Header, Menü, Inhalt, Footer Header Durchgehendes Design • Standarddesign für die meisten Seiten: • Header, Menü, Inhalt, Footer Header Navig ation Inhalt 14 Footer

Durchgehendes Design (2) • Bisherige Lösungsmöglichkeiten: – Include Files: • Keine Code-Kapselung (Code passt 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 15

Master. Pages • Wir wollen: Durchgehendes und wartbares Seitendesign ohne Includes • Lösung: Master. Master. Pages • Wir wollen: Durchgehendes und wartbares Seitendesign ohne Includes • Lösung: Master. Pages – – 16 "Visuelle Vererbung" mit Content Platzhaltern WYSIWYG-Unterstützung durch VS 2005 Anwendung deklarativ und programmatisch möglich Verschachtelte Master. Pages werden unterstützt

Demo Seitenvorlagen (Master Pages) 17 Demo Seitenvorlagen (Master Pages) 17

Vorher: 18 Nachher: " src="http://present5.com/presentation/407102c7657e6f7d7a0d075ed1a5a645/image-18.jpg" alt="Themes <%@ Page Theme=“Design"> Vorher: 18 Nachher: " /> Themes <%@ Page Theme=“Design"> Vorher: 18 Nachher:

Data. Access PHP 1. Konfiguration // Connect mysql_pconnect($db. Server, $db. User, $db. Psw); mysql_select_db($db. Data. Access PHP 1. Konfiguration // Connect mysql_pconnect($db. Server, $db. User, $db. Psw); mysql_select_db($db. Name); im Code (unverschlüsselt) 2. SQL-Queries // Get data $result = mysql_query(“select * from products”); foreach($result as $row){ … } … im Code 3. Query-Parameter sind potentiell angreifbar // update data $query = “insert name, . . into products values (‘$name’, …)”; mysql_query($query); Es geht auch besser! 19 (auch in PHP )

Problem 1: Verschlüsselung AQAAANCMnd 8 BFd. ERj. Ho. Aw. E/Cl+s. BAAAAed. . . Gic. Al. Q== private void Protect. Section(string section. Name) { Configuration config = Web. Configuration. Manager. Open. Web. Configuration(Request. Application. Path); Configuration. Section section = config. Get. Section(section. Name); if (section != null && section. Section. Information. Is. Protected) { section. Section. Information. Protect. Section(); config. Save(); } } 20

Data. Access PHP 1. Konfiguration // Connect mysql_pconnect($db. Server, $db. User, $db. Psw); mysql_select_db($db. Data. Access PHP 1. Konfiguration // Connect mysql_pconnect($db. Server, $db. User, $db. Psw); mysql_select_db($db. Name); im Code (unverschlüsselt) 2. SQL-Queries // Get data $result = mysql_query(“select * from products”); foreach($result as $row){ … } … im Code 3. Query-Parameter sind potentiell angreifbar // update data $query = “insert name, . . into products values (‘$name’, …)”; mysql_query($query); Es geht auch besser! 21 (auch in PHP )

Problem 2: Data. Binding • Anbindung visueller Elemente an Daten – „Quick and Dirty“, Problem 2: Data. Binding • Anbindung visueller Elemente an Daten – „Quick and Dirty“, wie in PHP? – Oder nach Lehrbuch, durch Zugriff auf Businesslogik und Data. Access. Layer? • Lösung: Data Provider Controls – Deklarative Anwendung Codereduktion 22

3 -Tier Architektur • Strenge Trennung in: – Data Access Layer – Datenzugriff (Queries, 3 -Tier Architektur • Strenge Trennung in: – Data Access Layer – Datenzugriff (Queries, Connection. Strings, …) – Business Logic Layer – Implementierung der Geschäftsregeln – Presentation Layer – Visualisierung der Daten 23

Demo Data Binding 24 Demo Data Binding 24

Data. Access PHP 1. Konfiguration // Connect mysql_pconnect($db. Server, $db. User, $db. Psw); mysql_select_db($db. Data. Access PHP 1. Konfiguration // Connect mysql_pconnect($db. Server, $db. User, $db. Psw); mysql_select_db($db. Name); im Code (unverschlüsselt) 2. SQL-Queries // Get data $result = mysql_query(“select * from products”); foreach($result as $row){ … } … im Code 3. Query-Parameter sind potentiell angreifbar // update data $query = “insert name, . . into products values (‘$name’, …)”; mysql_query($query); Es geht auch besser! 25 (auch in PHP )

Problem 3: SQL-Injection string _username = Request. Form[ Problem 3: SQL-Injection string _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] Select * from users where username=‘‘ or 1=1 --- and password=‘‘ Lösung: 1. Eingaben validieren! 2. Parametrisierte Queries: my. Command = new Sql. Command("select * from users where " + " username = @Username and Password = @Password"); my. Parameter = my. Command. Parameters. Add( new Sql. Parameter("@Username", Sql. Db. Type. Var. Char, 50)); my. Parameter. Direction = Parameter. Direction. Input; my. Parameter. Value = Request. Form["username"]; 26

Authentifizierung • Aufgabe: Aufwand für Autorisierung und Authentifizierung reduzieren – Im besten Fall komplett 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 27

Membership-Provider Controls Login. Status Andere Login. Controls Login. View Membership API (Benutzerverwaltung) Membership. User Membership-Provider Controls Login. Status Andere Login. Controls Login. View Membership API (Benutzerverwaltung) Membership. User Membership Provider Access. Membership. Provider Benutzerdaten 28 Access Sql. Membership. Provider SQL Server Andere Provider Andere Datenquellen

Demo Log. In 29 Demo Log. In 29

Autorisierung • Erlaube “Adminstratoren” und lehne Rest ab: <!-- * = alle, ? = Autorisierung • Erlaube “Adminstratoren” und lehne Rest ab: • Auch für Unterverzeichnisse bzw. einzelne Seiten einstellbar 30

Sitemap-Provider Controls Menu Site Navigation API Site. Map. Node Providers Site. Map. Data. Source Sitemap-Provider Controls Menu Site Navigation API Site. Map. Node Providers Site. Map. Data. Source Tree. View Site. Map. Node Xml. Site. Map. Provider Other Site Map Providers Web. sitemap Other Data Stores Site Maps 31 Site. Map. Path

Demo Site. Map 32 Demo Site. Map 32

SQL-Caching • Aufgabe: – Hohe Performance bei datengetriebenen, hochfrequentierten Webseiten • Lösung: SQL Caching 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) 33

SQL-Caching (Polling) • SQL-Server 2000: Mit aspnet_regsqlcache entsprechende Tabellen konfigurieren • Web. config: <system. SQL-Caching (Polling) • SQL-Server 2000: Mit aspnet_regsqlcache entsprechende Tabellen konfigurieren • Web. config: ASP. NET-Seite oder Data. Source für Caching konfigurieren: <%@ Output. Cacheduration="3600" varybyparam="none" sqldependency="Northwind: Categories"%> 34

SQL-Caching (Push) Worker Process (ASP. NET Application) SQLCommand Table SQLDependency On. Change Cache. Invalidierung SQL-Caching (Push) Worker Process (ASP. NET Application) SQLCommand Table SQLDependency On. Change Cache. Invalidierung IIS 35 Notification Queue Neu registrieren, wenn wieder benachrichtigt werden soll Pubs UPDATE INSERT DELETE SQL-Server 2005

URL-Mapping • Virtuelle URLs werden auf physische URLs abgebildet • Wichtig für Suchmaschinen <url. URL-Mapping • Virtuelle URLs werden auf physische URLs abgebildet • Wichtig für Suchmaschinen Virtuelle URL Physische URL 36

Fazit • ASP. NET 2. 0 soll Produktivität, „gute“ Architektur und Performance vereinen – 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 37

Literatur Kostenlos verfügbare Online-Bücher und Artikel • C# Open. Book http: //www. galileocomputing. de/openbook/csharp/index. Literatur Kostenlos verfügbare Online-Bücher und Artikel • C# Open. Book http: //www. galileocomputing. de/openbook/csharp/index. htm • Einstieg in VB. NET Open. Book http: //www. galileocomputing. de/openbook/vb_net/ • Einstieg in ASP. NET Open. Book http: //www. galileocomputing. de/openbook/asp/ • 3 -tier Architecture with ASP. NET 2. 0 http: //msdn 2. microsoft. com/en-us/library/aa 581769. aspx 38

Vielen Dank • Gibt es Fragen? • Gerne beantworte ich diese auch via Email Vielen Dank • Gibt es Fragen? • Gerne beantworte ich diese auch via Email an steffen. [email protected] de! • Die Vortragsfolien können auf der Webseite http: //www. navision-blog. de/ herunter geladen werden 39