3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5...

18
3., aktualisierte Auflage Moderne Webanwendungen für .NET-Entwickler Server-Anwendungen, Web APIs, SPAs & HTML-Cross- Platform-Anwendungen mit ASP.NET, ASP.NET Core, JavaScript, TypeScript & Angular mit Beiträgen von Dr. Holger Schwichtenberg, Jörg Krause, Dr. Joachim Fuchs, Sebastian Kleinschmager und Manfred Steyer

Transcript of 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5...

Page 1: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

3., aktualisierte Auflage

Moderne Webanwendungen für

.NET-Entwickler

Server-Anwendungen, Web APIs, SPAs & HTML-Cross-

Platform-Anwendungen mit ASP.NET,

ASP.NET Core, JavaScript, TypeScript & Angular

mit Beiträgen von Dr. Holger Schwichtenberg,Jörg Krause, Dr.Joachim Fuchs,

Sebastian Kleinschmagerund Manfred Steyer

Page 2: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

Inhalt

Vorwort zur 3. Auflage XXIII

Warum dieses Buch? XXIII

Was ist der Inhalt dieses Buchs? XXIV

Welche Voraussetzungen sollten Sie für dieses Buch mitbringen? . .XXV

Was ist das Ziel des Buchs? XXV

Welche Versionen werden in diesem Buch behandelt? XXVI

Welche Programmiersprache wird in diesem Buch verwendet?....

XXVII

Welche Werkzeuge werden in diesem Buch verwendet? XXVII

Welche Sprachversion wird in diesem Buch verwendet? XXVII

Woher bekommen Sie die Code-Beispiele und die drei

Bonuskapitel zu diesem Buch? XXVIII

Wem ist zu danken? XXX

Die Autoren XXX

TeilA Web-Basiswissen 1

1 Protokolle, Standards und Konzepte 3

Standardisierung 3

RFCs 3

World Wide Web Consortium (W3C) 4

European Computer Manufacturers Association (ECMA) 4

Hypertext Transfer Protocol (HTTP) 4

Protokollaufbau, Header, Body 5

Kommandoaufbau 6

Die HTTP-Statuscodes 7

Ablauf einer HTTP-Kommunikation 7

Kopffelder 8

HTTP 2.0 9

Ergänzende Standards zu HTTP' 10

Web-Sockets 10

WebDAV 11

I V

Page 3: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

Simple Mail Transfer Protocol (SMTP) oderExtended SMTP (ESMTP) 11File Transfer Protocol (FTP) 11REpresentational State Transfer (REST) 12Webdienste

12Merkmale

12

REST-Beispiel13

URI14

HTTP-Methoden für REST15

Multipurpose Internet Mail Extensions (MIME) 16JavaScript Object Notation (JSON) 17Atom Syndication Format (ATOM) 18Grenzen von REST: GraphQL und OData 19

Single Page Application (SPA) 19Asynchronous JavaScript and XML (AJAX) 20Responsive Web Design (RWD) 21

2 Hypertext Markup Language (HTML) 23Grundlagen HTML

23Geschichte

23XML - Grundlage für HTML

24

Markup25

XML-Dokumente25

Verarbeitung 26Der Begriff »Markup« 26

Seitenaufbau29

Document Object Model (DOM) 30Der Dokumenttyp (Doctype) 30Codierungen 30HTML5-Seitenstruktur

31Elemente der Seite

34Textelemente

34Fließ textauszeichnung 36Verweise

37Tabellen

37Multimedia und Grafiken 38Formulare

38

Skripte 39Interaktive Elemente

39Allgemeine und universelle Attribute 39

id40

class40

accesskey 41contenteditable

41contextmenu

42

VI | Inhalt

Page 4: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

dir42

draggable 42

dropzone 43hidden

43lang

43spellcheck 43style

44tabindex

44title

44

3 Cascading Style Sheets (CSS) 45Grundlagen 45Syntax 46Selektor

47Elemente (Tags) 47ID

47Klassen

47Attribute

48Logische Auswahl

48Weitere Selektoren

48Das Box-Modell

51Bausteine der Box

52Zählweise

53Ausnahmen

53Das Box-Modell in CSS3 53

Das Flexbox-Modell53

Prinzipien 53Eigenschaft der Container 55

Beachtung von Medien56

