Schwichtenberg / Krause | Moderne Webanwendungen für .NET-Entwickler | E-Book | sack.de
E-Book

E-Book, Deutsch, 982 Seiten

Reihe: Animals

Schwichtenberg / Krause Moderne Webanwendungen für .NET-Entwickler

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



Auch in der .NET-Welt werden immer mehr Web- und Cross-Plattformanwendungen mit HTML, CSS, JavaScript/TypeScript und SPA-Frameworks clientseitig programmiert, während auf dem Server ASP.NET oder ASP.NET Core zum Einsatz kommt. Das erfahrene  IT-Visions.de-Expertenteam um Dr. Holger Schwichtenberg zeigt, wie Sie mit diesem Technikmix moderne Single-Page-Webanwendungen und mobile Cross-Platform-Apps realisieren. Es liefert Praxiswissen für Entwickler, die bislang Windows-Desktop-Anwendungen entwickelt haben oder nur mit älteren ASP.NET-Konzepten (Webforms) vertraut sind. Das Buch deckt ein umfassendes Themenspektrum ab:
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.
Schwichtenberg / Krause Moderne Webanwendungen für .NET-Entwickler jetzt bestellen!

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


Das Autorenteam: Alle Autoren dieses Buchs arbeiten bei der Firma IT-Visions.de als Softwarearchitekten, Softwareentwickler, Trainer und Berater. IT-Visions.de ist ein Verbund der deutschen Top-Experten im Bereich der Microsoft-Produkte und -Technologien, insbesondere .NET sowie Webtechniken.
Unter Leitung und Mitwirkung von Dr. Holger Schwichtenberg bietet das Unternehmen Dienstleistungen von der strategischen und technischen Beratung über Machbarkeitsstudien und Softwareentwicklung bis hin zu Workshops und Seminaren.


Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.