Inhaltsverzeichnis Einleitung... 17 Einführung... 17 Der Weg zu ASP.NET 3.5... 17 ASP.NET 1.0 und 1.1... 17 ASP.NET 2.0... 18 ASP.NET 3.5... 19 Dieses Buch verwenden... 19 Zielgruppe dieses Buches... 19 Aufbau dieses Buches... 20 Die ersten Schritte... 20 Wegweiser für Ein- und Umsteiger... 21 Konventionen und Features in diesem Buch... 21 Konventionen... 22 Weitere Features... 22 Systemvoraussetzungen... 22 Microsoft Access verwenden... 23 Beispieldateien... 23 Die Beispieldateien installieren... 23 Beispielprojekte, die Internetinformationsdienste erfordern... 24 IIS 7.0 unter Windows Vista nachinstallieren... 24 Die Beispieldateien verwenden... 25 Die Beispieldateien deinstallieren.... 27 Unterstützung für dieses Buch... 27 Fragen und Kommentare... 28 Danksagungen... 29 Teil A Grundlagen.... 31 1 Webanwendungen Grundlagen... 33 HTTP-Anforderungen... 34 HTTP-Anforderungen durch einen Browser... 35 HTTP-Anforderungen ohne einen Browser erstellen... 36 HyperText Markup Language (HTML)... 38 Dynamischer Inhalt... 40 HTML-Formulare... 40 Common Gateway Interface (ziemlich altmodisch)... 42 Die Microsoft-Plattform als Webserver... 43
8 Inhaltsverzeichnis Internetinformationsdienste... 43 Internet Services Application Programming Interface-DLLs... 44 Internetinformationsdienste... 45 Klassisches ASP (ASP.NET ins rechte Licht rücken)... 49 Konzepte bei der Entwicklung für das Web... 52 ASP.NET... 53 Zusammenfassung... 54 Schnellübersicht... 54 2 ASP.NET-Anwendungen Grundlagen... 57 Die obligatorische Hello-World-Anwendung... 58 Die Webanwendung HelloWorld erstellen... 58 HTML mit ausführbarem Code mischen... 64 Serverseitig ausführbare Blöcke... 65 Das ASP.NET-Kompilierungsmodell... 73 ASP.NET-Assemblies betrachten... 73 Codieroptionen... 75 Der Stil von ASP.NET 1.x... 75 Der moderne ASP.NET-Stil... 76 Die ASP.NET-HTTP-Pipeline... 78 Die IIS 5.x- und die IIS 6.x-Pipeline... 79 Die integrierte Pipeline von IIS 7.0... 80 Die Pipeline abhören... 80 Visual Studio und ASP.NET... 82 Zusammenfassung... 91 Schnellübersicht... 92 3 Das Seiten-Wiedergabemodell... 93 Steuerelemente als Tags wiedergeben... 94 Benutzeroberfläche in Komponenten verpacken... Die Seite in ASP.NET... 96 97 Das Wiedergabemodell der Seite... 99 Die Steuerelementstruktur der Seite... 100 Steuerelemente in Visual Studio hinzufügen... 102 Eine Seite in Visual Studio erstellen... 102 Layoutüberlegungen... 113 Zusammenfassung... 114 Schnellübersicht... 114 4 Benutzerdefinierte Steuerelemente... 117 Die Klasse Control... 118 Visual Studio und benutzerdefinierte Steuerelemente... 119 Ein benutzerdefiniertes Steuerelement erstellen... 120 Ein Palindrom-Prüfer... 129 Das Palindrom-Überprüfungssteuerelement... Steuerelemente und Ereignisse... 129 133 Das Ereignis PalindromeFound hinzufügen... 133
Inhaltsverzeichnis 9 HtmlTextWriter und Steuerelemente... 136 HtmlTextWriter verwenden... 136 Steuerelemente und Anzeigezustand... 139 ViewState verwenden... 139 Zusammenfassung... 142 Schnellübersicht... 143 5 Zusammengesetzte Steuerelemente... 145 Zusammengesetzte vs. benutzerdefinierte Steuerelemente... 145 Benutzerdefinierte zusammengesetzte Steuerelemente... 146 Der Palindrom-Prüfer als zusammengesetztes Steuerelement... 147 Benutzersteuerelemente... 154 Der Palindrom-Prüfer als Benutzersteuerelement... 155 Wann welche Art von Steuerelement verwenden... 161 Zusammenfassung... 161 Schnellübersicht... 162 6 Steuerelement-Potpourri... 163 Validierung... 164 Wie die Seitenvalidierung funktioniert... 171 Weitere Validierungssteuerelemente... 174 Eigenschaften von Gültigkeitsprüfungssteuerelementen... 174 Bildbasierte Steuerelemente... 175 TreeView... 179 MultiView... 183 Zusammenfassung... 186 Schnellübersicht... 187 Teil B Fortgeschrittene Features... 189 7 Webparts-Steuerelemente... 191 Webparts-Steuerelemente und ihre Entstehung... 192 Wozu sind Webparts-Steuerelemente nützlich?... 193 Webparts-Steuerelemente entwickeln... 193 Webseiten mit Webparts-Steuerelementen entwickeln... 194 Anwendungsentwicklung mit Webparts-Steuerelementen... 194 WebPartManager- und WebPartZone-Steuerelemente... 195 Integrierte Zonen... 195 Integrierte Webparts-Steuerelemente... 196 Ein Webparts-Steuerelement entwickeln... 206 Zusammenfassung... 216 Schnellübersicht... 216 8 Ein konsistentes Look & Feel... 217 Ein konsistentes Look & Feel... 218 ASP.NET-Masterseiten... 219 Designs... 232
10 Inhaltsverzeichnis Designdateien (Skins)... 236 Zusammenfassung... 237 Schnellübersicht... 238 9 Konfiguration... 239 Windows-Konfiguration... 240.NET-Konfiguration... 241 Machine.Config... 241 Konfigurationsabschnittsdeklarationen... 242 Web.Config... 243 Die Konfiguration in ASP.NET 1.x verwalten... 245 Konfiguration in neueren ASP.NET-Versionen verwalten... 245 ASP.NET über IIS konfigurieren... 250 Zusammenfassung... 255 Schnellübersicht... 256 10 Anmelden... 257 Webbasierte Sicherheit... 258 IIS absichern... 259 Formularauthentifizierung Grundlagen... 260 ASP.NET-Authentifizierungsdienste... 265 Die Klasse FormsAuthentication... 265 Eine optionale Anmeldeseite... 267 Benutzer verwalten... 270 ASP.NET-Anmeldesteuerelemente... 276 Benutzer autorisieren... 279 Zusammenfassung... 282 Schnellübersicht... 283 11 Datenbindung... 285 Auflistungen ohne Datenbindung darstellen... 285 Auflistungen mit Datenbindung darstellen... 286 ListControl-basierte Steuerelemente... 287 TreeView... 287 Menu... 287 FormView... 288 GridView... 288 DetailsView... 288 DataList... 288 Repeater... 288 Einfache Datenbindung... 289 Auf Datenbanken zugreifen... 293 Die Entwicklung der.net-datenbank... 294 294 296 297 ASP.NET-Datenquellen... 299 Verbindungen... Befehle... Ergebnisse verwalten...
Inhaltsverzeichnis 11 Weitere datengebundene Steuerelemente... 305 LINQ... 314 Zusammenfassung... 317 Schnellübersicht... 317 12 Navigation in der Website... 319 Die Navigationshilfen von ASP.NET... 320 Die Navigationssteuerelemente... 320 Die Siteübersichtsdatei... 321 Die Klasse SiteMapProvider... 322 Die Klasse SiteMap... 322 Die Klasse SiteMapNode... 323 Die Navigationssteuerelemente... 323 Das Menu- und das TreeView-Steuerelement... 323 Das SiteMapPath-Steuerelement... 325 Konfiguration der Siteübersicht... 326 Eine navigierbare Website erstellen... 327 Das SiteMapResolve-Ereignis verfolgen... 330 Benutzerdefinierte Attribute eines Knotens nutzen... 332 Zugriffsbeschränkung aus Sicherheitsgründen... 334 Zuordnung von URLs zu ASPX-Dateien... 335 Zusammenfassung... 339 Schnellübersicht... 340 13 Personalisierung... 341 Websitebesuche personalisieren... 341 Personalisierung in ASP.NET... 342 Benutzerprofile... 342 Personalisierungsanbieter... 343 Personalisierung verwenden... Profile in Web.Config definieren... 343 343 Verwenden von Profilinformationen... 344 Änderungen im Profil speichern... 345 Profile und Benutzer... 345 Zusammenfassung... 351 Schnellübersicht... 351 Teil C Zwischenspeicherung und Zustandsverwaltung.... 353 14 ASP.NET-Sitzungszustand... 355 Wozu dient der Sitzungszustand?... 356 ASP.NET und der Sitzungszustand... 357 Ein erster Eindruck vom Sitzungszustand... 358 Sitzungszustand und komplexere Daten... 363 Den Sitzungszustand konfigurieren... 370 Den Sitzungszustand deaktivieren... 371
12 Inhaltsverzeichnis Den Sitzungszustand prozessintern speichern... 371 Den Sitzungszustand auf einem Zustandsserver speichern... 372 Den Sitzungszustand in einer Datenbank speichern... 372 Den Sitzungszustand nachverfolgen... 373 Den Sitzungszustand mit Cookies nachverfolgen... 373 Den Sitzungszustand mit der URL nachverfolgen... 374 AutoDetect verwenden... 375 Geräteprofile verwenden... 375 Sitzungstimeout konfigurieren... 375 Weitere Konfigurationseinstellungen zum Sitzungszustand... 376 Das Wizard-Steuerelement als Alternative zum Sitzungszustand... 376 Zusammenfassung... 387 Schnellübersicht... 387 15 Anwendungsdaten zwischenspeichern... 389 Den Zwischenspeicher nutzen... 392 Einfluss des Zwischenspeicherns... 394 Den Datencache verwalten... 395 DataSets im Speicher... 397 Cache-Ablaufrichtlinien... 399 Cache-Abhängigkeiten... 402 Die SQL Server-Abhängigkeit... 405 Den Cache leeren... 406 Zusammenfassung... 409 Schnellübersicht... 409 16 Ausgaben zwischenspeichern... 411 Seiteninhalte zwischenspeichern... 412 Zwischengespeicherte Inhalte verwalten... 415 Die OutputCache-Anweisung ändern... Die Klasse HttpCachePolicy... 415 421 Cache-Speicherorte... 422 Ausgabecache-Abhängigkeiten... 423 Cache-Profile... 423 Benutzersteuerelemente zwischenspeichern... 424 Wann ist das Zwischenspeichern der Ausgabe sinnvoll?... 428 Zusammenfassung... 429 Schnellübersicht... 430 Teil D Fehler finden und die HTTP-Pipeline erweitern... 431 17 Diagnose und Debuggen... 433 Ablaufverfolgung auf Seitenebene... 434 Die Ablaufverfolgung einschalten... 434 Eigene Trace-Meldungen einfügen... 438
Inhaltsverzeichnis 13 Ablaufverfolgung auf Anwendungsebene... 441 Die Ablaufverfolgung programmgesteuert aktivieren... 444 Das Ereignis TraceFinished... 445 Andere Trace-Meldungen pipen... 445 Debuggen mit Visual Studio... 446 Fehlerseiten... 450 Unbehandelte Ausnahmen... 453 Zusammenfassung... 455 Schnellübersicht... 455 18 Die Klasse HttpApplication und HTTP-Module... 457 Die Klasse Application: ein Treffpunkt... 458 HttpApplication überschreiben... 459 Hinweise zum Anwendungszustand... 461 Ereignisse bearbeiten... 462 HttpApplication-Ereignisse... 463 HttpModules... 467 Vorhandene Module... 467 Ein Modul implementieren... 469 Aktive Module anzeigen... 471 Den Zustand in Modulen speichern... 473 Global.asax oder HttpModule?... 477 Zusammenfassung... 477 Schnellübersicht... 478 19 Benutzerdefinierte HTTP-Handler... 479 HTTP-Handler... 480 Integrierte Handler... 481 IHttpHandler... 484 Handler und Sitzungszustand... Generische Handler (ASHX-Dateien)... 489 490 Zusammenfassung... 493 Schnellübersicht... 494 Teil E Webdienste, AJAX, Bereitstellung und Silverlight.... 495 20 ASP.NET-Webdienste... 497 Remotezugriff... 498 Remotezugriff über das Web... 499 SOAP... 500 Das Typsystem transportieren... 500 Web Service Description Language... 501 Wenn Sie ASP.NET nicht verwenden könnten... 501 Ein Webdienst in ASP.NET... 501 ASP.NET-Webdienst erstellen... 502 XML-Webdienste verwenden... 509
14 Inhaltsverzeichnis Asynchrone Ausführung... 514 QuoteService asynchron benutzen... 515 Wozu sind Webdienste nützlich?... 517 Andere Features... 518 Zusammenfassung... 518 Schnellübersicht... 519 21 Windows Communication Foundation (WCF)... 521 Wiederbelebung des verteilten Computing... 521 Eine API für die fragmentierte Kommunikation... 522 WCF für verbundene Systeme... 523 Konstituierende Elemente von WCF... 524 WCF und ASP.NET... 526 Side-by-Side-Modus... 527 ASP.NET-Kompatibilitätsmodus... 527 Einen WCF-Dienst erstellen... 528 Einen WCF-Client erstellen... 534 Zusammenfassung... 540 Schnellübersicht... 541 22 AJAX... 543 Was ist AJAX?... 544 AJAX im Überblick... 545 AJAX aus einem anderen Blickwinkel betrachtet... 548 ASP.NET AJAX-Serversteuerelemente... 548 AJAX-Clientunterstützung... 550 ASP.NET AJAX Control Toolkit... 550 Weitere, von der ASP.NET AJAX Community erstellte Elemente... 551 AJAX Control Toolkit Potpourri... 551 AJAX an einem Beispiel kennenlernen... Das Timer-Steuerelement nutzen... 554 561 Das UpdateProgress-Steuerelement nutzen... 569 Extendersteuerelemente... 573 Das AutoCompleteExtender-Steuerelement... 573 Eine modale Popup-Komponente erstellen... 580 Zusammenfassung... 584 Schnellübersicht... 585 23 ASP.NET und WPF-Inhalte... 587 Was ist WPF?... 587 WPF-Inhaltsdateien und Webanwendungen... 592 Was ist mit Silverlight?... 598 Zusammenfassung... 599 Schnellübersicht... 600
Inhaltsverzeichnis 15 24 Webanwendungen bereitstellen... 601 Visual Studio-Projekte... 602 HTTP-Projekt... 602 FTP-Projekt... 603 Dateisystem-Projekt... 603 Vorkompilierung... 603 Vorkompilierung zur Leistungsoptimierung... 604 Vorkompilierung für die Weitergabe... 604 Eine Website veröffentlichen... 613 Zusammenfassung... 615 Schnellübersicht... 616 Glossar... 617 Stichwortverzeichnis... 619 Über den Autor... 633
16 Inhaltsverzeichnis