Syntax56

Parameter59

Der Viewport 63Viewport einstellen

63Parameter für den Viewport 65

Einheiten65

Absolute Einheiten66

Relative Einheiten67

4 Bootstrap 69Einführung in Bootstrap 69Neuerungen in Bootstrap 4 69Installation

70Struktur der CSS-Dateien 72Seitenaufbau

73

Browserunterstützung 74

Inhalt | VII

Page 5: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

ARIA75

Optimierung 76Hilfsklassen

78Reboot

78Struktur der Seite 79Einführung 79Das Rastersystem 80Das Flex-Raster

89Typografie 94Überschriften

95Text und Textelemente 96Listen

101Tabellen

103Hilfsklassen

112Formulare

114Struktur eines Formulars 114Eingabeelemente 124Schaltflächen

139Weitere Bausteine

144

Symbole 144

Responsive Bilder 148

Eingebettete Quellen 149Farben und Hintergründe 149

Ausrichtung von Elementen im Fluss 151Inhalte anzeigen und verstecken 152

Komponenten 152Klappmenüs (dropdown) 153

Werkzeugleisten (toolbar) 156Schaltfläche mit Menü (button group) 159

Navigation (nav, navbar) 162

Pfadnavigation (breadcrumb) 170Seitenweises Blättern (pagination) 171

Kennzeichnungen (tag) 173Großbildleinwand (jumbotron) 175Seitenüberschriften (page header) 176

Meldungen (alert) 177Fortschrittsbalken (progress) 178Medien (media) 182Allgemeine Listen (list group) 183Karten (cards) 187

Aktive Komponenten 197

Einrichtung und Aktivierung 197Die Programmierschnittstelle 198

Übergänge (transition) 199Modale Dialoge (modals) 200

VIII | Inhalt

Page 6: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

Klappmenü (dropdown) 208

Scrollbar-Überwachung (scrollspy) 209Angeheftete Navigation (affix) 211Umschaltbare Tabulatoren (tab) 211

Tooltips (tooltip) 213

Inhaltsüberlagerung (popover) 216

Meldungen (alert) 219Interaktive Schaltflächen (button) 220Inhaltseinblendung (collapse) 221Bilderkreisel (carousel)

225

Teil B Webserverprogrammierung mit ASP.NET 229

5 ASP.NET MVC231

Geschichte und Verbreitung von ASP.NET 231Architektur von ASP.NET MVC 232

Erste Schritte mit ASP.NET MVC 233ASP.NET-MVC-Projekt anlegen 233Projektaufbau

235Nuget-Pakete

236Controller anlegen 238View anlegen

240Webanwendung testen 245Einträge editieren

246

Vorschlagswerte über Drop-down-Listenfeider anbieten 251Controller

254Models entgegennehmen 254View auswählen

256Auf Ausnahmen reagieren 257URL-Mapping beeinflussen (Routing) 257Asynchrone Controller

260Vereinfachte Implementierung asynchroner Controllerseit .NET 4.5

261Views

262Razor

262Razor-Helper 265Layoutseiten

265Partielle Views

267Vorlagen für Felder und Models 269Views für mobile Anwendungen 272Zwischen unterschiedlichen Ansichten wechseln 273Minification und Bundling 274

Inhalt | IX

Page 7: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

Models275

Metadaten im Model festlegen 275HTML-Text übermitteln

276Validieren von Benutzereingaben 276

Globalisierung 282Sprach- und Ländereinstellungen festlegen 282Über Ressourcedateien mehrsprachige Inhalte bereitstellen 284Codierung festlegen 285

Areas286

Filter288

Überblick289

Umsetzung 289Filter auf Controller und Action-Methoden anwenden 291Globale Filter

292

Authentifizierungsfilter 292

6 ASP.NET Web API295

Einen einfachen HTTP-Service erstellen 295Parameter und Rückgabewerte 296HTTP-Services konfigurieren 298HTTP-Services mit Fiddler testen 300

Mehr Kontrolle über HTTP-Nachrichten 301Antworten mit HttpResponseMessage beeinflussen 301Anfragen als HttpRequestMessage darstellen 303

HttpRequestMessage und HttpResponseMessage am BeispielConditional Get

304Antworten über IHttpActionResult zurückgeben 305

HTTP-Services über HttpClient konsumieren 306

