ASP.NET 4 - sisis.rz.htw-berlin.de · ASP.NET 4.0 Konzepte und Techniken zur Programmierung von...

21
Matthias Fischer Jörg Krause ASP.NET 4.0 Konzepte und Techniken zur Programmierung von Websites HANSER

Transcript of ASP.NET 4 - sisis.rz.htw-berlin.de · ASP.NET 4.0 Konzepte und Techniken zur Programmierung von...

  • Matthias FischerJörg Krause

    ASP.NET 4.0Konzepte und Techniken zurProgrammierung von Websites

    HANSER

  • 1 Über dieses Buch 27

    2 ASP.NET und das Framework 37

    3 Entwicklungswerkzeuge 61

    4 Protokolle des Web 89

    5 Programmiersprachen des Web 133

    6 Konfiguration des Projekts 249

    7 Arbeitsweise und Funktion 273

    8 Applikationen erstellen 345

    9 Programmierung von Seiten 379

    10 Steuerelemente und WebParts 413

    11 Datenbindung und Validierung 505

    12 Navigationsmodelle 555

    13 Datenbanken und Datenzugriff 591

    14 Globalisierung und Lokalisierung 697

    15 Master-Seiten und Themes 727

    16 AJAX - Asynchrone Programmierung 747

  • Schnellübersicht

    17 Dynamische Daten 783

    18 Model View Controller 811

    19 Webdienste 855

    20 Sicherheit und Benutzer 887

    21 Optimierung des Datenverkehrs 959

    22 Steuerelemente entwickeln 977

    23 Gerätespezifische Anpassung 1023

    24 Handler und Module 1043

    25 Erweiterungsmodell Provider 1079

    26 Ressourcen 1103

    27 GDI und Silverlight 1141

    6

  • Auf einen Blick 5

    Über die Autoren 7

    Inhaltsverzeichnis 9

    1 Über dieses Buch 27

    1.1 Intention 27

    1.2 Das Konzept hinter diesem Buch 281.2.1 Übersicht über die Teile 28

    1.2.2 Was dieses Buch nicht leistet 28

    1.3 Die Zielgruppe für dieses Buch 29

    1.4 Wie dieses Buch zu lesen ist 30

    1.4.1 Verwendete Programmiersprache 30

    1.4.2 Hinweiselemente und Formatierungen 30

    1.4.3 Augmentierung mit der TexxToor-Technologie 31

    1.5 Anmerkungen der Autoren 32

    2 ASP.NET und das Framework 37

    2.1 Was verbirgt sich hinter dem Begriff .NET? 372.1.1 Das .NET-Framework 4.0 38

    2.1.2 Compiler und Interpreter 39

    2.1.3 Sprachunabhängigkeit dank MSIL-Code 40

    2.1.4 Common Type System 40

    2.2 Überblick über das Framework 41

    2.2.1 Die Laufzeitumgebung Common Language Runtime 41

    9

  • Inhaltsverzeichnis

    2.2.2 Die Foundations 42

    2.3 Programmierprinzipien 44

    2.3.1 Basiselemente einer Applikation: WebForms 44

    2.3.2 Spezielle Verzeichnisse 46

    2.3.3 Eingebetteter Code - Code Inline 47

    2.3.4 Hinterlegter Code - Code Behind 48

    2.4 Hinweise zum Stil - Codekonventionen 55

    2.4.1 Schreibweise von Namen im Code 55

    2.4.2 Hinweise zur Benennung von Standardtypen 56

    2.4.3 Hinweise für Web-Programmierer 58

    3 Entwicklungswerkzeuge 61

    3.1 Einführung 613.1.1 Ausführungen Visual Studio 2010 62

    3.1.2 Installation von Visual Studio 62

    3.2 Überblick über Visual Studio 2010 64

    3.2.1 Aufbau der IDE 64

    3.2.2 Projekte 65

    3.2.3 Web Seite 68

    3.3 Erste Schritte 69

    3.3.1 „Hallo Welt"-Programm 69

    3.3.2 Umgang mit Datenbanken in Visual Studio 74

    3.4 Fehlersuche und Debugging 75

    3.4.1 Arten von Fehlern 75

    3.4.2 Werkzeuge 78

    3.5 Expression Produkte 83

    3.5.1 Expression Studio 83

    3.6 Die Kommandozeilenwerkzeuge 85

    3.6.1 Die Werkzeuge des Frameworks 85

    3.6.2 WerkzeugespeziellfurASP.NET 87

    4 Protokolle des W e b 89

    4.1 Das Referenzmodell 89

    4.2 Die Internet-Protokollfamilie 90

    4.2.1 Wichtige Protokolle der Internet Protocol Suite 92

    10

  • Inhaltsverzeichnis

    4.3 Die Hochsprachenprotokolle 100

    4.3.1 File Transfer Protocol (FTP) 100

    4.3.2 Network News Transfer Protocol (NNTP) 100

    4.3.3 Hypertext Transfer Protocol (HTTP) 100

    4.3.4 Wie dynamische Webseiten entstehen 104

    4.4 Die Bausteine einer Webseite 106

    4.5 XML, XPath und XSLT 109

    4.5.1 XML-Grundlagen 109

    4.5.2 Die Grammatik eines XML-Dokuments definieren 113

    4.5.3 XPath 116

    4.5.4 XSLT 122

    4.6 Hilfskiassen des .NET-Frameworks 127

    4.6.1 Definition Uniform Resource Identifier (URI) 127

    4.6.2 URI-Unterstützung im Framework 129

    5 Programmiersprachen des Web 133

    5.1 Einführung in C# 133

    5.1.1 Notation und Verwendung 134

    5.1.2 Objektschreibweise 135

    5.1.3 Abarbeitung von Code in ASP.NET 135

    5.1.4 Umgang mit Compiler-Warnungen 137

    5.2 Die Sprache C# 137

    5.2.1 Namensräume 137

    5.2.2 Variablen und Datentypen 139

    5.2.3 Kommentare, Konstanten, Operatoren 146

    5.2.4 Anweisungen 151

    5.2.5 Schleifenanweisungen 156

    5.2.6 Objektorientierte Programmierung 162

    5.2.7 Arrays und Kollektionen 196

    5.2.8 Fehlerbehandlung, Ausnahmen und Ereignisse 210

    5.2.9 Verwaltete Funktionszeiger 217

    5.3 Einführung in JavaScript 221

    5.3.1 Einführung 222

    5.3.2 Notation und Verwendung 222

    5.3.3 Kompatibilität 223

    11

  • Inhaltsverzeichnis

    5.4 Die Sprache JavaScript 224

    5.4.1 Imperative Elemente 224

    5.4.2 Ausdrücke und Operatoren 226

    5.4.3 Anweisungen und Kontrollfluss 228

    5.4.4 Fehlerbehandlung 231

    5.4.5 Objektorientierung 233

    5.4.6 Vererbung 237

    5.4.7 Eingebaute Objekte 239

    5.4.8 DOM-Manipulation 245

    5.4.9 Ereignisse (Events) 248

    6 Konfiguration des Projekts 249

    6.1 Konfiguration von Applikationen: web.config 249

    6.1.1 Die Konfigurationsdatei in ASP.NET 4 250

    6.1.2 Struktur der Konfigurationsdatei 251

    6.1.3 Prinzipieller Umgang mit Konfigurationsdateien 253

    6.2 Konfiguration des Systems: machine.config 253

    6.2.1 Optionen des Compilers 253

    6.2.2 Den Arbeitsprozess konfigurieren 255

    6.2.3 Besondere Aufgaben für den Arbeitsprozess 259

    6.3 Zugriff auf die Konfiguration 260

    6.3.1 Anwendung der Klasse WebConfigurationManager 261

    6.3.2 Schreibender Zugriff auf die Konfiguration 263

    6.4 Eigene Konfigurationsabschnitte 265

    6.4.1 Aufbau des Konfigurationsabschnitts der web.config 265

    6.4.2 Definition eines einfachen Konfigurationsabschnitts 267

    7 Arbeitsweise und Funktion 273

    7.1 Wie ASP.NET intern funktioniert 274

    7.1.1 Die Architektur der Anforderungsverarbeitung 274

    7.1.2 Was in ASP.NET wirklich funktioniert 274

    7.1.3 Die Lebensdauer einer Anforderung 275

    7.1.4 Wie die Anforderung verarbeitet wird 280

    7.1.5 Die Laufzeitumgebung 282

    7.1.6 HttpContext und HttpApplication 288

    7.1.7 Der Weg durch die ASP.NET-Pipeline 292

    7.1.8 Module und Handler 293

    12

  • Inhaltsverzeichnis

    7.2 Die Lebenszyklen 294

    7.2.1 Die integrierte Pipeline der IIS7 294

    7.2.2 Die Verarbeitungspipeline der Applikation 295

    7.2.3 Der Lebenszyklus der Seite 298

    7.2.4 Die Ereignisse des Lebenszyklus der Seite 299

    7.2.5 Bemerkungen zum Lebenszyklus der Steuerelemente 301

    7.3 Der ViewState - Status der Steuerelemente 303

    7.3.1 Warum Sie den ViewState verstehen sollten 304

    7.3.2 Die wahre Rolle des ViewState 314

    7.3.3 Probleme mit dem ViewState 315

    7.4 Prozesse und Threads 324

    7.4.1 Die Verwaltung des Arbeitsprozesses 324

    7.4.2 Informationen über den Arbeitsprozess 327

    7.4.3 Informationen über die Applikationsdomäne 330

    7.4.4 Threads verstehen und benutzen 333

    7.4.5 Die Konfiguration des ThreadPools 334

    7.4.6 Optimierung typischer Aufgaben 336

    7.4.7 Installation eines Performance Counters 337

    7.4.8 Threads und Asynchrone Operationen 340

    8 Applikationen erstellen 345

    8.1 Die Standardobjekte 3458.1.1 Die Standardobjekte 346

    8.2 Daten senden und empfangen 348

    8.2.1 Den Datenfluss steuern 348

    8.2.2 Die Standardmethoden der Datenübertragung 351

    8.2.3 Header erzeugen und analysieren 354

    8.2.4 Servervariablen 354

    8.2.5 Den Inhaltstyp bestimmen 356

    8.3 Sitzungen (Sessions) 358

    8.3.1 Grundlagen 358

    8.3.2 Ablageart von sitzungsgebundenen Daten 359

    8.3.3 Ablageform der sitzungsgebundenen Daten 361

    8.3.4 An Sitzungen gebundene Ereignisse 363

    8.3.5 Umgang mit Sitzungs-Cookies 363

    8.3.6 Konfiguration des Sitzungsmanagements 363

    13

  • Inhaltsverzeichnis

    8.3.7 Sitzungsvariablen verwenden 365

    8.4 Cookies 366

    8.4.1 Cookies als Informationsspeicher 366

    8.4.2 Cookies praktisch verwenden 369

    8.5 Applikationsmanagement 372

    8.5.1 Einführung in das Applikationsereignismodell 372

    8.5.2 Die Datenspeicherung: Applikationsvariablen 374

    8.5.3 Die Datei global.asax 377

    9 Programmierung von Seiten 379

    9.1 Die Direktiven der Seiten 3799.1.1 Die Direktiven 380

    9.1.2 Die Direktive @Page 381

    9.1.3 Die Direktive ©Import 384

    9.1.4 Die Direktive ©Register 384

    9.1.5 Die Direktive @lmplements 385

    9.1.6 Die Direktive ©MasterType 385

    9.1.7 Die Direktive ©PreviousPageType 386

    9.1.8 Die Direktive ©OutputCache 386

    9.2 Aufbau einer Seite und die Klasse Page 387

    9.2.1 Aufbau der Seite 387

    9.2.2 Code-Blöcke 388

    9.2.3 Code-Render-Blöcke 388

    9.2.4 Kommentare 389

    9.2.5 Ausgabeausdrücke 389

    9.2.6 Ausdrücke 390

    9.2.7 Einbindung externer Objekte 391

    9.3 Das Zurücksenden der Seite - Der PostBack 392

    9.3.1 Die Natur der Webformulare 392

    9.4 Seitenübergang 396

    9.4.1 Übergabe der Programmsteuerung 397

    9.4.2 Kontext-Handler und Seitenreferenzierung 400

    9.5 Asynchrone Seiten 403

    9.5.1 Den richtigen Handler für die Seite wählen 403

    9.5.2 Asynchrone Aufgaben 409

  • Inhaltsverzeichnis

    10 Steuerelemente und WebParts 413

    10.1 Das Entwurfszeitverhalten 41410.1.1 IntelliSense 415

    10.1.2 PropertyGrid 415

    10.1.3 Smart Tags 415

    10.2 HTML-Steuerelemente 416

    10.2.1 Einführung in die Steuerelemente-Welt 416

    10.2.2 Prinzipieller Umgang mit HTML-Steuerelementen 418

    10.2.3 Gemeinsame Eigenschaften und Methoden 425

    10.2.4 Basisoperationen mit Steuerelementen 426

    10.2.5 Ereignisse der Steuerelemente verarbeiten 428

    10.2.6 Gestalterische Elemente 432

    10.2.7 Dateien per HTTP hochladen (Upload) 434

    10.3 Webserver-Steuerelemente 437

    10.3.1 Übersicht über die Webserver-Steuerelemente 438

    10.3.2 Einsatzprinzipien und Basiseigenschaften 441

    10.3.3 Text auf der Seite steuern 444

    10.3.4 Texteingabefelder erzeugen und auswerten 447

    10.3.5 Schaltflächen erzeugen und verwenden 449

    10.3.6 Listen-Steuerelemente 452

    10.4 Komplexe Steuerelemente 459

    10.4.1 Kalender anzeigen 459

    10.4.2 AdRotator 466

    10.4.3 XML anzeigen 466

    10.4.4 TreeView 466

    10.5 Das neue Steuerelementverhalten in ASP.NET 4 468

    10.5.1 Kompatibilität mit bisherigen Versionen sicherstellen 468

    10.5.2 Client-IDs 469

    10.6 WebParts 471

    10.6.1 Die Natur des WebParts 472

    10.6.2 Funktionsweise 472

    10.6.3 Erstellen von WebParts 476

    10.6.4 Personalisieren von WebParts 478

    10.6.5 Erweiterung des WebPart-Personalisierungsproviders 479

    10.7 Benutzersteuerelemente 489

    10.7.1 Grundlagen der Benutzersteuerelemente 490

    15

  • Inhaltsverzeichnis

    10.7.2 Wie Benutzersteuerelemente entstehen 490

    10.7.3 Programmierung von Benutzersteuerelementen 493

    10.7.4 Techniken der Benutzersteuerelemente 496

    11 Datenbindung und Validierung 505

    11.1 Grundlagen der Datenbindung 50511.1.1 Die Syntax der Datenbindung 506

    11.1.2 Datenbindung in beide Richtungen 507

    11.1.3 Datenbindung von XML-Datenquellen 508

    11.2 Datengebundene Steuerelemente 508

    11.2.1 Das Steuerelement Repeater 509

    11.2.2 Das Steuerelement DataList 510

    11.2.3 Das Steuerelement GridView 511

    11.2.4 Das Steuerelement FormView 518

    11.2.5 Das Steuerelement DetailsView 518

    11.2.6 Das Steuerelement DataPager 518

    11.2.7 Das Steuerelement ListView 518

    11.3 Datenbindung in Vorlagen 519

    11.3.1 Schreibweise der Vorlagen 519

    11.3.2 Die Datenbindung im Code 520

    11.3.3 Die Bindung komplexer Objekte 521

    11.3.4 Vorbereiten einer individuellen Datenquelle 522

    11.3.5 Automatische Listen mit DataList 524

    11.3.6 Umgang mit dem Anzeigestatus und zwei Alternativen dazu 531

    11.4 Asynchrone Datenbindung 535

    11.5 Einführung in die Validierung 536

    11.5.1 Die Validierung im Detail 537

    11.5.2 Validierung und HTML 537

    11.5.3 Validierung auf der Serverseite 537

    11.5.4 Die API der Seitenvalidierung 538

    11.6 Wichtige Kontroll-Steuerelemente 540

    11.6.1 Das Vergleichs-Steuerelement 540

    11.6.2 Das Bereichskontroll-Steuerelement 542

    11.6.3 Das Regulärer Ausdruck-Steuerelement 542

    11.6.4 Selbstdefinierte Kontrollsteuerelemente 549

    16

  • Inhaltsverzeichnis

    12 Navigat ionsmodelle 555

    12.1 Konzepte für die Navigation 555

    12.1.1 Die Steuerdatei web.sitemap 555

    12.2 Steuerelemente für die Navigation 558

    12.2.1 Das Menu-Steuerelement (Menü) 558

    12.2.2 Pfade mit SiteMapPath darstellen 561

    12.3 Der Sitemap-Provider 562

    12.4 Entwicklung eines eigenen Sitemap-Providers 563

    12.4.1 Vorbereitende Schritte 563

    12.4.2 SQL-basierte Navigation 567

    12.5 Steuerung virtueller Pfade 571

    12.5.1 Den Virtual Path Provider verwenden 572

    12.5.2 Den Virtual Path Provider registrieren 572

    12.5.3 Voraussetzungen für den Virtual Path Provider 573

    12.5.4 Hilfreiche Klassen für Pfad-und Dateioperationen 574

    12.5.5 Einen VirtualPathProvider selbst entwickeln 576

    12.5.6 Probleme und Grenzen des VirtualPathProvider 588

    13 Datenbanken und Datenzugriff 591

    13.1 DatenzugriffmitADO.NET 59113.1.1 PrinzipderArbeitmitADO.NET 591

    13.1.2 DieArchitekturvonADO.NET 593

    13.1.3 Verbindung zu einer Datenbank aufbauen 596

    13.1.4 Verbindungsorientierte Ereignisse 599

    13.1.5 Asynchrone Befehlsausführung 601

    13.1.6 SQL-Befehle an die Datenbank senden 603

    13.1.7 Datensätze lesen 605

    13.1.8 Typsicherer Zugriff auf Daten 610

    13.1.9 Behandlung komplexer Abfragen mit DataReader 611

    13.1.10 Detaillierte Informationen über eine Tabelle ermitteln 613

    13.1.11 Gespeicherte Prozeduren verwenden 614

    13.2 Prinzip der Datenquellen 617

    13.2.1 Datenquellenkomponenten 617

    13.2.2 Auf IDataSource basierende Datenquellen 618

    13.2.3 Die Schnittstelle IDataReader 620

    17

  • Inhaltsverzeichnis

    13.3 DatenverwaltungmitADO.NET 62013.3.1 Datenverwaltung im DataSet 621

    13.3.2 Die Struktur einer Tabelle im DataSet bestimmen 628

    13.3.3 Das DataSet und XML 629

    13.4 Der Datenadapter 633

    13.4.1 Einführung in die Klasse DataAdapter 633

    13.4.2 Datensichten mit DataView 635

    13.4.3 Aktualisieren einer Datenbank mit CommandBuilder 640

    13.4.4 Die Ereignisse des Datenadapters 644

    13.4.5 Informationen zu typisierten DataSets 645

    13.5 XML und unterstützende Formate 645

    13.5.1 XMLin.NET 645

    13.5.2 XML mit XSLT transformieren 652

    13.6 LINQ - Language Integrated Query 661

    13.6.1 Sprachliche Grundlagen 662

    13.6.2 Aggregatoren und Selektoren 668

    13.6.3 LINQ-to-Objects 669

    13.6.4 LINQ-to-XML 672

    13.6.5 LINQ-To-SQL 675

    13.7 Entity Framework 685

    13.7.1 Grundlagen 685

    13.7.2 Konzepte 686

    13.7.3 Umstieg von LINQ-to-SQL auf das Entity Framework 688

    13.7.4 Erzeugen des Entitäten Daten Modells (EDM) 688

    13.7.5 Konzeptionelles Modell ohne Assistent erstellen 693

    14 Globalisierung und Lokalisierung 697

    14.1 Grundlagen der Globalisierung 69714.1.1 Klassen für Globalisierungseinstellungen 698

    14.2 Mehrsprachige Seiten programmieren 700

    14.2.1 LokalisierungsfunktioneninASP.NET 701

    14.2.2 Prinzip der Sprachcodes 702

    14.2.3 Einstellungen des Browsers ermitteln 703

    14.2.4 Einrichten der Kultur für die aktuelle Sitzung 706

    14.2.5 Kulturspezifische Informationen für Kalender 708

    18

  • Inhaltsverzeichnis

    14.3 Ressourcen für die Lokalisierung 710

    14.3.1 Ressourcen-Dateien als Basis 710

    14.3.2 Verwendung von binären Ressourcen-Dateien 716

    14.3.3 Ressourcen in Assemblies speichern 720

    14.4 Praxistipps zur Lokalisierung 721

    14.4.1 Bereitstellung der Lokalisierungsfunktionen 721

    14.4.2 Konfiguration in web.config 722

    15 Master-Seiten und Themes 727

    15.1 Master-Seiten 72715.1.1 Prinzip der Master-Seiten 728

    15.1.2 Eine Master-Seite erstellen 729

    15.1.3 Verwendung der Master-Seite 730

    15.1.4 Konfiguration mit der Master-Direktive 732

    15.1.5 Die Standardvorlage für Webseiten 732

    15.2 Das Design der Seiten (Theme) 734

    15.2.1 Überblick 735

    15.2.2 CSS 737

    15.2.3 Skins 744

    16 AJAX - Asynchrone Programmierung 747

    16.1 Applikationen für das Web 2.0 747

    16.2 Herkunft und Natur der Ajax-Technologie 749

    16.2.1 Die Architektur von Ajax 749

    16.2.2 Ajax ohne Verwendung eines Frameworks 750

    16.3 AJAX - Microsofts Ajax-Implementierung 753

    16.3.1 Der ScriptManager 753

    16.3.2 AJAXdebuggen 754

    16.3.3 Skript-Referenzen hinzufügen 754

    16.3.4 Referenzen zu Webdiensten hinzufügen 754

    16.3.5 Umgang mit Master-Seiten 755

    16.3.6 Das UpdatePanel-Steuerelement 755

    16.3.7 Das UpdateProgress-Steuerelement 757

    16.3.8 Das Timer-Steuerelement 760

    16.4 Die AJAX-Client-Bibliothek 761

    16.4.1 Umgang mit der Client-Bibliothek 762

    16.4.2 Das Typsystem 763

    19

  • Inhaltsverzeichnis

    16.4.3 Debuggen mit der Client-Bibliothek 775

    16.5 Neuerungen mit ASP.NET 4 775

    16.5.1 Live Datenbindungen 775

    16.5.2 DataView und DataContext 777

    17 Dynamische Daten 783

    17.1 Grundlagen dynamischer Daten 783

    17.1.1 Funktionen 783

    17.1.2 Hintergrund 784

    17.2 Technische Grundlagen 785

    17.2.1 OR-Mapping 786

    17.2.2 URL-Routing 786

    17.2.3 Funktionsweise dynamischer Datenanwendungen 787

    17.3 Vorlagen für die Präsentationsebene 788

    17.3.1 Seitenvorlagen 789

    17.3.2 Entity-Vorlagen 790

    17.3.3 Feldvorlagen 792

    17.3.4 Filtervorlagen 795

    17.4 Steuerelemente für dynamische Daten 795

    17.5 Anwendungsbeispiel 798

    17.5.1 Erstellen einer datengetriebenen Webanwendung 798

    17.5.2 Erweitern und Anpassen der Anwendung 802

    18 Model View Controller 811

    18.1 Das MVC-Konzept 81118.1.1 Grundlagen 812

    18.1.2 Das MVC-Entwurfsmuster 812

    18.2 lmplementierunginASP.NET 813

    18.3 URL-Routing 814

    18.3.1 Funktionsweise 814

    18.3.2 Das Standardverhalten des Routing 815

    18.3.3 Funktionsweise MVC-lmplementierung 816

    18.3.4 MVC und der IIS6 818

    18.3.5 Routen mit Webforms verwenden 820

    18.4 MVC praktisch einsetzen 823

    18.4.1 Ein Einführungsbeispiel 823

    20

  • Inhaltsverzeichnis

    18.4.2 Erweiterung der Beispielanwendung 826

    18.5 Validierung 836

    18.5.1 Einleitung 836

    18.5.2 Eingabe-Validierung 837

    18.5.3 Model Validation 841

    18.6 Weitere Funktionen 845

    18.6.1 Benutzersteuerelemente 845

    18.6.2 Action und RenderAction 847

    18.6.3 Areas 848

    18.6.4 Themes 850

    19 Webdienste 855

    19.1 Einführung in Webdienste 855

    19.1.1 Grundlagen der Webdienste 855

    19.1.2 Die Protokolle der Webdienste 856

    19.1.3 Öffentliche Webdienste konsumieren 863

    19.2 ASMX-Webdienste 864

    19.2.1 Webdienste anbieten 864

    19.2.2 Praktische Umsetzung eines Dienstes 865

    19.3 WCF-Webdienste 870

    19.3.1 Endpunkte: Adresse, Bindung, Vertrag 871

    19.3.2 Die WCF-Bindungen 875

    19.3.3 Einführung in Dienstverträge 878

    19.3.4 Datenverträge 881

    19.3.5 WCF-Webdienste für ASP.NET-AJAX 883

    19.3.6 Debugging-Tipps 885

    20 Sicherheit und Benutzer 887

    20.1 Das Sicherheitskonzept 887

    20.1.1 Sicherheitskonzepte in Webservern 887

    20.1.2 Sicherheit und die IIS 888

    20.2 ASP.NET-Sicherheitsfunktionen der IIS 889

    20.2.1 Formen der Benutzerauthentifizierung 889

    20.2.2 Personalisierung 898

    20.2.3 Windows-Authentifizierung 899

    20.3 Mitgliedschaft und Rollen 900

    20.3.1 Die Autorisierungsmodule 901

    21

  • Inhaltsverzeichnis

    20.3.2 Dienste der Benutzer- und Rollenverwaltung 901

    20.3.3 Das Erweiterungsmodell 901

    20.4 Benutzerdatenverwaltung mit Profilen 930

    20.4.1 Personalisierung und Benutzerdaten 931

    20.4.2 Erweiterung des Profilproviders 934

    20.4.3 Implementierung des Providers 937

    20.4.4 Ein Profilprovider mit AJAX-Unterstützung 948

    20.5 Die Anmeldesteuerelemente 952

    20.5.1 Einführung in die Anmeldesteuerelemente 952

    20.5.2 Das Login-Steuerelement 953

    20.5.3 Das LoginView-Steuerelement 954

    20.5.4 Das PasswordRecovery-Steuerelement 955

    20.5.5 Das ChangePassword-Steuerelement 956

    20.5.6 Das CreateUserWizard-Steuerelement 957

    21 Optimierung des Datenverkehrs 959

    21.1 CachinginASP.NET 95921.1.1 Einführung 959

    21.1.2 Speicherung von Seiten 960

    21.1.3 Speicherung von statischen Teilen einer Seite im Cache 962

    21.1.4 Speicherung von Seiten mit MVC 963

    21.1.5 Automatischer Start - den Cache vorwärmen 963

    21.2 Programmgesteuerte Beeinflussung des Cache 964

    21.2.1 Das HttpCachePolicy-Objekt 965

    21.2.2 Speicherung von Daten während der Laufzeit 966

    21.2.3 Warum ein Element aus dem Cache entfernt wurde -CacheltemRemovedReason 968

    21.3 Erweiterung des Cache in ASP.NET 4 968

    21.3.1 Einen eigenen Cache-Provider konfigurieren 968

    21.3.2 Dynamische Auswahl des Cache-Providers 969

    21.3.3 Einen eigenen Cache-Provider schreiben 969

    21.4 Allgemeine Tipps zur Optimierung 973

    21.4.1 Caching verwenden 973

    21.4.2 Funktionen deaktivieren, die nicht benötigt werden 973

    21.4.3 Fehlerhilfen nach der Freigabe abschalten 974

    21.4.4 Nachdenken über die Gestaltung von Applikationen 974

    22

  • Inhaltsverzeichnis

    22 Steuerelemente entwickeln 977

    22.1 Grundlagen kundenspezifischer Steuerelemente 977

    22.1.1 Zusammengesetzte kundenspezifische Steuerelemente 978

    22.2 Entwicklung eigener Steuerelemente 989

    22.2.1 Kontrolle des Ausgabeverhaltens eines Steuerelements 989

    22.2.2 Stile und Attribute für Steuerelemente 996

    22.3 Datengebundene Steuerelemente 998

    22.3.1 Aufbau datengebundener Steuerelemente 999

    22.3.2 Entwicklung eines datengebundenen Steuerelements 1000

    22.4 Vorlagenbasierte Steuerelemente 1003

    22.4.1 Einführung 1004

    22.4.2 Der Aufbau der Vorlagen 1005

    22.4.3 Wie die Vorlagen-Eigenschaft funktioniert 1006

    22.4.4 Vorlagen verarbeiten 1007

    22.4.5 Erweitertes Beispiel für ein vorlagenbasierte Steuerelement 1010

    22.5 Entwurfszeitverhalten 1013

    22.5.1 Visual Studio unterstützen 1014

    22.5.2 Das „Drag und Drop"-Verhalten modifizieren 1016

    22.5.3 Bessere Entwurfszeitunterstützung 1019

    22.5.4 Entwurfszeitverhalten datengebundener Steuerelemente 1019

    22.5.5 Entwurfszeitverhalten vorlagengebundener Steuerelemente 1020

    23 Gerätespezif ische Anpassung 1023

    23.1 Adaptives Steuerelementverhalten 1023

    23.1.1 Das Standardverhalten der Steuerelemente 1024

    23.2 Adapter einsetzen 1026

    23.2.1 Die Klasse ControlAdapter 1027

    23.2.2 Die Klasse PageAdapter 1030

    23.3 Gerätespezifische Filter 1031

    23.3.1 Aufbau der Browserdefinitionsdatei 1032

    23.3.2 Eigene Filter definieren 1033

    23.4 Einen Steuerelementadapter entwickeln 1035

    23.4.1 Vorbereitung 1035

    23.4.2 Der Adapter 1035

    23.4.3 Konfiguration des Steuerelementadapters 1040

    23

  • Inhaltsverzeichnis

    23.5 Einen Seitenadapter entwickeln 1040

    23.5.1 Beispieladapter 1040

    23.5.2 Konfiguration des Seitenadapters 1041

    24 Handler und Module 1043

    24.1 Module, Handlers und die IIS 1043

    24.2 Module 1044

    24.2.1 Module und die IIS7-Architektur 1044

    24.2.2 Native Module 1045

    24.2.3 Verwaltete Module 1048

    24.2.4 Basisimplementierung 1049

    24.2.5 Ein Modul erstellen 1050

    24.2.6 Interaktionen zwischen Modulen 1053

    24.3 Module installieren und konfigurieren 1054

    24.3.1 Konfigurieren des Servers und der Entwicklungsumgebung 1055

    24.3.2 Die IIS7/IIS7.5 konfigurieren 1055

    24.3.3 Konfiguration mit der IIS-Managementkonsole 1055

    24.4 Http-Handler 1056

    24.4.1 Eingebaute Handler 1056

    24.5 Synchrone Handler 1056

    24.5.1 Typische Szenarios mit HTTP-Handlern 1057

    24.5.2 Vorbereitende Schritte 1057

    24.5.3 Einen Handler programmieren 1058

    24.5.4 Der Einstiegspunkt in den Handler 1058

    24.5.5 Beispiele für typische Handler 1060

    24.5.6 Weitere Methoden der Verwendung von Handlern 1062

    24.6 Asynchrone Handler 1064

    24.6.1 Der Thread-Pool und asynchrone Handler 1064

    24.7 Handler installieren und konfigurieren 1070

    24.7.1 Konfigurieren des Servers und der Entwicklungsumgebung 1071

    24.7.2 Konfiguration der IIS7-Einstellungen 1071

    24.7.3 Konfiguration mit der IIS-Managementkonsole 1072

    24.7.4 Konfigurieren eines generischen Handlers 1073

    24.8 Module und Handler testen und debuggen 1073

    24.8.1 Debuggen mit den IIS 1073

    24.8.2 Probleme beim Debugging des Worker-Prozesses 1076

  • Inhaltsverzeichnis

    24.8.3 Tracing für Handler 1077

    25 Erweiterungsmodell Provider 1079

    25.1 Konzept der Provider 1079

    25.1.1 Die Schwerpunkte des Providermodells 1080

    25.2 Die Standardprovider 1081

    25.2.1 Eingebaute Provider 1082

    25.2.2 Erweiterung der Standardprovider 1083

    25.3 Die Anatomie der Provider 1083

    25.3.1 Einen Provider verfügbar zu machen 1084

    25.3.2 Bemerkungen zur Entwicklung eigener Provider 1087

    25.4 Erstellen eines providerbasierten Dienstes 1090

    25.4.1 Den Dienst erzeugen 1091

    25.4.2 Den Provider erstellen 1093

    25.4.3 Konfiguration des Providers 1097

    25.4.4 Den Dienst verwenden 1099

    26 Ressourcen 1103

    26.1 Programmierung eigener Ressourcenprovider 1103

    26.1.1 Das Providermodell erweitern 1104

    26.1.2 Vorarbeiten 1105

    26.1.3 Den Provider implementieren 1107

    26.1.4 Entwurfszeitunterstützung 1114

    26.1.5 Ressourcen online bearbeiten 1124

    26.2 Erweiterung der Ausdruckssyntax 1130

    26.2.1 Definition privater Ausdrucks-Generatoren 1130

    26.2.2 Den Ausdrucks-Generator erweitern 1131

    26.3 Dynamische Ausdrücke ohne Code 1136

    26.3.1 Dynamische Ausdrücke auf nicht kompilierten Seiten 1136

    26.3.2 Mehr Informationen 1137

    26.4 Entwurfszeitunterstützung 1137

    26.4.1 Umgang mit Visual Studio zur Entwurfszeit 1138

    26.4.2 Fehlersuche zur Entwurfszeit 1138

    27 GDI und Silverlight 1141

    27.1 Grundlagen GDI+ 1141

    27.1.1 Einführung 1142

    25

  • Inhaltsverzeichnis

    27.1.2 Vektorgrafik 1143

    27.2 Dynamische Grafiken erzeugen 1148

    27.2.1 Funktionsweise 1148

    27.2.2 Ein dynamisches Captcha erstellen 1149

    27.3 Silverlight 1152

    27.3.1 Einführung in Silverlight 1152

    27.3.2 Architektur von Silverlight 1153

    27.3.3 Silverlight und XAML 1155

    27.3.4 Der Layout-Manager 1159

    27.3.5 Beispielanwendung WCF-Taschenrechner 1163

    27.3.6 Silverlight-Hosting und-Verteilung 1171

    27.4 Grafische Steuerelemente 1174

    27.4.1 Das Chart-Steuerelement (Diagramm) 1174

    Index 1181

    26