1 / 39

Grundlagen ASP.NET 2.0

Grundlagen ASP.NET 2.0. Steffen Forkmann, msu solutions GmbH steffen.forkmann@msu-solutions.de 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)

tomas
Download Presentation

Grundlagen ASP.NET 2.0

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Grundlagen ASP.NET 2.0 Steffen Forkmann, msu solutions GmbH steffen.forkmann@msu-solutions.de http://www.msu-solutions.de

  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

  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

  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

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

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

  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.

  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

  9. Neue Technologien in ASP.NET 2.0 Web Parts Andere neue Controls Daten- controls Login- controls Controls Kompilierung Lokalisation MasterPages Themes und Skins Page Framework Profile Benutzer- verwaltung Rollen- verwaltung Konfiguration Services und APIs Site Maps SQL Caching Health Monitoring

  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

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

  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

  13. System.Web UI Services Caching Design Configuration Configuration WebControls Description Hosting HtmlControls Discovery Mail Protocols SessionState web.config • XML-Konfigurationsfile

  14. Header Navigation Inhalt Footer Durchgehendes Design • Standarddesign fürdie meisten Seiten: • Header, Menü,Inhalt, Footer

  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

  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

  17. Demo Seitenvorlagen (Master Pages)

  18. Themes <%@ Page Theme=“Design"> Vorher: Nachher:

  19. DataAccess PHP // Connect mysql_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 )

  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(); } }

  21. DataAccess PHP // Connect mysql_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 )

  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

  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

  24. Demo Data Binding

  25. DataAccess PHP // Connect mysql_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 )

  26. 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: • Eingaben validieren! • 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"];

  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

  28. Membership-Provider Controls Login LoginStatus LoginView Andere Login- Controls Membership API (Benutzerverwaltung) Membership MembershipUser Membership Provider AccessMembershipProvider SqlMembershipProvider Andere Provider Benutzer- daten Access SQL Server Andere Datenquellen

  29. Demo LogIn

  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>

  31. Sitemap-Provider Controls Menu TreeView SiteMap- DataSource SiteMapPath Site Navigation API SiteMap SiteMapNode SiteMapNode SiteMapNode Providers XmlSiteMapProvider Other Site Map Providers Site Maps Web.sitemap Other Data Stores

  32. Demo SiteMap

  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)

  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"%>

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

  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> VirtuelleURL Physische URL

  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

  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

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

More Related