Routing 309Benutzerdefinierte Routen über die Konfiguration festlegen 309Attributbasiertes Routing 310

Weiterführende Schritte mit der Web API 313

Dynamische Parameter314

Tracing 315

Request Batching 316Cross Origin Resource Sharing (CORS) 318Validieren

319Querschnittsfunktionen implementieren 320

Message-Handler 320Filter

323

Filterüberschreibungen 330Benutzerdefinierte Formate unterstützen 330Formatter implementieren 331Formatter mit HttpClient verwenden 333

X | Inhalt

Page 8: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

Serialisierung beeinflussen334

JSON-Serializer konfigurieren 334XML-Serializer konfigurieren 335Eigenschaften von der Serialisierung ausschließen 335Zirkuläre Referenzen serialisieren 336BinaryJSON (BSON) 338

Web API und HTML-Formulare 338Einfache Formularfelder übermitteln 338

Datei-Upload via HTML-Formular 339Fortschritt ermitteln

341

Feingranulare Konfiguration 343Controllerbasierte Konfiguration 343Routenbasierte Konfiguration 344

7 ASP.NET SignaIR 345Long-Polling 345Web-Sockets

346Überblick über ASP.NET SignaIR 347PersistentConnection

348Erste Schritte mit SignaIR und PersistentConnection 348

Lifecycle-Methoden 349URL-Mapping für persistente Verbindungen 349Einfacher Client für eine persistente Verbindung 350Einfacher JavaScript-Client für eine persistente Verbindung 351

Hubs353

Methoden und Callbacks mit SignaIR und Hubs 353

URL-Mapping für Hubs 355Lifecycle-Methoden

355Hubs konsumieren

355Hubs über JavaScript konsumieren 357

Gruppen 361Pipeline-Module für Querschnittsfunktionen 362SignaIR konfigurieren 364Cross Origin Resource Sharing (CORS) 364SignaIR skalieren

364

Überlegungen zum Skalieren von SignaIR 365SignaIR mit SQL Server skalieren 366

Implementierung eines SignalR-Clients 368Das Skalierungsszenario testen 369Azure Service Bus und Redis als Alternative zu SQL Server 370

Inhalt | XI

Page 9: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

8 ASP.NET-Programmierschnittstellen 371Direkt mit HTTP interagieren 371HttpContext

371Server (HttpServerUtility) 373Request (HttpRequest) 374Response (HttpResponse) 376

Zustandsverwaltung auf Sitzungsebene 377Überblick

378Weitere Optionen 379Programmieren mit dem Sitzungszustand 380URL-basierte Sitzungsverwaltung ohne Cookies 380Konfiguration des Sitzungszustands 381Speicherort der Sitzungstabelle wählen 382

Komprimierung des Sitzungszustands 383Deaktivieren des Sitzungszustands 383

Caching383

Überblick384

Pro und Contra der Zwischenspeicherung 384Zwischenspeicherung ganzer Seiten (Output-Caching) 385

Caching von Seitenteilen (Fragmentzwischenspeicherung) 387Programmatisches Caching 388

Cacheinvalidierung 389

Teil C Webserverprogrammierung mit ASP.NET Core 393

9 Einführung in ASP.NET Core 395Klassisches ASP.NET oder ASP.NET Core? 395

Einführung in die Core-Welt 396.NET Standard

397Windows Compatibility Pack für .NET Core 402Open Source

405Dokumentation

405Werkzeuge 408

Kommandozeilenwerkzeug dotnet 408Editoren

410Erste Schritte mit ASP.NET Core (auf .NET Core) 410

Installation410

Projekt anlegen 411Projektaufbau 414Die Klasse Program 415Klasse Startup und Middleware 418

XII | Inhalt

Page 10: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

Referenzen/Pakete420

Übersetzen und Debugging 423Deployment 426

ASP.NET Core auf dem klassischen .NET Framework 429Einsatzszenarien

429

Anlegen von ASP.NET-Core-Projekten mit demklassischen .NET Framework 430

Projektaufbau 430Referenzen/Pakete

432

Deployment 433In ASP.NET Core integrierte Webserver: Kestrelversus HTTP.sys (WebListener) 435Kestrel

435

HTTP.sys 436

10 ASP.NET Core MVC und Razor Pages 439POCO-Controller

