E-Book, Deutsch, 982 Seiten
Reihe: Animals
Server-Anwendungen, Web APIs, SPAs & HTML-Cross-Platform-Anwendungen mit ASP.NET, ASP.NET Core, JavaScript, TypeScript & Angular
E-Book, Deutsch, 982 Seiten
Reihe: Animals
ISBN: 978-3-96010-258-8
Verlag: O'Reilly
Format: PDF
Kopierschutz: 1 - PDF Watermark
Web-Basiswissen: HTML und CSS, das Framework Bootstrap, das von CSS abstrahiert und von Microsoft in den Projektvorlagen für ASP.NET und ASP.NET Core eingesetzt wird.
Webserverprogrammierung mit ASP.NET: das klassische Framework ASP.NET Model-View-Controller (MVC) und das klassische Web API ASP.NET sowie ASP.NET SignalR, die auf dem .NET Framework 4.x und nur auf Windows-Systemen laufen.
Webserverprogrammierung mit ASP.NET Core: das neue ASP.NET Core inklusive WebAPI und SignalR Core, das auf dem Windows-basierten .NET "Full" Framework 4.x oder dem plattformneutralen .NET Core läuft. Inklusive einer Fallstudie zu Microservices mit ASP.NET Core Web API und RabbitMQ.
Web-Client-Programmierung: Einführungen in die Programmiersprachen JavaScript und TypeScript und die Single-Page-Web-Frameworks Angular und React sowie ASP.NET Blazor, das auf C# aufbauende SPA-Framework.
Hosting von ASP.NET und ASP.NET Core: Self-Hosting sowie Hosting in den Internet Information Services (IIS), in Docker-Containern und über den Microsoft-Cloud-Dienst Azure.
Das Fallbeispiel MiracleList: komplettes Fallbeispiel einer modernen Webanwendung, bestehend aus einem Backend (C# mit ASP.NET Core), einem Web-Frontend (TypeScript mit Angular) sowie Cross-Platform-Apps für Linux, macOS, Windows, Android und iOS (mithilfe von Electron und Cordova aus dem Web-Frontend erzeugt).
Bonuskapitel: Sie erhalten zusätzlich drei Kapitel zu React, Open Web Interface for .NET (OWIN) / Katana und ASP.NET Sicherheit als kostenloses PDF zum Herunterladen.
Autoren/Hrsg.
Weitere Infos & Material
1;Moderne Webanwendungen für.NET-Entwickler;3
2;Impressum;4
3;Inhalt;5
4;Vorwort zur 3. Auflage;23
4.1;Warum dieses Buch?;23
4.2;Was ist der Inhalt dieses Buchs?;24
4.3;Welche Voraussetzungen sollten Sie für dieses Buch mitbringen?;25
4.4;Was ist das Ziel des Buchs?;25
4.5;Welche Versionen werden in diesem Buch behandelt?;26
4.6;Welche Programmiersprache wird in diesem Buch verwendet?;27
4.7;Welche Werkzeuge werden in diesem Buch verwendet?;27
4.8;Welche Sprachversion wird in diesem Buch verwendet?;27
4.9;Woher bekommen Sie die Code-Beispiele und die drei Bonuskapitel zu diesem Buch?;28
4.10;Wem ist zu danken?;30
4.11;Die Autoren;30
4.11.1;Über www.IT-Visions.de;30
4.11.2;Dr. Holger Schwichtenberg;31
4.11.3;Jörg Krause;32
4.11.4;Dr. Joachim Fuchs;33
4.11.5;Sebastian Kleinschmager;33
4.11.6;Manfred Steyer;33
5;Teil A - Web-Basiswissen;35
5.1;Kapitel 1 - Protokolle, Standards und Konzepte;37
5.1.1;Standardisierung;37
5.1.1.1;RFCs;37
5.1.1.2;World Wide Web Consortium (W3C);38
5.1.1.3;European Computer Manufacturers Association (ECMA);38
5.1.2;Hypertext Transfer Protocol (HTTP);38
5.1.2.1;Protokollaufbau, Header, Body;39
5.1.2.2;Kommandoaufbau;40
5.1.2.2.1;Methode oder Verb?;40
5.1.2.3;Die HTTP-Statuscodes;41
5.1.2.4;Ablauf einer HTTP-Kommunikation;41
5.1.2.5;Kopffelder;42
5.1.3;HTTP 2.0;43
5.1.4;Ergänzende Standards zu HTTP;44
5.1.4.1;Web-Sockets;44
5.1.4.2;WebDAV;45
5.1.5;Simple Mail Transfer Protocol (SMTP) oder Extended SMTP (ESMTP);45
5.1.6;File Transfer Protocol (FTP);45
5.1.7;REpresentational State Transfer (REST);46
5.1.7.1;Webdienste;46
5.1.7.2;Merkmale;46
5.1.7.2.1;Adressierbarkeit;46
5.1.7.2.2;Repräsentationsvariabilität;46
5.1.7.2.3;Zustandslosigkeit;47
5.1.7.2.4;Skalierbarkeit;47
5.1.7.2.5;Allgemeingültigkeit;47
5.1.7.2.6;Erweiterbarkeit;47
5.1.7.3;REST-Beispiel;47
5.1.7.4;URI;48
5.1.7.5;HTTP-Methoden für REST;49
5.1.7.6;Multipurpose Internet Mail Extensions (MIME);50
5.1.7.7;JavaScript Object Notation (JSON);51
5.1.7.7.1;Die JSON-Formatdefinition;51
5.1.7.8;Atom Syndication Format (ATOM);52
5.1.7.9;Grenzen von REST: GraphQL und OData;53
5.1.8;Single Page Application (SPA);53
5.1.9;Asynchronous JavaScript and XML (AJAX);54
5.1.10;Responsive Web Design (RWD);55
5.2;Kapitel 2 - Hypertext Markup Language (HTML);57
5.2.1;Grundlagen HTML;57
5.2.1.1;Geschichte;57
5.2.1.2;XML – Grundlage für HTML;58
5.2.1.3;Markup;59
5.2.1.4;XML-Dokumente;59
5.2.1.4.1;Wohlgeformtheit;59
5.2.1.4.2;Validierung;60
5.2.1.5;Verarbeitung;60
5.2.1.6;Der Begriff »Markup«;60
5.2.1.6.1;Leere Elemente;61
5.2.1.6.2;Gültigkeit;62
5.2.1.6.3;Richtigkeit;62
5.2.1.6.4;Spezialfälle;63
5.2.2;Seitenaufbau;63
5.2.2.1;Document Object Model (DOM);64
5.2.2.2;Der Dokumenttyp (Doctype);64
5.2.2.3;Codierungen;64
5.2.2.4;HTML5-Seitenstruktur;65
5.2.3;Elemente der Seite;68
5.2.3.1;Textelemente;68
5.2.3.1.1;h1 … h6;69
5.2.3.1.2;p;69
5.2.3.1.3;pre;69
5.2.3.1.4;blockquote;69
5.2.3.1.5;figure und figcaption;69
5.2.3.1.6;hr;70
5.2.3.1.7;ol und li;70
5.2.3.1.8;ul und li;70
5.2.3.1.9;dl, dt, dd;70
5.2.3.1.10;div;70
5.2.3.2;Fließtextauszeichnung;70
5.2.3.3;Verweise;71
5.2.3.4;Tabellen;71
5.2.3.5;Multimedia und Grafiken;72
5.2.3.6;Formulare;72
5.2.3.7;Skripte;73
5.2.3.8;Interaktive Elemente;73
5.2.4;Allgemeine und universelle Attribute;73
5.2.4.1;id;74
5.2.4.2;class;74
5.2.4.3;accesskey;75
5.2.4.4;contenteditable;75
5.2.4.5;contextmenu;76
5.2.4.6;dir;76
5.2.4.7;draggable;76
5.2.4.8;dropzone;77
5.2.4.9;hidden;77
5.2.4.10;lang;77
5.2.4.11;spellcheck;77
5.2.4.12;style;78
5.2.4.13;tabindex;78
5.2.4.14;title;78
5.3;Kapitel 3 - Cascading Style Sheets (CSS);79
5.3.1;Grundlagen;79
5.3.2;Syntax;80
5.3.3;Selektor;81
5.3.3.1;Elemente (Tags);81
5.3.3.2;ID;81
5.3.3.3;Klassen;81
5.3.3.4;Attribute;82
5.3.3.5;Logische Auswahl;82
5.3.3.6;Weitere Selektoren;82
5.3.3.6.1;Pseudo-Selektoren;84
5.3.4;Das Box-Modell;85
5.3.4.1;Bausteine der Box;86
5.3.4.2;Zählweise;87
5.3.4.3;Ausnahmen;87
5.3.4.4;Das Box-Modell in CSS3;87
5.3.5;Das Flexbox-Modell;87
5.3.5.1;Prinzipien;87
5.3.5.2;Eigenschaft der Container;89
5.3.6;Beachtung von Medien;90
5.3.6.1;Syntax;90
5.3.6.1.1;Umgang mit Einheiten;92
5.3.6.2;Parameter;93
5.3.7;Der Viewport;97
5.3.7.1;Viewport einstellen;97
5.3.7.2;Parameter für den Viewport;99
5.3.8;Einheiten;99
5.3.8.1;Absolute Einheiten;100
5.3.8.1.1;Typografische Angaben;100
5.3.8.1.2;Empfehlung;101
5.3.8.2;Relative Einheiten;101
5.4;Kapitel 4 - Bootstrap;103
5.4.1;Einführung in Bootstrap;103
5.4.1.1;Neuerungen in Bootstrap 4;103
5.4.1.1.1;Globale Änderungen;103
5.4.1.1.2;Rastersystem;104
5.4.1.1.3;Tabellen;104
5.4.1.1.4;Formulare;104
5.4.1.1.5;Schaltflächen;104
5.4.1.1.6;Klappmenüs;104
5.4.1.1.7;Panels;104
5.4.1.1.8;Sonstiges;104
5.4.1.2;Installation;104
5.4.1.2.1;CDN;105
5.4.1.2.2;Bootstrap 4;105
5.4.1.2.3;Repository für lokale Installation;105
5.4.1.3;Struktur der CSS-Dateien;106
5.4.1.3.1;Minimizer;107
5.4.1.4;Seitenaufbau;107
5.4.1.5;Browserunterstützung;108
5.4.1.6;ARIA;109
5.4.1.6.1;HTML5 – Das role-Attribut;109
5.4.1.7;Optimierung;110
5.4.1.7.1;Interaktive Oberflächen;111
5.4.1.8;Hilfsklassen;112
5.4.1.8.1;Rahmen;112
5.4.1.9;Reboot;112
5.4.1.9.1;Schriftarten;112
5.4.2;Struktur der Seite;113
5.4.2.1;Einführung;113
5.4.2.1.1;Der HTML5-Doctype;113
5.4.2.1.2;Einstellungen des Ansichtsbereichs;113
5.4.2.1.3;Zoom abschalten;113
5.4.2.2;Das Rastersystem;114
5.4.2.2.1;Container;114
5.4.2.2.2;Das Raster im Detail;114
5.4.2.2.3;Gerätespezifische Definitionen;115
5.4.2.2.4;Änderung zu Bootstrap 3;116
5.4.2.2.5;Auto-Layout;120
5.4.2.3;Das Flex-Raster;123
5.4.2.3.1;Vorbereitung;124
5.4.2.3.2;Gleichverteilte Spalten;124
5.4.2.3.3;Horizontale Verteilungsoptionen;125
5.4.2.3.4;Vertikale Verteilungsoptionen;126
5.4.2.3.5;Sortieroptionen;127
5.4.3;Typografie;128
5.4.3.1;Überschriften;129
5.4.3.2;Text und Textelemente;130
5.4.3.2.1;Basisschrift;130
5.4.3.2.2;Textelemente;130
5.4.3.2.3;Elemente für Textblöcke;131
5.4.3.2.4;Ausrichtung;133
5.4.3.2.5;Blocksatz;134
5.4.3.2.6;Transformationen;134
5.4.3.3;Listen;135
5.4.3.4;Tabellen;137
5.4.3.4.1;Stile für Tabellen;137
5.4.3.4.2;Spalten;138
5.4.3.4.3;Lesbarkeit für Screenreader;140
5.4.3.4.4;Responsive Tabellen;142
5.4.3.5;Hilfsklassen;146
5.4.3.5.1;Abstände kontrollieren;146
5.4.3.5.2;Anzeigestatus erzwingen;147
5.4.4;Formulare;148
5.4.4.1;Struktur eines Formulars;148
5.4.4.1.1;Einfache Formularelemente;148
5.4.4.1.2;Eingabegruppen;149
5.4.4.1.3;Einzeilige Formulare;149
5.4.4.1.4;Label benutzen;150
5.4.4.1.5;Formularelemente mit Bausteinen;151
5.4.4.1.6;Größen;152
5.4.4.1.7;Umgang mit Kontrollkästchen und Optionsfeldern;153
5.4.4.1.8;Ergänzende Schaltflächen;154
5.4.4.1.9;Horizontale Formulare;157
5.4.4.2;Eingabeelemente;158
5.4.4.2.1;Input-Elemente;159
5.4.4.2.2;Select-Element;161
5.4.4.2.3;Statische Texte im Formular;162
5.4.4.2.4;Verhalten der Formularelemente;163
5.4.4.2.5;Validierungsinformationen in Formularen;164
5.4.4.2.6;Barrierefreiheit;165
5.4.4.2.7;Formularelemente im Raster;170
5.4.4.2.8;Anpassung der Feldhöhe;171
5.4.4.2.9;Hilfetexte in Formularen;172
5.4.4.3;Schaltflächen;173
5.4.4.3.1;Semantische Schaltflächen;174
5.4.4.3.2;Größe und Aussehen;174
5.4.4.3.3;Zustände;177
5.4.5;Weitere Bausteine;178
5.4.5.1;Symbole;178
5.4.5.1.1;Warum Symbolfonts?;178
5.4.5.1.2;Alternativen;178
5.4.5.1.3;Nutzung der Symbole;179
5.4.5.1.4;Nutzung auf Schaltflächen;180
5.4.5.1.5;Meldungen;181
5.4.5.1.6;Häufige Symbole;181
5.4.5.2;Responsive Bilder;182
5.4.5.2.1;SVG und IE 8 bis 10;182
5.4.5.3;Eingebettete Quellen;183
5.4.5.4;Farben und Hintergründe;183
5.4.5.4.1;Textfarbe;183
5.4.5.4.2;Hintergrundfarbe;184
5.4.5.5;Ausrichtung von Elementen im Fluss;185
5.4.5.5.1;Zentrieren;185
5.4.5.5.2;Umbruch: Clearfix;185
5.4.5.6;Inhalte anzeigen und verstecken;186
5.4.6;Komponenten;186
5.4.6.1;Klappmenüs (dropdown);187
5.4.6.1.1;Ausrichtung des Menüs;188
5.4.6.1.2;Dekorationselemente;188
5.4.6.2;Werkzeugleisten (toolbar);190
5.4.6.2.1;Vertikale Ausrichtung;192
5.4.6.2.2;Allgemeine Optionen;192
5.4.6.3;Schaltfläche mit Menü (button group);193
5.4.6.3.1;Einfache Schaltfläche mit Menü;193
5.4.6.3.2;Geteilte Schaltfläche mit Menü;194
5.4.6.3.3;Größen von Menüschaltflächen;194
5.4.6.3.4;Spezielle Menüvarianten;195
5.4.6.4;Navigation (nav, navbar);196
5.4.6.4.1;Tabulatoren (tabs);196
5.4.6.4.2;Navigationsschaltflächen (pills);197
5.4.6.4.3;Universelle Einstellungen;198
5.4.6.4.4;Navigationsleiste (navbar);200
5.4.6.4.5;Standardnavigationsleiste;204
5.4.6.5;Pfadnavigation (breadcrumb);204
5.4.6.6;Seitenweises Blättern (pagination);205
5.4.6.6.1;Seitenanzeige;205
5.4.6.6.2;Unbestimmte Seitenzahl;206
5.4.6.6.3;Größe;207
5.4.6.7;Kennzeichnungen (tag);207
5.4.6.7.1;Kennzeichnungsplaketten (tag-pills);208
5.4.6.7.2;Neu in Bootstrap 4;208
5.4.6.8;Großbildleinwand (jumbotron);209
5.4.6.9;Seitenüberschriften (page header);210
5.4.6.10;Meldungen (alert);211
5.4.6.11;Fortschrittsbalken (progress);212
5.4.6.12;Medien (media);216
5.4.6.12.1;Ausrichtung;216
5.4.6.12.2;Medienlisten;216
5.4.6.13;Allgemeine Listen (list group);217
5.4.6.13.1;Plaketten in Listen;217
5.4.6.13.2;Links in Listen;218
5.4.6.13.3;Schaltflächen in Listen;218
5.4.6.14;Karten (cards);221
5.4.6.14.1;Panels in Bootstrap 4;221
5.4.6.14.2;Überschriften;221
5.4.6.14.3;Fußzeilen;222
5.4.6.14.4;Karten mit Tabellen;223
5.4.6.14.5;Karten mit Listen;224
5.4.6.14.6;Karten mit Bildern;224
5.4.6.14.7;Karten im Raster;225
5.4.6.14.8;Kartenstapel (card decks);226
5.4.6.14.9;Kartengruppen (card groups);227
5.4.6.14.10;Karten in Spalten (card columns);228
5.4.6.14.11;Semantische Farben;230
5.4.7;Aktive Komponenten;231
5.4.7.1;Einrichtung und Aktivierung;231
5.4.7.1.1;jQuery UI?;232
5.4.7.2;Die Programmierschnittstelle;232
5.4.7.2.1;Konfliktvermeidung;232
5.4.7.2.2;Ereignisse;233
5.4.7.3;Übergänge (transition);233
5.4.7.3.1;Animationen;233
5.4.7.4;Modale Dialoge (modals);234
5.4.7.4.1;Eigenschaften;234
5.4.7.4.2;Größen;235
5.4.7.4.3;Dialog im Raster;236
5.4.7.4.4;Allgemeines zum Verhalten;240
5.4.7.4.5;Optionen;240
5.4.7.4.6;Benutzung;241
5.4.7.5;Klappmenü (dropdown);242
5.4.7.5.1;Allgemeines zum Verhalten;242
5.4.7.5.2;Optionen;242
5.4.7.6;Scrollbar-Überwachung (scrollspy);243
5.4.7.6.1;Affix;243
5.4.7.6.2;Benutzung;244
5.4.7.6.3;Optionen;244
5.4.7.7;Angeheftete Navigation (affix);245
5.4.7.8;Umschaltbare Tabulatoren (tab);245
5.4.7.8.1;Benutzung;245
5.4.7.8.2;Optionen;247
5.4.7.9;Tooltips (tooltip);247
5.4.7.9.1;Mehrzeilige Links;248
5.4.7.9.2;Allgemeine Tipps;248
5.4.7.9.3;Optionen;249
5.4.7.10;Inhaltsüberlagerung (popover);250
5.4.7.10.1;Anwendung;250
5.4.7.10.2;Optionen;252
5.4.7.11;Meldungen (alert);253
5.4.7.11.1;Optionen;254
5.4.7.12;Interaktive Schaltflächen (button);254
5.4.7.12.1;Umschalter;254
5.4.7.12.2;Optionen;255
5.4.7.13;Inhaltseinblendung (collapse);255
5.4.7.13.1;Anwendung;255
5.4.7.13.2;Inhaltsgruppen (accordion);256
5.4.7.13.3;Optionen;258
5.4.7.14;Bilderkreisel (carousel);259
5.4.7.14.1;Anwendung;259
5.4.7.14.2;Optionen;260
6;Teil B - Webserverprogrammierung mit ASP.NET;263
6.1;Kapitel 5 - ASP.NET MVC;265
6.1.1;Geschichte und Verbreitung von ASP.NET;265
6.1.2; Architektur von ASP.NET MVC;266
6.1.3;Erste Schritte mit ASP.NET MVC;267
6.1.3.1;ASP.NET-MVC-Projekt anlegen;267
6.1.3.2;Projektaufbau;269
6.1.3.3;Nuget-Pakete;270
6.1.3.3.1;Modell anlegen;271
6.1.3.4;Controller anlegen;272
6.1.3.5;View anlegen;274
6.1.3.6;Webanwendung testen;279
6.1.3.7;Einträge editieren;280
6.1.3.8;Vorschlagswerte über Drop-down-Listenfelder anbieten;285
6.1.4;Controller;288
6.1.4.1;Models entgegennehmen;288
6.1.4.2;View auswählen;290
6.1.4.3;Auf Ausnahmen reagieren;291
6.1.4.4;URL-Mapping beeinflussen (Routing);291
6.1.4.5;Asynchrone Controller;294
6.1.4.6;Vereinfachte Implementierung asynchroner Controller seit .NET 4.5;295
6.1.5;Views;296
6.1.5.1;Razor;296
6.1.5.2;Razor-Helper;299
6.1.5.3;Layoutseiten;299
6.1.5.4;Partielle Views;301
6.1.5.5;Vorlagen für Felder und Models;303
6.1.5.6;Views für mobile Anwendungen;306
6.1.5.7;Zwischen unterschiedlichen Ansichten wechseln;307
6.1.5.8;Minification und Bundling;308
6.1.6;Models;309
6.1.6.1;Metadaten im Model festlegen;309
6.1.6.2;HTML-Text übermitteln;310
6.1.6.3;Validieren von Benutzereingaben;310
6.1.6.3.1;Manuelles Validieren;310
6.1.6.3.2;Deklaratives Validieren;311
6.1.7;Globalisierung;316
6.1.7.1;Sprach- und Ländereinstellungen festlegen;316
6.1.7.2;Über Ressourcedateien mehrsprachige Inhalte bereitstellen;318
6.1.7.3;Codierung festlegen;319
6.1.8;Areas;320
6.1.9;Filter;322
6.1.9.1;Überblick;323
6.1.9.2;Umsetzung;323
6.1.9.3;Filter auf Controller und Action-Methoden anwenden;325
6.1.9.4;Globale Filter;326
6.1.9.5;Authentifizierungsfilter;326
6.2;Kapitel 6 - ASP.NET Web API;329
6.2.1;Einen einfachen HTTP-Service erstellen;329
6.2.1.1;Parameter und Rückgabewerte;330
6.2.1.2;HTTP-Services konfigurieren;332
6.2.1.3;HTTP-Services mit Fiddler testen;334
6.2.2;Mehr Kontrolle über HTTP-Nachrichten;335
6.2.2.1;Antworten mit HttpResponseMessage beeinflussen;335
6.2.2.2;Anfragen als HttpRequestMessage darstellen;337
6.2.2.3;HttpRequestMessage und HttpResponseMessage am Beispiel Conditional Get;338
6.2.2.4;Antworten über IHttpActionResult zurückgeben;339
6.2.3;HTTP-Services über HttpClient konsumieren;340
6.2.4;Routing;343
6.2.4.1;Benutzerdefinierte Routen über die Konfiguration festlegen;343
6.2.4.2;Attributbasiertes Routing;344
6.2.5;Weiterführende Schritte mit der Web API;347
6.2.5.1;Dynamische Parameter;348
6.2.5.2;Tracing;349
6.2.5.3;Request Batching;350
6.2.5.4;Cross Origin Resource Sharing (CORS);352
6.2.5.5;Validieren;353
6.2.6;Querschnittsfunktionen implementieren;354
6.2.6.1;Message-Handler;354
6.2.6.1.1;Einen Handler umsetzen;354
6.2.6.1.2;Handler mit HttpClient verwenden;355
6.2.6.2;Filter;357
6.2.6.2.1;Überblick;357
6.2.6.2.2;Filter umsetzen;358
6.2.6.2.3;Filter als Attribute einsetzen;359
6.2.6.2.4;Filter über FilterProvider bereitstellen;360
6.2.6.2.5;Filter als globale Filter registrieren;361
6.2.6.2.6;Schnittstellen für Filter;361
6.2.6.2.7;Authentifizierungsfilter;361
6.2.7;Filterüberschreibungen;364
6.2.8;Benutzerdefinierte Formate unterstützen;364
6.2.8.1;Formatter implementieren;365
6.2.8.2;Formatter mit HttpClient verwenden;367
6.2.9;Serialisierung beeinflussen;368
6.2.9.1;JSON-Serializer konfigurieren;368
6.2.9.2;XML-Serializer konfigurieren;369
6.2.9.3;Eigenschaften von der Serialisierung ausschließen;369
6.2.9.4;Zirkuläre Referenzen serialisieren;370
6.2.9.5;Binary JSON (BSON);372
6.2.10;Web API und HTML-Formulare;372
6.2.10.1;Einfache Formularfelder übermitteln;372
6.2.10.2;Datei-Upload via HTML-Formular;373
6.2.11;Fortschritt ermitteln;375
6.2.12;Feingranulare Konfiguration;377
6.2.12.1;Controllerbasierte Konfiguration;377
6.2.12.2;Routenbasierte Konfiguration;378
6.3;Kapitel 7 - ASP.NET SignalR;379
6.3.1;Long-Polling;379
6.3.2;Web-Sockets;380
6.3.3;Überblick über ASP.NET SignalR;381
6.3.4;PersistentConnection;382
6.3.4.1;Erste Schritte mit SignalR und PersistentConnection;382
6.3.4.2;Lifecycle-Methoden;383
6.3.4.3;URL-Mapping für persistente Verbindungen;383
6.3.4.4;Einfacher Client für eine persistente Verbindung;384
6.3.4.5;Einfacher JavaScript-Client für eine persistente Verbindung;385
6.3.5;Hubs;387
6.3.5.1;Methoden und Callbacks mit SignalR und Hubs;387
6.3.5.2;URL-Mapping für Hubs;389
6.3.5.3;Lifecycle-Methoden;389
6.3.5.4;Hubs konsumieren;389
6.3.5.5;Hubs über JavaScript konsumieren;391
6.3.5.6;Gruppen;395
6.3.6;Pipeline-Module für Querschnittsfunktionen;396
6.3.7;SignalR konfigurieren;398
6.3.8;Cross Origin Resource Sharing (CORS);398
6.3.9;SignalR skalieren;398
6.3.9.1;Überlegungen zum Skalieren von SignalR;399
6.3.9.2;SignalR mit SQL Server skalieren;400
6.3.9.3;Implementierung eines SignalR-Clients;402
6.3.9.4;Das Skalierungsszenario testen;403
6.3.9.5;Azure Service Bus und Redis als Alternative zu SQL Server;404
6.4;Kapitel 8 - ASP.NET-Programmierschnittstellen;405
6.4.1;Direkt mit HTTP interagieren;405
6.4.1.1;HttpContext;405
6.4.1.2;Server (HttpServerUtility);407
6.4.1.3;Request (HttpRequest);408
6.4.1.4;Response (HttpResponse);410
6.4.2;Zustandsverwaltung auf Sitzungsebene;411
6.4.2.1;Überblick;412
6.4.2.2;Weitere Optionen;413
6.4.2.3;Programmieren mit dem Sitzungszustand;414
6.4.2.4;URL-basierte Sitzungsverwaltung ohne Cookies;414
6.4.2.5;Konfiguration des Sitzungszustands;415
6.4.2.6;Speicherort der Sitzungstabelle wählen;416
6.4.2.7;Komprimierung des Sitzungszustands;417
6.4.2.8;Deaktivieren des Sitzungszustands;417
6.4.3;Caching;417
6.4.3.1;Überblick;418
6.4.3.2;Pro und Contra der Zwischenspeicherung;418
6.4.3.3;Zwischenspeicherung ganzer Seiten (Output-Caching);419
6.4.3.3.1;Zwischenspeicherungsprofile (Caching Profiles);421
6.4.3.4;Caching von Seitenteilen (Fragmentzwischenspeicherung);421
6.4.3.5;Programmatisches Caching;422
6.4.3.6;Cacheinvalidierung;423
6.4.3.6.1;Cacheinvalidierung durch die Datenbank;424
6.4.3.6.2;Cache Invalidation bei Microsoft SQL Server 7.0 und 2000;424
6.4.3.6.3;Cacheinvalidierung bei Microsoft SQL Server ab Version 2005;425
7;Teil C - Webserverprogrammierung mit ASP.NET Core;427
7.1;Kapitel 9 - Einführung in ASP.NET Core;429
7.1.1;Klassisches ASP.NET oder ASP.NET Core?;429
7.1.2;Einführung in die Core-Welt;430
7.1.3;.NET Standard;431
7.1.4;Windows Compatibility Pack für .NET Core;436
7.1.5;Open Source;439
7.1.6;Dokumentation;439
7.1.7;Werkzeuge;442
7.1.7.1;Kommandozeilenwerkzeug dotnet;442
7.1.7.2;Editoren;444
7.1.8;Erste Schritte mit ASP.NET Core (auf .NET Core);444
7.1.8.1;Installation;444
7.1.8.2;Projekt anlegen;445
7.1.8.3;Projektaufbau;448
7.1.8.4;Die Klasse Program;449
7.1.8.5;Klasse Startup und Middleware;452
7.1.8.6;Referenzen/Pakete;454
7.1.8.7;Übersetzen und Debugging;457
7.1.8.8;Deployment;460
7.1.9;ASP.NET Core auf dem klassischen .NET Framework;463
7.1.9.1;Einsatzszenarien;463
7.1.9.2;Anlegen von ASP.NET-Core-Projekten mit dem klassischen .NET Framework;464
7.1.9.3;Projektaufbau;464
7.1.9.4;Referenzen/Pakete;466
7.1.9.5;Deployment;467
7.1.10;In ASP.NET Core integrierte Webserver: Kestrel versus HTTP.sys (WebListener);469
7.1.10.1;Kestrel;469
7.1.10.2;HTTP.sys;470
7.2;Kapitel 10 - ASP.NET Core MVC und Razor Pages;473
7.2.1;POCO-Controller;474
7.2.2;Controller und View;475
7.2.3;Tag Helper;476
7.2.3.1;Wie funktionieren Tag Helper?;476
7.2.3.2;Eingebaute Tag Helper;477
7.2.3.3;Eigene Tag Helper;478
7.2.3.4;Beispiel: Tag ;479
7.2.3.5;Beispiel: Tag ;480
7.2.3.6;Beispiel: Tag ;482
7.2.3.7;Beispiel: Tag ;482
7.2.4;View Components;484
7.2.5;Razor Pages;486
7.2.5.1;Von Webforms über MVC zu Razor Pages;487
7.2.5.2;Razor Pages versus MVC;488
7.2.5.3;Page Model als Code-Behind;489
7.2.5.4;URL-Parameter;490
7.2.5.5;Eingebaute Objekte;492
7.2.5.6;Datenbindung;493
7.2.5.7;Praxisbeispiel zu Razor Pages;494
7.2.6;Drittanbieterkomponenten für ASP.NET Core;502
7.3;Kapitel 11 - ASP.NET-Core-Klassenbibliotheken;503
7.3.1;Dependency Injection in ASP.NET Core;504
7.3.1.1;Implementierung eines Diensts;505
7.3.1.2;Registrierung von Diensten;506
7.3.1.3;Injektion in einen Konstruktor;507
7.3.1.4;Manuelle Beschaffung;507
7.3.1.5;Injektion in eine View;508
7.3.1.6;Vordefinierte Dienste der ASP.NET-Core-Infrastruktur;508
7.3.2;Konfiguration in ASP.NET Core;509
7.3.3;Sitzungen in ASP.NET Core;511
7.3.4;Cookies;514
7.3.5;URL-Rewriting in ASP.NET Core;514
7.3.6;Benutzerverwaltung und Authentifizierung;517
7.4;Kapitel 12 - ASP.NET Core Web APIs;521
7.4.1;Die Grundlagen von ASP.NET Core Web API;521
7.4.1.1;Abfragen von Daten;521
7.4.1.2;Arbeiten mit Statuscodes;524
7.4.1.3;Anlegen, Aktualisieren und Löschen von Daten;525
7.4.1.4;Nutzung von Sub-Routen für Teil-Ressourcen;528
7.4.1.5;Nutzung weiterer Model-Binding-Funktionen;529
7.4.1.6;Anbieten unterschiedlicher Repräsentationen von Ressourcen;531
7.4.1.7;Nutzung des PATCH-Verbs mit JSON-Patch;531
7.4.1.8;Cross Origin Resource Sharing;533
7.4.1.9;Bereitstellung von OpenAPI-Beschreibungen über Swagger;535
7.4.1.10;Starten von Hintergrundprozessen über IHostedService;538
7.4.1.11;Integrationstests mithilfe des TestHosts;539
7.4.2;Service-Kommunikation mit HttpClient;540
7.4.2.1;Abfragen von Daten;540
7.4.2.2;Versenden von Daten und Reaktion auf Statuscodes;542
7.4.2.3;Arbeiten mit Headern und HttpRequestMessage;543
7.4.2.4;Generieren von Clients für Swagger-Spezifikationen;543
7.4.3;Ausblick auf Neuerungen durch ASP.NET Core 2.1;544
7.4.3.1;Annotation [ApiController];544
7.4.3.2;ActionResult-Rückgabewerte;545
7.4.3.3;Optimierte Input-Verarbeitung;545
7.4.3.3.1;Unterstützung von Problemdetails für HTTP-APIs;546
7.4.3.3.2;JSON-Patch-Erweiterungen;547
7.5;Kapitel 13 - Microservices mit ASP.NET Core Web API und RabbitMQ;549
7.5.1;Grundlagen von Microservices;549
7.5.1.1;Mögliche Vorteile von Microservices;551
7.5.1.2;Mögliche Nachteile von Microservices;552
7.5.1.3;Modellierung von Microservices;553
7.5.2;Integration und Kommunikation von Microservices;554
7.5.2.1;Synchrone und asynchrone Kommunikation;554
7.5.2.2;Messaging-basierte versus Request-Response-Kommunikation;555
7.5.2.3;Gesteuerte (orchestriert) versus Event-getriebene Kommunikation (choreografiert);556
7.5.3;.NET-Core-Technologien zur Umsetzung von Service- Kommunikation;557
7.5.3.1;Asynchrone Service-Kommunikation über RabbitMQ;557
7.5.3.1.1;Das Producer-Consumer-Modell;557
7.5.3.1.2;Das Publish-Subscribe-Modell;562
7.5.4;Microservices-Fallstudie;564
7.5.4.1;Umgebung und fachlicher Kontext;565
7.5.4.2;Der HumanResourcesService;566
7.5.4.2.1;Abfragen von Mitarbeiterdaten;567
7.5.4.2.2;Einbinden des DbContexts;568
7.5.4.3;Der ProjectsService;568
7.5.4.3.1;Replikation der Kundendaten aus dem CRM;569
7.5.4.3.2;Erzeugen von neuen Projekten;570
7.5.4.3.3;Zuweisen eines Mitarbeiters zu einem Projekt;572
7.5.4.3.4;Eingabe eines täglichen Reports über geleistete Stunden;574
7.5.4.3.5;Abschluss eines Projekts;576
7.5.4.3.6;Übersichtsdiagramm des ProjectsService;577
7.5.4.4;Der ManagementDashboardService;577
7.5.4.4.1;Aktualisieren der aktuellen Umsatzprognose;578
7.5.4.4.2;Übersichtsdiagramm des ManagementDashboardService;579
7.5.4.5;Der InvoicingService;579
7.5.4.5.1;Verarbeitung einer Rechnung für ein abgeschlossenes Projekt;579
7.5.4.5.2;Übersichtsdiagramm des InvoicingService;583
7.5.4.6;Fazit;584
7.5.5;Nützliche Patterns und Best-Practices im Bereich Microservices;584
7.5.5.1;Resilienz-Patterns;585
7.5.5.1.1;Der Retry-Mechanismus;585
7.5.5.1.2;Timeouts und das Problem blockierter Threads;587
7.5.5.1.3;Circuit-Breaker;588
7.5.5.1.4;Transaktionalität und Datenkonsistenz;589
7.5.5.2;Serviceübergreifender Code und serviceübergreifende Funktionen;592
7.5.5.2.1;Nuget-Pakete;592
7.5.5.2.2;Nutzung von Middleware;592
7.5.5.2.3;Zentrale Services;593
7.5.5.2.4;Fazit und weitere Literatur;593
7.6;Kapitel 14 - ASP.NET Core SignalR;595
7.6.1;Hub-Klassen;595
7.6.2;Hub-Client mit .NET Core 2.1;597
7.6.3;Hub-Client mit Angular;598
7.6.4;Serverseitig initiierte Benachrichtigungen und Gruppen;603
8;Teil D - Web-Client-Programmierung;609
8.1;Kapitel 15 - JavaScript-Grundlagen;611
8.1.1;Grundlagen der Sprache;611
8.1.1.1;Sprachmerkmale und Entwurfsmuster;612
8.1.1.2;Vergleich mit Programmiersprachen;612
8.1.1.3;JavaScript-Syntax;612
8.1.1.3.1;Einbetten in HTML;613
8.1.1.3.2;Kommentare;613
8.1.1.3.3;Literale;614
8.1.1.3.4;Umlaute;614
8.1.1.3.5;Numerische und boolesche Literale;614
8.1.1.3.6;Sonstige Literale;615
8.1.1.3.7;Operatoren;615
8.1.1.4;Typen;616
8.1.1.4.1;Automatische Typkonvertierung;616
8.1.1.4.2;Number;616
8.1.1.4.3;Berechnungen mit Math;617
8.1.1.4.4;Weitere Funktionen;619
8.1.1.4.5;Konstanten;620
8.1.1.4.6;Zeichenkette (String);621
8.1.1.4.7;Vorlagenzeichenfolgen;622
8.1.1.4.8;Die String-Methoden;623
8.1.1.4.9;Nicht standardkonforme String-Methoden;626
8.1.1.4.10;Boolean;626
8.1.1.5;Objekte;627
8.1.1.5.1;Das Objekt-Literal {};627
8.1.1.5.2;Spezielle Typen;627
8.1.1.5.3;null versus undefined;628
8.1.1.6;Symbole;628
8.1.1.7;Arrays;628
8.1.1.7.1;Einige Methoden für Arrays;629
8.1.1.7.2;Spezialfunktionen statt Klassen;629
8.1.1.8;Operatoren;630
8.1.1.8.1;Operatoren für Objekte;630
8.1.1.8.2;Spread-Operator;631
8.1.1.8.3;Vergleichsoperatoren;631
8.1.1.9;Anweisungen – Statements;632
8.1.1.9.1;Kontrollstrukturen: if – else;633
8.1.1.9.2;Kontrollstrukturen: switch – else – default;633
8.1.1.9.3;Umgang mit break;633
8.1.1.9.4;Kontrollstrukturen: Schleifen;633
8.1.1.9.5;while;633
8.1.1.9.6;do;634
8.1.1.9.7;for;634
8.1.1.9.8;foreach;635
8.1.1.9.9;Schleifenkontrolle;635
8.1.1.9.10;Verschachtelung von Schleifen;636
8.1.1.9.11;Schleifen mit for..in;637
8.1.1.9.12;Schleifen mit for..of;637
8.1.1.9.13;Polyfill erforderlich;638
8.1.1.10;Fehlerbehandlung;638
8.1.1.10.1;Ausnahmen (Exceptions);638
8.1.1.10.2;Standardausnahmeobjekte;639
8.1.1.11;Variablen und Scope;640
8.1.1.11.1;Scope – der Sichtbarkeitsbereich;640
8.1.1.11.2;Variablen mit let und const;640
8.1.1.11.3;Das return-Schlüsselwort;641
8.1.2;Objektorientierung;641
8.1.2.1;Erstellen von Objekten;641
8.1.2.1.1;Deklaration mit new;641
8.1.2.1.2;Deklaration mit der Literalnotation;642
8.1.2.1.3;JSON (JavaScript Object Notation);642
8.1.2.2;Klassen;643
8.1.2.2.1;Der Konstruktor;643
8.1.2.2.2;Klassische Konstruktor-Funktionen;644
8.1.2.2.3;Der Konstruktor constructor;646
8.1.2.2.4;Methoden und Eigenschaften;646
8.1.2.2.5;Umgang mit Eigenschaften;646
8.1.2.2.6;Private Variablen und Funktionen;647
8.1.2.2.7;Privilegierte Funktionen;648
8.1.2.3;Statische Mitglieder;649
8.1.2.4;Vererbung;649
8.1.2.4.1;Prototyping;649
8.1.2.4.2;Objektabstammung;650
8.1.2.4.3;Die Basismethoden;651
8.1.2.4.4;Objektvererbung;651
8.1.2.4.5;Vererbung mit extends;652
8.1.2.4.6;Umgang mit prototype und __proto__;653
8.1.2.4.7;Die Objektvererbung mittels __proto__-Prototype;653
8.1.2.5;Exkurs Objekthierarchie;653
8.1.2.5.1;Umgang mit this;653
8.1.2.5.2;Bindungen;655
8.1.2.5.3;Bindungen berücksichtigen;656
8.1.2.5.4;Explizite Bindungen;658
8.1.2.6;Ableiten von internen Typen;659
8.1.2.7;Tipps zum Umgang mit objektorientierten Techniken;659
8.1.3;Globale Standardfunktionen;660
8.1.3.1;Timer-Funktionen;660
8.1.3.1.1;Einsatzfälle;660
8.1.3.1.2;Beispiele;660
8.1.3.2;Prüffunktionen;661
8.1.3.3;Konvertierungsfunktionen;661
8.1.4;Module;662
8.1.4.1;Entwurfsmuster;662
8.1.4.1.1;Einfache Module;663
8.1.4.1.2;Privater Funktions-Scope;664
8.1.4.1.3;Öffentliche Schnittstellen;665
8.1.4.1.4;Instanzen von Modul-Objekten;666
8.1.4.1.5;Globale Objekte;667
8.1.4.1.6;Erweiterbare Module;667
8.1.4.1.7;Reihenfolgen sichern;668
8.1.4.1.8;Namensräume;668
8.1.4.1.9;Zusammenfassung;669
8.1.4.2;Module;669
8.1.5;Funktionen;669
8.1.5.1;Pfeilfunktionen (Lambdas);669
8.1.5.1.1;Funktionsrumpf;671
8.1.5.1.2;Rückgabe von Objekt-Literalen;671
8.1.5.1.3;Zeilenumbruch;671
8.1.5.1.4;Übersetzungsreihenfolge;671
8.1.5.1.5;Verwendung von new;672
8.1.5.1.6;Verwendung von yield;672
8.1.5.2;Erweiterte Objektliterale;672
8.1.5.3;Destrukturierung;672
8.1.5.4;Umgang mit Argumenten;673
8.1.5.4.1;Standardargumente;673
8.1.5.4.2;Argument-Arrays;673
8.1.5.4.3;Rest-Parameter;674
8.1.5.5;Generatoren und Iteratoren;674
8.1.5.5.1;Generatoren;674
8.1.5.5.2;yield;675
8.1.5.5.3;Iteratoren;675
8.1.5.5.4;Iteratoren für Daten;676
8.1.6;Asynchrone Programmierung;677
8.1.6.1;Klassische asynchrone Programmierung;677
8.1.6.1.1;Asynchrone Funktionen;678
8.1.6.1.2;Continuation Passing Style (CPS);679
8.1.6.1.3;Fehlerbehandlung;681
8.1.6.2;Promise;684
8.1.6.2.1;Natur des Promise;684
8.1.6.2.2;Syntax und API;684
8.1.6.2.3;Promises erzeugen;685
8.1.6.2.4;Gruppen;686
8.1.6.2.5;Fehlerbehandlung;687
8.1.7;Set und Map;688
8.1.7.1;Set;688
8.1.7.2;Map;690
8.1.7.3;Schlüsselvergleiche;690
8.1.7.4;Iteratoren;691
8.1.7.5;WeakMap und WeakSet;692
8.1.8;Reguläre Ausdrücke;692
8.1.8.1;Einführung;692
8.1.8.2;Kopieren oder Konstruieren?;693
8.1.8.3;Und wie funktioniert das?;693
8.1.8.3.1;Auflösungshilfen;694
8.1.8.3.2;Literale;694
8.1.8.3.3;Zeichenklassen;695
8.1.8.3.4;Referenzen;695
8.1.8.3.5;Metazeichen;695
8.1.8.3.6;Anfang, Ende und Grenzen;695
8.1.8.3.7;Ein beliebiges Zeichen;696
8.1.8.3.8;Ohne Zeichen;697
8.1.8.3.9;Zeichenklassen;697
8.1.8.3.10;Einer aus vielen;697
8.1.8.3.11;Negation;698
8.1.8.3.12;Ziffern;698
8.1.8.3.13;Datum und Zeit;698
8.1.8.3.14;Zeichenketten;699
8.1.8.3.15;Abkürzungen;699
8.1.8.3.16;Wiederholungsoperatoren;699
8.1.8.3.17;Allgemeine Wiederholungsoperatoren;700
8.1.8.3.18;Auf einen Blick;701
8.1.8.3.19;Referenzen;701
8.1.8.4;Gruppierungen;702
8.1.8.4.1;Einfache Gruppen;702
8.1.8.4.2;Umschließende Zeichen;702
8.1.8.5;Vorwärtsreferenzen;703
8.1.8.6;Die JavaScript-Funktionen;704
8.1.8.6.1;Das RegExp-Objekt;704
8.1.8.6.2;Methoden;704
8.1.8.6.3;Eigenschaften;705
8.1.8.6.4;Dynamische Eigenschaften;706
8.1.8.6.5;Literal-Schreibweise direkt nutzen;706
8.1.8.6.6;Verarbeitungsoptionen;707
8.1.8.6.7;Zeichenkettenfunktionen;707
8.1.8.6.8;Übersicht;707
8.1.8.7;Zusammenfassung;708
8.1.9;Reflektions-API;710
8.1.9.1;Einfache Methoden;710
8.1.9.2;Reflect;710
8.1.9.3;Erzeugerfunktionen;711
8.1.9.4;Operatoren für Schlüsselwörter;711
8.1.9.5;Dynamische Argumentlisten;712
8.1.9.6;Funktionsaufrufe;712
8.1.9.7;Proxy-Fallen;712
8.1.9.8;Zusammenfassung der Reflect-Methoden;713
8.1.10;Stellvertreter: Proxies;714
8.1.10.1;Einführung;714
8.1.10.2;Proxy-Fallen anwenden;715
8.1.10.2.1;get;715
8.1.10.2.2;set;716
8.1.10.3;Schemaprüfung mit Proxies;717
8.1.10.4;Entfernbare Proxies;718
8.1.10.5;Übersicht;719
8.2;Kapitel 16 - TypeScript;721
8.2.1;Geschichte von TypeScript;721
8.2.2;Open-Source-Projekt;722
8.2.3;TypeScript-Compiler;722
8.2.4;Übersetzung von TypeScript in JavaScript;723
8.2.5;TypeScript Playground;724
8.2.6;TypeScript in Visual Studio;725
8.2.7;TypeScript-Kommandozeilencompiler tsc;728
8.2.8;TypeScript in Visual Studio Code;729
8.2.9;TypeScript in Gulp;730
8.2.10;Datentypen;732
8.2.11;Arrays und Tupel;734
8.2.12;Klassen;735
8.2.13;Generische Klassen;737
8.2.14;Strukturelle Typäquivalenz (Duck Typing);738
8.2.15;Funktionen und Lambda-Ausdrücke;738
8.2.16;Dekoratoren;740
8.2.17;Module und Verweise;741
8.2.17.1;TypeScript ohne externes Modulsystem (interne Module);741
8.2.17.2;Externe Module;742
8.2.17.3;Re-Export;744
8.2.18;Deklarationsdateien;744
8.2.18.1;Einbindung von Deklarationsdateien (altes Verfahren);745
8.2.18.2;Import von Deklarationsdateien;745
8.2.18.3;Deklarationsdateien und tsconfig.js;745
8.2.19;Mixins;746
8.2.19.1;Mixin-Konstruktortypen;748
8.2.19.2;Deklaratives Mischen;749
8.2.19.3;Module mischen;750
8.2.19.4;Nicht mögliche Vermischungen;753
8.2.20;Reflektion: Metadaten per Programmcode;753
8.2.20.1;Die Metadaten-API für Reflektion;754
8.2.20.2;Ermitteln von Typinformationen;754
8.2.20.3;Ermitteln von Parameterinformationen;755
8.2.20.4;Ermitteln von Rückgabeinformationen;755
8.2.21;Asynchrone Programmierung;755
8.2.22;Generatoren und Iteratoren;756
8.2.22.1;Iteratoren;756
8.2.22.2;Generatoren;757
8.2.22.3;Asynchrone Iteration;757
8.2.22.4;Asynchrone Generatoren;758
8.3;Kapitel 17 - Angular;759
8.3.1;Ziele und Architektur von Angular;759
8.3.2;Browserunterstützung;760
8.3.3;Veröffentlichungszyklus von Angular;761
8.3.4;Dokumentation;762
8.3.5;Beispielsammlung;763
8.3.6;Komponenten;765
8.3.7;Datenbindung und Pipes;768
8.3.8;Syntaxübersichten;770
8.3.8.1;Strukturelle Direktiven;770
8.3.8.2;Datenbindungssyntax;771
8.3.8.3;Angular-Pipes;771
8.3.9;Module;772
8.3.10;Formulare;773
8.3.11;Routing;776
8.3.12;Dienste und Dependency Injection;778
8.3.13;Animationen;779
8.3.14;Werkzeuge;779
8.3.15;JiT vs. AOT;780
8.3.16;Angular Universal;782
8.4;Kapitel 18 - ASP.NET Blazor;783
8.4.1;Silverlight wurde eingestellt;783
8.4.2;Web Assembly;783
8.4.3;Architektur von Blazor;784
8.4.4;Erste Schritte mit ASP.NET Blazor;785
8.4.5;Beispielprojekt;786
8.4.6;Weitere Möglichkeiten;789
8.4.7;Ausblick;789
9;Teil E - Hosting von ASP.NET und ASP.NET Core;791
9.1;Kapitel 19 - Internet Information Services (IIS);793
9.1.1;Versionsgeschichte;793
9.1.2;Kernfunktionen des IIS;794
9.1.3;Installation des IIS;795
9.1.3.1;Modularisierung;797
9.1.3.2;Skriptbasierte Installation;798
9.1.3.3;Integration zwischen ASP.NET und IIS;799
9.1.3.4;Test der Installation;799
9.1.4;IIS Express;800
9.1.5;IIS-Administration;801
9.1.5.1;IIS-Manager;802
9.1.5.2;Administration per Kommandozeile und Skript;803
9.1.6;IIS-Websites (virtuelle Webserver);803
9.1.6.1;Websites erstellen;804
9.1.6.2;Websites erstellen per Skript;805
9.1.6.3;Wichtige Einstellungen für Websites;807
9.1.6.4;Beschränken der möglichen Clients;807
9.1.6.5;Authentifizierung;808
9.1.6.6;Transport Layer Security (TLS)/Secure Socket Layer (SSL);809
9.1.6.7;Server für Nicht-HTTP-Protokolle;811
9.1.7;Virtuelle Verzeichnisse im IIS;811
9.1.8;IIS-Anwendungen;813
9.1.8.1;Rahmenbedingungen einer IIS-Anwendung;813
9.1.8.2;Anlegen einer IIS-Anwendung;814
9.1.9;IIS-Anwendungspools;815
9.1.9.1;Eigenschaften eines Anwendungspools;815
9.1.9.2;Liste der Anwendungspools;816
9.1.9.3;Zuordnung von Websites und IIS-Anwendungen zu Anwendungspools;816
9.1.9.4;ASP.NET-Version;817
9.1.9.5;Erweiterte Einstellungen für Anwendungspools;818
9.1.9.6;Anwendungspoolidentität;819
9.1.9.7;Wiederverwendung (Recycling);819
9.1.9.8;Leistungseinstellungen;820
9.1.9.9;Zustandsüberwachung;821
9.1.10;Besonderheiten für ASP.NET-Anwendungen;821
9.1.10.1;IIS-Autostart;821
9.1.10.2;IIS-Verarbeitungspipeline;824
9.2;Kapitel 20 - Microsoft Azure;827
9.2.1;Azure-Konzepte;827
9.2.2;Anlegen einer Subscription;828
9.2.3;Anlegen einer Ressource Group;828
9.2.4;Anlegen eines App Service Plans;829
9.2.5;Anlegen eines Azure App Service;830
9.2.6;Anlegen eines Azure App Service mit der PowerShell;833
9.3;Kapitel 21 - Verteilen von Webanwendungen aus Visual Studio heraus;835
9.3.1;Web Deploy-Werkzeug;835
9.3.1.1;Web Deploy in einen IIS-Webserver;836
9.3.1.2;Web Deploy nach Azure;838
9.3.2;Konfigurationstransformationen;839
9.3.2.1;Erstellen der Transformationsdateien;839
9.3.2.2;Syntax der Transformationsdateien;839
9.3.2.3;Ergebnis der Transformation;841
9.3.3;Continuous Integration und Continuous Delivery;841
9.4;Kapitel 22 - Webanwendungen in Docker;843
9.4.1;Docker auf Windows;843
9.4.2;Installation der Docker-Unterstützung von Microsoft;845
9.4.3;Installation von Docker for Windows;847
9.4.4;Ein Image beschaffen;848
9.4.5;Einen Container starten;849
9.4.6;Ein Visual-Studio-Container-Projekt erstellen;850
9.4.7;Debugging eines Containers;851
9.4.8;Verwendung des Containers;851
9.4.9;Images aus Containern erstellen;855
9.4.10;.NET Core-Container;855
9.4.11;Container in Windows Server 2016 hosten;858
9.4.12;Images verbreiten;859
10;Teil F - Fallbeispiel: MiracleList;863
10.1;Kapitel 23 - Das Fallbeispiel »MiracleList«;865
10.1.1;Das Szenario;865
10.1.2;Links;868
10.2;Kapitel 24 - Das MiracleList-Backend;869
10.2.1;Architektur;871
10.2.2;Entitätsklassen;874
10.2.3;Entity Framework Core-Kontextklasse;876
10.2.4;Lebensdauer der Kontextklasse in ASP.NET Core- Anwendungen;877
10.2.5;Geschäftslogik;878
10.2.6;Web API;887
10.3;Kapitel 25 - MiracleList-Web-Client;899
10.3.1;Technikeinsatz im Web-Client;899
10.3.2;Angular-CLI;900
10.3.3;Webserver starten;902
10.3.4;Zusatzkomponenten;903
10.3.5;Proxy für REST-Dienste;904
10.3.6;Daten darstellen;905
10.3.7;Navigation zu den Aufgaben;907
10.3.8;Datumsanzeigen;910
10.3.9;Zeilenumbrüche;912
10.3.10;Aufgabenstatus ändern;912
10.3.11;Aufgaben anlegen;915
10.3.12;Suchfunktion;916
10.3.13;Komponentenbildung;917
10.3.13.1;Schritt 1: Routing-Modul;919
10.3.13.2;Schritt 2: Kommunikationsdienst;919
10.3.13.3;Schritt 3: Teilaufgabenliste in SubTaskList-Komponente;920
10.3.13.4;Schritt 4: Auslagerung in TaskView;922
10.3.13.5;Schritt 5: Aufgaben bearbeiten;924
10.3.13.6;Schritt 6: Integration in AppComponent;925
10.3.14;Datepicker;926
10.3.15;Kontextmenü verwenden;927
10.3.16;Nachfragen beim Löschen;930
10.3.17;Animationen;931
10.3.18;Sortieren der Aufgabenliste;932
10.3.19;Benutzeranmeldung;933
10.3.20;Hauptmenü;935
10.3.21;Testen;936
10.3.22;Auslieferung;939
10.4;Kapitel 26 - MiracleList-Electron-Client;941
10.4.1;Hybride Apps;942
10.4.2;Architektur von Electron;942
10.4.3;Electron-Projekt anlegen;943
10.4.4;Kommunikation zwischen Main und Renderer;952
10.4.5;Erweiterungen in der Webanwendung;952
10.4.6;Start der Electron-Anwendung;955
10.4.7;Debugging;956
10.4.8;Deployment;957
10.5;Kapitel 27 - MiracleList-Cordova-Client;959
10.5.1;Architektur von Cordova;960
10.5.2;Cordova-Projekt anlegen ;961
10.5.3;Cordova-Anwendung starten;963
10.5.4;Erweiterungen in der Webanwendung;964
10.5.5;Cordova-APIs verwenden;965
10.5.6;Plug-ins verwenden;966
10.5.7;Responsive Web Design mit Bootstrap;969
11;Index;971