440Controller und View

441Tag Helper 442Wie funktionieren Tag Helper? 442Eingebaute Tag Helper 443Eigene Tag Helper 444Beispiel: Tag <autor>

445Beispiel: Tag <row>

446Beispiel: Tag <condition>

448Beispiel: Tag <repeater> 448

View Components 450Razor Pages 452Von Webforms über MVC zu Razor Pages 453Razor Pages versus MVC 454

Page Model als Code-Behind 455URL-Parameter

456

Eingebaute Objekte 458Datenbindung 459

Praxisbeispiel zu Razor Pages 460Drittanbieterkomponenten für ASP.NET Core 468

11 ASP.NET-Core-Klassenbibliotheken 469Dependency Injection in ASP.NET Core 470Implementierung eines Diensts 471

Registrierung von Diensten 472Injektion in einen Konstruktor 473Manuelle Beschaffung 473Injektion in eine View

474Vordefinierte Dienste der ASP.NET-Core-Infrastruktur 474

Inhalt | XIII

Page 11: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

Konfiguration in ASP.NET Core475

Sitzungen in ASP.NET Core477Cookies480

URL-Rewriting in ASP.NET Core480

Benutzerverwaltung und Authentifizierung 483

12 ASP.NET Core Web APIs487

Die Grundlagen von ASP.NET Core Web API 487Abfragen von Daten

487Arbeiten mit Statuscodes

490Anlegen, Aktualisieren und Löschen von Daten 491Nutzung von Sub-Routen für Teil-Ressourcen

494Nutzung weiterer Model-Binding-Funktionen 495Anbieten unterschiedlicher Repräsentationen von Ressourcen.

. . 497Nutzung des PATCH-Verbs mit JSON-Patch 497Cross Origin Resource Sharing 499Bereitstellung von OpenAPI-Beschreibungen über Swagger 501Starten von Hintergrundprozessen über IHostedService 504Integrationstests mithilfe des TestHosts

505Service-Kommunikation mit HttpClient 506Abfragen von Daten

506Versenden von Daten und Reaktion auf Statuscodes 508Arbeiten mit Headern und HttpRequestMessage 509Generieren von Clients für Swagger-Spezifikationen 509

Ausblick auf Neuerungen durch ASP.NET Core 2.1 510Annotation [ApiController]

510ActionResult<T>-Rückgabewerte

511Optimierte Input-Verarbeitung 511

13 Microservices mit ASP.NET Core Web API und RabbitMQ 515Grundlagen von Microservices

515Mögliche Vorteile von Microservices

517Mögliche Nachteile von Microservices

518Modellierung von Microservices

519Integration und Kommunikation von Microservices 520Synchrone und asynchrone Kommunikation 520Messaging-basierte versus Request-Response-Kommunikation

. . 521Gesteuerte (orchestriert) versus Event-getriebeneKommunikation (choreografiert) 522

.NET-Core-Technologien zur Umsetzung von

Service-Kommunikation523

Asynchrone Service-Kommunikation über RabbitMQ 523Microservices-Fallstudie

530Umgebung und fachlicher Kontext

531Der HumanResourcesService

532

XIV | Inhalt

Page 12: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

Der ProjectsService 534Der ManagementDashboardService 543Der InvoicingService 545Fazit

550Nützliche Patterns und Best-Practices im Bereich Microservices

. . . 550Resilienz-Patterns

551

Serviceübergreifender Code und serviceübergreifende Funktionen 558

14 ASP.NET CoreSignaIR 561Hub-Klassen

561Hub-Client mit .NET Core 2.1 563Hub-Client mit Angular 564

Serverseitig initiierte Benachrichtigungen und Gruppen 569

Teil D Web-Client-Programmierung 575

15 JavaScript-Grundlagen 577Grundlagen der Sprache 577Sprachmerkmale und Entwurfsmuster 578Vergleich mit Programmiersprachen 578

JavaScript-Syntax 578Typen 582Objekte

593Symbole 594Arrays 594Operatoren

596Anweisungen - Statements

598Fehlerbehandlung 604Variablen und Scope 606

Objektorientierung 607Erstellen von Objekten 607Klassen

609Statische Mitglieder 615

Vererbung 615Exkurs Objekthierarchie 619Ableiten von internen Typen 625Tipps zum Umgang mit objektorientierten Techniken 625

Globale Standardfunktionen626

Timer-Funktionen626

Prüffunktionen627

Konvertierungsfunktionen 627Module

628Entwurfsmuster

628Module

635

Inhalt | XV

Page 13: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

Funktionen635Pfeilfunktionen (Lambdas)635Erweiterte Objektliterale638Destrukturierung638Umgang mit Argumenten639Generatoren und Iteratoren640Asynchrone Programmierung643Klassische asynchrone Programmierung 643Promise650Set und Map654Set654Map656

Schlüsselvergleiche656Iteratoren657WeakMap und WeakSet658Reguläre Ausdrücke658Einführung658Kopieren oder Konstruieren?659Und wie funktioniert das?659Gruppierungen668Vorwärtsreferenzen669Die JavaScript-Funktionen670

Zusammenfassung674Reflektions-API676Einfache Methoden676Reflect676Erzeugerfunktionen677Operatoren für Schlüsselwörter677

Dynamische Argumentlisten678Funktionsaufrufe678Proxy-Fallen678

Zusammenfassung der Reflect-Methoden679Stellvertreter: Proxies680Einführung680Proxy-Fallen anwenden681

Schemaprüfung mit Proxies683Entfernbare Proxies684Übersicht685

16 TypeScript687Geschichte von TypeScript687

Open-Source-Projekt688

TypeScript-Compiler688Übersetzung von TypeScript in JavaScript 689TypeScript Playground690

XVI | Inhalt

Page 14: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

TypeScript in Visual Studio 691

TypeScript-Kommandozeilencompiler tsc 694TypeScript in Visual Studio Code 695TypeScript in Gulp 696Datentypen 698Arrays und Tupel 700Klassen

701Generische Klassen 703Strukturelle Typäquivalenz (Duck Typing) 704Funktionen und Lambda-Ausdrücke 704Dekoratoren

706Module und Verweise 707TypeScript ohne externes Modulsystem (interne Module) 707Externe Module 708Re-Export 710

Deklarationsdateien710

Einbindung von Deklarationsdateien (altes Verfahren) 711

Import von Deklarationsdateien 711Deklarationsdateien und tsconfig.js 711

Mixins712

Mixin-Konstruktortypen 714Deklaratives Mischen

715Module mischen

716Nicht mögliche Vermischungen 719

Reflektion: Metadaten per Programmcode 719Die Metadaten-API für Reflektion 720Ermitteln von Typinformationen 720Ermitteln von Parameterinformationen 721Ermitteln von Rückgabeinformationen 721

Asynchrone Programmierung 721Generatoren und Iteratoren 722

Iteratoren722

Generatoren723

Asynchrone Iteration 723Asynchrone Generatoren

724

17 Angular 725Ziele und Architektur von Angular 725Browserunterstützung 726

Veröffentlichungszyklus von Angular 727Dokumentation

728Beispielsammlung 729Komponenten

731

Datenbindung und Pipes 734Syntaxübersichten

736

Inhalt | XVII

Page 15: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

Strukturelle Direktiven736

Datenbindungssyntax737

Angular-Pipes737

Module738

Formulare739

Routing742

Dienste und Dependency Injection 744Animationen

745Werkzeuge

745JiTvs. AOT

746Angular Universal

748

18 ASP.NET Blazor749

Silverlight wurde eingestellt749

WebAssembly749

Architektur von Blazor750

Erste Schritte mit ASP.NET Blazor751

Beispielprojekt752

Weitere Möglichkeiten755

Ausblick755

Teil E Hosting von ASP.NET und ASP.NET Core 757

19 Internet Information Services (IIS) 759Versionsgeschichte

759Kernfunktionen des IIS

760Installation des IIS

761Modularisierung

763Skriptbasierte Installation

764Integration zwischen ASP.NET und IIS 765Test der Installation

765IIS Express

766IIS-Administration

767IIS-Manager

768Administration per Kommandozeile und Skript 769

IIS-Websites (virtuelle Webserver) 769Websites erstellen

770Websites erstellen per Skript 771Wichtige Einstellungen für Websites

773Beschränken der möglichen Clients

773Authentifizierung

774Transport Layer Security (TLS)/Secure Socket Layer (SSL) 775

XVIII | Inhalt

Page 16: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

Server für Nicht-HTTP-Protokolle 777Virtuelle Verzeichnisse im IIS 777

IIS-Anwendungen 779

Rahmenbedingungen einer IIS-Anwendung 779

Anlegen einer IIS-Anwendung 780

IIS-Anwendungspools 781Eigenschaften eines Anwendungspools 781Liste der Anwendungspools 782Zuordnung von Websites und IIS-Anwendungenzu Anwendungspools 782ASP.NET-Version

783Erweiterte Einstellungen für Anwendungspools 784Anwendungspoolidentität 785

Wiederverwendung (Recycling) 785

Leistungseinstellungen 786

Zustandsüberwachung 787Besonderheiten für ASP.NET-Anwendungen 787

IIS-Autostart787

IlS-Verarbeitungspipeline 790

20 Microsoft Azure793

Azure-Konzepte 793

Anlegen einer Subscription 794Anlegen einer Ressource Group 794

Anlegen eines App Service Plans 795Anlegen eines Azure App Service 796

Anlegen eines Azure App Service mit der PowerShell 799

21 Verteilen von Webanwendungen aus Visual Studio heraus 801Web Deploy-Werkzeug 801Web Deploy in einen IlS-Webserver 802Web Deploy nach Azure

804Konfigurationstransformationen

805Erstellen der Transformationsdateien 805Syntax der Transformationsdateien 805

Ergebnis der Transformation 807Continuous Integration und Continuous Delivery 807

22 Webanwendungen in Docker809

Docker auf Windows809

Installation der Docker-Unterstützung von Microsoft 811Installation von Docker for Windows 813Ein Image beschaffen

814Einen Container starten

815Ein Visual-Studio-Container-Projekt erstellen 816

Inhalt | XIX

Page 17: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

Debugging eines Containers 817

Verwendung des Containers 817

Images aus Containern erstellen 821.NET Core-Container 821

Container in Windows Server 2016 hosten 824

Images verbreiten 825

Teil F Fallbeispiel: MiracleList 829

23 Das Fallbeispiel »MiracleList« 831

Das Szenario 831Links 834

24 DasMiracleList-Backend 835

Architektur 837

Entitätsklassen 840

Entity Framework Core-Kontextklasse 842

Lebensdauer der Kontextklasse in ASP.NET Core-Anwendungen. . 843

Geschäftslogik 844

Web API 853

25 MiracleList-Web-Client 865

Technikeinsatz im Web-Client 865

Angular-CLl 866Webserver starten 868

Zusatzkomponenten 869

Proxy für REST-Dienste 870

Daten darstellen 871

Navigation zu den Aufgaben 873

Datumsanzeigen 876Zeilenumbrüche 878

Aufgabenstatus ändern 878

Aufgaben anlegen 881

Suchfunktion 882

Komponentenbildung 883

Schritt 1: Routing-Modul 885Schritt 2: Kommunikationsdienst 885

Schritt 3: Teilaufgabenliste in SubTaskList-Komponente 886Schritt 4: Auslagerung in TaskView 888

Schritt 5: Aufgaben bearbeiten 890Schritt 6: Integration in AppComponent 891

XX | Inhalt

Page 18: 3., aktualisierte Auflage Moderne Webanwendungen fürTeil B WebserverprogrammierungmitASP.NET 229 5 ASP.NETMVC 231 GeschichteundVerbreitung vonASP.NET 231 Architektur vonASP.NETMVC

Datepicker 892Kontextmenü verwenden 893Nachfragen beim Löschen 896Animationen 897Sortieren der Aufgabenliste 898

Benutzeranmeldung 899Hauptmenü 901Testen

902Auslieferung 905

26 MiracleList-Electron-Client907

Hybride Apps 908Architektur von Electron 908

Electron-Projekt anlegen 909Kommunikation zwischen Main und Renderer 918

Erweiterungen in der Webanwendung 918Start der Electron-Anwendung 921

Debugging 922Deployment 923

27 MiracleList-Cordova-Client925

Architektur von Cordova926

Cordova-Projekt anlegen 927Cordova-Anwendung starten 929

Erweiterungen in der Webanwendung 930Cordova-APIs verwenden 931Plug-ins verwenden 932

Responsive Web Design mit Bootstrap 935

Index937

Inhalt | XXI