Moderne Webanwendungen für .NET-Entwickler (eBook)
982 Seiten
O'Reilly Verlag
978-3-96010-258-8 (ISBN)
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.
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.
Moderne Webanwendungen für.NET-Entwickler 3
Impressum 4
Inhalt 5
Vorwort zur 3. Auflage 23
Warum dieses Buch? 23
Was ist der Inhalt dieses Buchs? 24
Welche Voraussetzungen sollten Sie für dieses Buch mitbringen? 25
Was ist das Ziel des Buchs? 25
Welche Versionen werden in diesem Buch behandelt? 26
Welche Programmiersprache wird in diesem Buch verwendet? 27
Welche Werkzeuge werden in diesem Buch verwendet? 27
Welche Sprachversion wird in diesem Buch verwendet? 27
Woher bekommen Sie die Code-Beispiele und die drei Bonuskapitel zu diesem Buch? 28
Wem ist zu danken? 30
Die Autoren 30
Über www.IT-Visions.de 30
Dr. Holger Schwichtenberg 31
Jörg Krause 32
Dr. Joachim Fuchs 33
Sebastian Kleinschmager 33
Manfred Steyer 33
Teil A - Web-Basiswissen 35
Kapitel 1 - Protokolle, Standards und Konzepte 37
Standardisierung 37
RFCs 37
World Wide Web Consortium (W3C) 38
European Computer Manufacturers Association (ECMA) 38
Hypertext Transfer Protocol (HTTP) 38
Protokollaufbau, Header, Body 39
Kommandoaufbau 40
Methode oder Verb? 40
Die HTTP-Statuscodes 41
Ablauf einer HTTP-Kommunikation 41
Kopffelder 42
HTTP 2.0 43
Ergänzende Standards zu HTTP 44
Web-Sockets 44
WebDAV 45
Simple Mail Transfer Protocol (SMTP) oder Extended SMTP (ESMTP) 45
File Transfer Protocol (FTP) 45
REpresentational State Transfer (REST) 46
Webdienste 46
Merkmale 46
Adressierbarkeit 46
Repräsentationsvariabilität 46
Zustandslosigkeit 47
Skalierbarkeit 47
Allgemeingültigkeit 47
Erweiterbarkeit 47
REST-Beispiel 47
URI 48
HTTP-Methoden für REST 49
Multipurpose Internet Mail Extensions (MIME) 50
JavaScript Object Notation (JSON) 51
Die JSON-Formatdefinition 51
Atom Syndication Format (ATOM) 52
Grenzen von REST: GraphQL und OData 53
Single Page Application (SPA) 53
Asynchronous JavaScript and XML (AJAX) 54
Responsive Web Design (RWD) 55
Kapitel 2 - Hypertext Markup Language (HTML) 57
Grundlagen HTML 57
Geschichte 57
XML – Grundlage für HTML 58
Markup 59
XML-Dokumente 59
Wohlgeformtheit 59
Validierung 60
Verarbeitung 60
Der Begriff »Markup« 60
Leere Elemente 61
Gültigkeit 62
Richtigkeit 62
Spezialfälle 63
Seitenaufbau 63
Document Object Model (DOM) 64
Der Dokumenttyp (Doctype) 64
Codierungen 64
HTML5-Seitenstruktur 65
Elemente der Seite 68
Textelemente 68
h1 … h6 69
p 69
pre 69
blockquote 69
figure und figcaption 69
hr 70
ol und li 70
ul und li 70
dl, dt, dd 70
div 70
Fließtextauszeichnung 70
Verweise 71
Tabellen 71
Multimedia und Grafiken 72
Formulare 72
Skripte 73
Interaktive Elemente 73
Allgemeine und universelle Attribute 73
id 74
class 74
accesskey 75
contenteditable 75
contextmenu 76
dir 76
draggable 76
dropzone 77
hidden 77
lang 77
spellcheck 77
style 78
tabindex 78
title 78
Kapitel 3 - Cascading Style Sheets (CSS) 79
Grundlagen 79
Syntax 80
Selektor 81
Elemente (Tags) 81
ID 81
Klassen 81
Attribute 82
Logische Auswahl 82
Weitere Selektoren 82
Pseudo-Selektoren 84
Das Box-Modell 85
Bausteine der Box 86
Zählweise 87
Ausnahmen 87
Das Box-Modell in CSS3 87
Das Flexbox-Modell 87
Prinzipien 87
Eigenschaft der Container 89
Beachtung von Medien 90
Syntax 90
Umgang mit Einheiten 92
Parameter 93
Der Viewport 97
Viewport einstellen 97
Parameter für den Viewport 99
Einheiten 99
Absolute Einheiten 100
Typografische Angaben 100
Empfehlung 101
Relative Einheiten 101
Kapitel 4 - Bootstrap 103
Einführung in Bootstrap 103
Neuerungen in Bootstrap 4 103
Globale Änderungen 103
Rastersystem 104
Tabellen 104
Formulare 104
Schaltflächen 104
Klappmenüs 104
Panels 104
Sonstiges 104
Installation 104
CDN 105
Bootstrap 4 105
Repository für lokale Installation 105
Struktur der CSS-Dateien 106
Minimizer 107
Seitenaufbau 107
Browserunterstützung 108
ARIA 109
HTML5 – Das role-Attribut 109
Optimierung 110
Interaktive Oberflächen 111
Hilfsklassen 112
Rahmen 112
Reboot 112
Schriftarten 112
Struktur der Seite 113
Einführung 113
Der HTML5-Doctype 113
Einstellungen des Ansichtsbereichs 113
Zoom abschalten 113
Das Rastersystem 114
Container 114
Das Raster im Detail 114
Gerätespezifische Definitionen 115
Änderung zu Bootstrap 3 116
Auto-Layout 120
Das Flex-Raster 123
Vorbereitung 124
Gleichverteilte Spalten 124
Horizontale Verteilungsoptionen 125
Vertikale Verteilungsoptionen 126
Sortieroptionen 127
Typografie 128
Überschriften 129
Text und Textelemente 130
Basisschrift 130
Textelemente 130
Elemente für Textblöcke 131
Ausrichtung 133
Blocksatz 134
Transformationen 134
Listen 135
Tabellen 137
Stile für Tabellen 137
Spalten 138
Lesbarkeit für Screenreader 140
Responsive Tabellen 142
Hilfsklassen 146
Abstände kontrollieren 146
Anzeigestatus erzwingen 147
Formulare 148
Struktur eines Formulars 148
Einfache Formularelemente 148
Eingabegruppen 149
Einzeilige Formulare 149
Label benutzen 150
Formularelemente mit Bausteinen 151
Größen 152
Umgang mit Kontrollkästchen und Optionsfeldern 153
Ergänzende Schaltflächen 154
Horizontale Formulare 157
Eingabeelemente 158
Input-Elemente 159
Select-Element 161
Statische Texte im Formular 162
Verhalten der Formularelemente 163
Validierungsinformationen in Formularen 164
Barrierefreiheit 165
Formularelemente im Raster 170
Anpassung der Feldhöhe 171
Hilfetexte in Formularen 172
Schaltflächen 173
Semantische Schaltflächen 174
Größe und Aussehen 174
Zustände 177
Weitere Bausteine 178
Symbole 178
Warum Symbolfonts? 178
Alternativen 178
Nutzung der Symbole 179
Nutzung auf Schaltflächen 180
Meldungen 181
Häufige Symbole 181
Responsive Bilder 182
SVG und IE 8 bis 10 182
Eingebettete Quellen 183
Farben und Hintergründe 183
Textfarbe 183
Hintergrundfarbe 184
Ausrichtung von Elementen im Fluss 185
Zentrieren 185
Umbruch: Clearfix 185
Inhalte anzeigen und verstecken 186
Komponenten 186
Klappmenüs (dropdown) 187
Ausrichtung des Menüs 188
Dekorationselemente 188
Werkzeugleisten (toolbar) 190
Vertikale Ausrichtung 192
Allgemeine Optionen 192
Schaltfläche mit Menü (button group) 193
Einfache Schaltfläche mit Menü 193
Geteilte Schaltfläche mit Menü 194
Größen von Menüschaltflächen 194
Spezielle Menüvarianten 195
Navigation (nav, navbar) 196
Tabulatoren (tabs) 196
Navigationsschaltflächen (pills) 197
Universelle Einstellungen 198
Navigationsleiste (navbar) 200
Standardnavigationsleiste 204
Pfadnavigation (breadcrumb) 204
Seitenweises Blättern (pagination) 205
Seitenanzeige 205
Unbestimmte Seitenzahl 206
Größe 207
Kennzeichnungen (tag) 207
Kennzeichnungsplaketten (tag-pills) 208
Neu in Bootstrap 4 208
Großbildleinwand (jumbotron) 209
Seitenüberschriften (page header) 210
Meldungen (alert) 211
Fortschrittsbalken (progress) 212
Medien (media) 216
Ausrichtung 216
Medienlisten 216
Allgemeine Listen (list group) 217
Plaketten in Listen 217
Links in Listen 218
Schaltflächen in Listen 218
Karten (cards) 221
Panels in Bootstrap 4 221
Überschriften 221
Fußzeilen 222
Karten mit Tabellen 223
Karten mit Listen 224
Karten mit Bildern 224
Karten im Raster 225
Kartenstapel (card decks) 226
Kartengruppen (card groups) 227
Karten in Spalten (card columns) 228
Semantische Farben 230
Aktive Komponenten 231
Einrichtung und Aktivierung 231
jQuery UI? 232
Die Programmierschnittstelle 232
Konfliktvermeidung 232
Ereignisse 233
Übergänge (transition) 233
Animationen 233
Modale Dialoge (modals) 234
Eigenschaften 234
Größen 235
Dialog im Raster 236
Allgemeines zum Verhalten 240
Optionen 240
Benutzung 241
Klappmenü (dropdown) 242
Allgemeines zum Verhalten 242
Optionen 242
Scrollbar-Überwachung (scrollspy) 243
Affix 243
Benutzung 244
Optionen 244
Angeheftete Navigation (affix) 245
Umschaltbare Tabulatoren (tab) 245
Benutzung 245
Optionen 247
Tooltips (tooltip) 247
Mehrzeilige Links 248
Allgemeine Tipps 248
Optionen 249
Inhaltsüberlagerung (popover) 250
Anwendung 250
Optionen 252
Meldungen (alert) 253
Optionen 254
Interaktive Schaltflächen (button) 254
Umschalter 254
Optionen 255
Inhaltseinblendung (collapse) 255
Anwendung 255
Inhaltsgruppen (accordion) 256
Optionen 258
Bilderkreisel (carousel) 259
Anwendung 259
Optionen 260
Teil B - Webserverprogrammierung mit ASP.NET 263
Kapitel 5 - ASP.NET MVC 265
Geschichte und Verbreitung von ASP.NET 265
Architektur von ASP.NET MVC 266
Erste Schritte mit ASP.NET MVC 267
ASP.NET-MVC-Projekt anlegen 267
Projektaufbau 269
Nuget-Pakete 270
Modell anlegen 271
Controller anlegen 272
View anlegen 274
Webanwendung testen 279
Einträge editieren 280
Vorschlagswerte über Drop-down-Listenfelder anbieten 285
Controller 288
Models entgegennehmen 288
View auswählen 290
Auf Ausnahmen reagieren 291
URL-Mapping beeinflussen (Routing) 291
Asynchrone Controller 294
Vereinfachte Implementierung asynchroner Controller seit .NET 4.5 295
Views 296
Razor 296
Razor-Helper 299
Layoutseiten 299
Partielle Views 301
Vorlagen für Felder und Models 303
Views für mobile Anwendungen 306
Zwischen unterschiedlichen Ansichten wechseln 307
Minification und Bundling 308
Models 309
Metadaten im Model festlegen 309
HTML-Text übermitteln 310
Validieren von Benutzereingaben 310
Manuelles Validieren 310
Deklaratives Validieren 311
Globalisierung 316
Sprach- und Ländereinstellungen festlegen 316
Über Ressourcedateien mehrsprachige Inhalte bereitstellen 318
Codierung festlegen 319
Areas 320
Filter 322
Überblick 323
Umsetzung 323
Filter auf Controller und Action-Methoden anwenden 325
Globale Filter 326
Authentifizierungsfilter 326
Kapitel 6 - ASP.NET Web API 329
Einen einfachen HTTP-Service erstellen 329
Parameter und Rückgabewerte 330
HTTP-Services konfigurieren 332
HTTP-Services mit Fiddler testen 334
Mehr Kontrolle über HTTP-Nachrichten 335
Antworten mit HttpResponseMessage beeinflussen 335
Anfragen als HttpRequestMessage darstellen 337
HttpRequestMessage und HttpResponseMessage am Beispiel Conditional Get 338
Antworten über IHttpActionResult zurückgeben 339
HTTP-Services über HttpClient konsumieren 340
Routing 343
Benutzerdefinierte Routen über die Konfiguration festlegen 343
Attributbasiertes Routing 344
Weiterführende Schritte mit der Web API 347
Dynamische Parameter 348
Tracing 349
Request Batching 350
Cross Origin Resource Sharing (CORS) 352
Validieren 353
Querschnittsfunktionen implementieren 354
Message-Handler 354
Einen Handler umsetzen 354
Handler mit HttpClient verwenden 355
Filter 357
Überblick 357
Filter umsetzen 358
Filter als Attribute einsetzen 359
Filter über FilterProvider bereitstellen 360
Filter als globale Filter registrieren 361
Schnittstellen für Filter 361
Authentifizierungsfilter 361
Filterüberschreibungen 364
Benutzerdefinierte Formate unterstützen 364
Formatter implementieren 365
Formatter mit HttpClient verwenden 367
Serialisierung beeinflussen 368
JSON-Serializer konfigurieren 368
XML-Serializer konfigurieren 369
Eigenschaften von der Serialisierung ausschließen 369
Zirkuläre Referenzen serialisieren 370
Binary JSON (BSON) 372
Web API und HTML-Formulare 372
Einfache Formularfelder übermitteln 372
Datei-Upload via HTML-Formular 373
Fortschritt ermitteln 375
Feingranulare Konfiguration 377
Controllerbasierte Konfiguration 377
Routenbasierte Konfiguration 378
Kapitel 7 - ASP.NET SignalR 379
Long-Polling 379
Web-Sockets 380
Überblick über ASP.NET SignalR 381
PersistentConnection 382
Erste Schritte mit SignalR und PersistentConnection 382
Lifecycle-Methoden 383
URL-Mapping für persistente Verbindungen 383
Einfacher Client für eine persistente Verbindung 384
Einfacher JavaScript-Client für eine persistente Verbindung 385
Hubs 387
Methoden und Callbacks mit SignalR und Hubs 387
URL-Mapping für Hubs 389
Lifecycle-Methoden 389
Hubs konsumieren 389
Hubs über JavaScript konsumieren 391
Gruppen 395
Pipeline-Module für Querschnittsfunktionen 396
SignalR konfigurieren 398
Cross Origin Resource Sharing (CORS) 398
SignalR skalieren 398
Überlegungen zum Skalieren von SignalR 399
SignalR mit SQL Server skalieren 400
Implementierung eines SignalR-Clients 402
Das Skalierungsszenario testen 403
Azure Service Bus und Redis als Alternative zu SQL Server 404
Kapitel 8 - ASP.NET-Programmierschnittstellen 405
Direkt mit HTTP interagieren 405
HttpContext 405
Server (HttpServerUtility) 407
Request (HttpRequest) 408
Response (HttpResponse) 410
Zustandsverwaltung auf Sitzungsebene 411
Überblick 412
Weitere Optionen 413
Programmieren mit dem Sitzungszustand 414
URL-basierte Sitzungsverwaltung ohne Cookies 414
Konfiguration des Sitzungszustands 415
Speicherort der Sitzungstabelle wählen 416
Komprimierung des Sitzungszustands 417
Deaktivieren des Sitzungszustands 417
Caching 417
Überblick 418
Pro und Contra der Zwischenspeicherung 418
Zwischenspeicherung ganzer Seiten (Output-Caching) 419
Zwischenspeicherungsprofile (Caching Profiles) 421
Caching von Seitenteilen (Fragmentzwischenspeicherung) 421
Programmatisches Caching 422
Cacheinvalidierung 423
Cacheinvalidierung durch die Datenbank 424
Cache Invalidation bei Microsoft SQL Server 7.0 und 2000 424
Cacheinvalidierung bei Microsoft SQL Server ab Version 2005 425
Teil C - Webserverprogrammierung mit ASP.NET Core 427
Kapitel 9 - Einführung in ASP.NET Core 429
Klassisches ASP.NET oder ASP.NET Core? 429
Einführung in die Core-Welt 430
.NET Standard 431
Windows Compatibility Pack für .NET Core 436
Open Source 439
Dokumentation 439
Werkzeuge 442
Kommandozeilenwerkzeug dotnet 442
Editoren 444
Erste Schritte mit ASP.NET Core (auf .NET Core) 444
Installation 444
Projekt anlegen 445
Projektaufbau 448
Die Klasse Program 449
Klasse Startup und Middleware 452
Referenzen/Pakete 454
Übersetzen und Debugging 457
Deployment 460
ASP.NET Core auf dem klassischen .NET Framework 463
Einsatzszenarien 463
Anlegen von ASP.NET-Core-Projekten mit dem klassischen .NET Framework 464
Projektaufbau 464
Referenzen/Pakete 466
Deployment 467
In ASP.NET Core integrierte Webserver: Kestrel versus HTTP.sys (WebListener) 469
Kestrel 469
HTTP.sys 470
Kapitel 10 - ASP.NET Core MVC und Razor Pages 473
POCO-Controller 474
Controller und View 475
Tag Helper 476
Wie funktionieren Tag Helper? 476
Eingebaute Tag Helper 477
Eigene Tag Helper 478
Beispiel: Tag < autor>
Beispiel: Tag < row>
Beispiel: Tag < condition>
Beispiel: Tag < repeater>
View Components 484
Razor Pages 486
Von Webforms über MVC zu Razor Pages 487
Razor Pages versus MVC 488
Page Model als Code-Behind 489
URL-Parameter 490
Eingebaute Objekte 492
Datenbindung 493
Praxisbeispiel zu Razor Pages 494
Drittanbieterkomponenten für ASP.NET Core 502
Kapitel 11 - ASP.NET-Core-Klassenbibliotheken 503
Dependency Injection in ASP.NET Core 504
Implementierung eines Diensts 505
Registrierung von Diensten 506
Injektion in einen Konstruktor 507
Manuelle Beschaffung 507
Injektion in eine View 508
Vordefinierte Dienste der ASP.NET-Core-Infrastruktur 508
Konfiguration in ASP.NET Core 509
Sitzungen in ASP.NET Core 511
Cookies 514
URL-Rewriting in ASP.NET Core 514
Benutzerverwaltung und Authentifizierung 517
Kapitel 12 - ASP.NET Core Web APIs 521
Die Grundlagen von ASP.NET Core Web API 521
Abfragen von Daten 521
Arbeiten mit Statuscodes 524
Anlegen, Aktualisieren und Löschen von Daten 525
Nutzung von Sub-Routen für Teil-Ressourcen 528
Nutzung weiterer Model-Binding-Funktionen 529
Anbieten unterschiedlicher Repräsentationen von Ressourcen 531
Nutzung des PATCH-Verbs mit JSON-Patch 531
Cross Origin Resource Sharing 533
Bereitstellung von OpenAPI-Beschreibungen über Swagger 535
Starten von Hintergrundprozessen über IHostedService 538
Integrationstests mithilfe des TestHosts 539
Service-Kommunikation mit HttpClient 540
Abfragen von Daten 540
Versenden von Daten und Reaktion auf Statuscodes 542
Arbeiten mit Headern und HttpRequestMessage 543
Generieren von Clients für Swagger-Spezifikationen 543
Ausblick auf Neuerungen durch ASP.NET Core 2.1 544
Annotation [ApiController] 544
ActionResult< T>
Optimierte Input-Verarbeitung 545
Unterstützung von Problemdetails für HTTP-APIs 546
JSON-Patch-Erweiterungen 547
Kapitel 13 - Microservices mit ASP.NET Core Web API und RabbitMQ 549
Grundlagen von Microservices 549
Mögliche Vorteile von Microservices 551
Mögliche Nachteile von Microservices 552
Modellierung von Microservices 553
Integration und Kommunikation von Microservices 554
Synchrone und asynchrone Kommunikation 554
Messaging-basierte versus Request-Response-Kommunikation 555
Gesteuerte (orchestriert) versus Event-getriebene Kommunikation (choreografiert) 556
.NET-Core-Technologien zur Umsetzung von Service- Kommunikation 557
Asynchrone Service-Kommunikation über RabbitMQ 557
Das Producer-Consumer-Modell 557
Das Publish-Subscribe-Modell 562
Microservices-Fallstudie 564
Umgebung und fachlicher Kontext 565
Der HumanResourcesService 566
Abfragen von Mitarbeiterdaten 567
Einbinden des DbContexts 568
Der ProjectsService 568
Replikation der Kundendaten aus dem CRM 569
Erzeugen von neuen Projekten 570
Zuweisen eines Mitarbeiters zu einem Projekt 572
Eingabe eines täglichen Reports über geleistete Stunden 574
Abschluss eines Projekts 576
Übersichtsdiagramm des ProjectsService 577
Der ManagementDashboardService 577
Aktualisieren der aktuellen Umsatzprognose 578
Übersichtsdiagramm des ManagementDashboardService 579
Der InvoicingService 579
Verarbeitung einer Rechnung für ein abgeschlossenes Projekt 579
Übersichtsdiagramm des InvoicingService 583
Fazit 584
Nützliche Patterns und Best-Practices im Bereich Microservices 584
Resilienz-Patterns 585
Der Retry-Mechanismus 585
Timeouts und das Problem blockierter Threads 587
Circuit-Breaker 588
Transaktionalität und Datenkonsistenz 589
Serviceübergreifender Code und serviceübergreifende Funktionen 592
Nuget-Pakete 592
Nutzung von Middleware 592
Zentrale Services 593
Fazit und weitere Literatur 593
Kapitel 14 - ASP.NET Core SignalR 595
Hub-Klassen 595
Hub-Client mit .NET Core 2.1 597
Hub-Client mit Angular 598
Serverseitig initiierte Benachrichtigungen und Gruppen 603
Teil D - Web-Client-Programmierung 609
Kapitel 15 - JavaScript-Grundlagen 611
Grundlagen der Sprache 611
Sprachmerkmale und Entwurfsmuster 612
Vergleich mit Programmiersprachen 612
JavaScript-Syntax 612
Einbetten in HTML 613
Kommentare 613
Literale 614
Umlaute 614
Numerische und boolesche Literale 614
Sonstige Literale 615
Operatoren 615
Typen 616
Automatische Typkonvertierung 616
Number 616
Berechnungen mit Math 617
Weitere Funktionen 619
Konstanten 620
Zeichenkette (String) 621
Vorlagenzeichenfolgen 622
Die String-Methoden 623
Nicht standardkonforme String-Methoden 626
Boolean 626
Objekte 627
Das Objekt-Literal {} 627
Spezielle Typen 627
null versus undefined 628
Symbole 628
Arrays 628
Einige Methoden für Arrays 629
Spezialfunktionen statt Klassen 629
Operatoren 630
Operatoren für Objekte 630
Spread-Operator 631
Vergleichsoperatoren 631
Anweisungen – Statements 632
Kontrollstrukturen: if – else 633
Kontrollstrukturen: switch – else – default 633
Umgang mit break 633
Kontrollstrukturen: Schleifen 633
while 633
do 634
for 634
foreach 635
Schleifenkontrolle 635
Verschachtelung von Schleifen 636
Schleifen mit for..in 637
Schleifen mit for..of 637
Polyfill erforderlich 638
Fehlerbehandlung 638
Ausnahmen (Exceptions) 638
Standardausnahmeobjekte 639
Variablen und Scope 640
Scope – der Sichtbarkeitsbereich 640
Variablen mit let und const 640
Das return-Schlüsselwort 641
Objektorientierung 641
Erstellen von Objekten 641
Deklaration mit new 641
Deklaration mit der Literalnotation 642
JSON (JavaScript Object Notation) 642
Klassen 643
Der Konstruktor 643
Klassische Konstruktor-Funktionen 644
Der Konstruktor constructor 646
Methoden und Eigenschaften 646
Umgang mit Eigenschaften 646
Private Variablen und Funktionen 647
Privilegierte Funktionen 648
Statische Mitglieder 649
Vererbung 649
Prototyping 649
Objektabstammung 650
Die Basismethoden 651
Objektvererbung 651
Vererbung mit extends 652
Umgang mit prototype und __proto__ 653
Die Objektvererbung mittels __proto__-Prototype 653
Exkurs Objekthierarchie 653
Umgang mit this 653
Bindungen 655
Bindungen berücksichtigen 656
Explizite Bindungen 658
Ableiten von internen Typen 659
Tipps zum Umgang mit objektorientierten Techniken 659
Globale Standardfunktionen 660
Timer-Funktionen 660
Einsatzfälle 660
Beispiele 660
Prüffunktionen 661
Konvertierungsfunktionen 661
Module 662
Entwurfsmuster 662
Einfache Module 663
Privater Funktions-Scope 664
Öffentliche Schnittstellen 665
Instanzen von Modul-Objekten 666
Globale Objekte 667
Erweiterbare Module 667
Reihenfolgen sichern 668
Namensräume 668
Zusammenfassung 669
Module 669
Funktionen 669
Pfeilfunktionen (Lambdas) 669
Funktionsrumpf 671
Rückgabe von Objekt-Literalen 671
Zeilenumbruch 671
Übersetzungsreihenfolge 671
Verwendung von new 672
Verwendung von yield 672
Erweiterte Objektliterale 672
Destrukturierung 672
Umgang mit Argumenten 673
Standardargumente 673
Argument-Arrays 673
Rest-Parameter 674
Generatoren und Iteratoren 674
Generatoren 674
yield 675
Iteratoren 675
Iteratoren für Daten 676
Asynchrone Programmierung 677
Klassische asynchrone Programmierung 677
Asynchrone Funktionen 678
Continuation Passing Style (CPS) 679
Fehlerbehandlung 681
Promise 684
Natur des Promise 684
Syntax und API 684
Promises erzeugen 685
Gruppen 686
Fehlerbehandlung 687
Set und Map 688
Set 688
Map 690
Schlüsselvergleiche 690
Iteratoren 691
WeakMap und WeakSet 692
Reguläre Ausdrücke 692
Einführung 692
Kopieren oder Konstruieren? 693
Und wie funktioniert das? 693
Auflösungshilfen 694
Literale 694
Zeichenklassen 695
Referenzen 695
Metazeichen 695
Anfang, Ende und Grenzen 695
Ein beliebiges Zeichen 696
Ohne Zeichen 697
Zeichenklassen 697
Einer aus vielen 697
Negation 698
Ziffern 698
Datum und Zeit 698
Zeichenketten 699
Abkürzungen 699
Wiederholungsoperatoren 699
Allgemeine Wiederholungsoperatoren 700
Auf einen Blick 701
Referenzen 701
Gruppierungen 702
Einfache Gruppen 702
Umschließende Zeichen 702
Vorwärtsreferenzen 703
Die JavaScript-Funktionen 704
Das RegExp-Objekt 704
Methoden 704
Eigenschaften 705
Dynamische Eigenschaften 706
Literal-Schreibweise direkt nutzen 706
Verarbeitungsoptionen 707
Zeichenkettenfunktionen 707
Übersicht 707
Zusammenfassung 708
Reflektions-API 710
Einfache Methoden 710
Reflect 710
Erzeugerfunktionen 711
Operatoren für Schlüsselwörter 711
Dynamische Argumentlisten 712
Funktionsaufrufe 712
Proxy-Fallen 712
Zusammenfassung der Reflect-Methoden 713
Stellvertreter: Proxies 714
Einführung 714
Proxy-Fallen anwenden 715
get 715
set 716
Schemaprüfung mit Proxies 717
Entfernbare Proxies 718
Übersicht 719
Kapitel 16 - TypeScript 721
Geschichte von TypeScript 721
Open-Source-Projekt 722
TypeScript-Compiler 722
Übersetzung von TypeScript in JavaScript 723
TypeScript Playground 724
TypeScript in Visual Studio 725
TypeScript-Kommandozeilencompiler tsc 728
TypeScript in Visual Studio Code 729
TypeScript in Gulp 730
Datentypen 732
Arrays und Tupel 734
Klassen 735
Generische Klassen 737
Strukturelle Typäquivalenz (Duck Typing) 738
Funktionen und Lambda-Ausdrücke 738
Dekoratoren 740
Module und Verweise 741
TypeScript ohne externes Modulsystem (interne Module) 741
Externe Module 742
Re-Export 744
Deklarationsdateien 744
Einbindung von Deklarationsdateien (altes Verfahren) 745
Import von Deklarationsdateien 745
Deklarationsdateien und tsconfig.js 745
Mixins 746
Mixin-Konstruktortypen 748
Deklaratives Mischen 749
Module mischen 750
Nicht mögliche Vermischungen 753
Reflektion: Metadaten per Programmcode 753
Die Metadaten-API für Reflektion 754
Ermitteln von Typinformationen 754
Ermitteln von Parameterinformationen 755
Ermitteln von Rückgabeinformationen 755
Asynchrone Programmierung 755
Generatoren und Iteratoren 756
Iteratoren 756
Generatoren 757
Asynchrone Iteration 757
Asynchrone Generatoren 758
Kapitel 17 - Angular 759
Ziele und Architektur von Angular 759
Browserunterstützung 760
Veröffentlichungszyklus von Angular 761
Dokumentation 762
Beispielsammlung 763
Komponenten 765
Datenbindung und Pipes 768
Syntaxübersichten 770
Strukturelle Direktiven 770
Datenbindungssyntax 771
Angular-Pipes 771
Module 772
Formulare 773
Routing 776
Dienste und Dependency Injection 778
Animationen 779
Werkzeuge 779
JiT vs. AOT 780
Angular Universal 782
Kapitel 18 - ASP.NET Blazor 783
Silverlight wurde eingestellt 783
Web Assembly 783
Architektur von Blazor 784
Erste Schritte mit ASP.NET Blazor 785
Beispielprojekt 786
Weitere Möglichkeiten 789
Ausblick 789
Teil E - Hosting von ASP.NET und ASP.NET Core 791
Kapitel 19 - Internet Information Services (IIS) 793
Versionsgeschichte 793
Kernfunktionen des IIS 794
Installation des IIS 795
Modularisierung 797
Skriptbasierte Installation 798
Integration zwischen ASP.NET und IIS 799
Test der Installation 799
IIS Express 800
IIS-Administration 801
IIS-Manager 802
Administration per Kommandozeile und Skript 803
IIS-Websites (virtuelle Webserver) 803
Websites erstellen 804
Websites erstellen per Skript 805
Wichtige Einstellungen für Websites 807
Beschränken der möglichen Clients 807
Authentifizierung 808
Transport Layer Security (TLS)/Secure Socket Layer (SSL) 809
Server für Nicht-HTTP-Protokolle 811
Virtuelle Verzeichnisse im IIS 811
IIS-Anwendungen 813
Rahmenbedingungen einer IIS-Anwendung 813
Anlegen einer IIS-Anwendung 814
IIS-Anwendungspools 815
Eigenschaften eines Anwendungspools 815
Liste der Anwendungspools 816
Zuordnung von Websites und IIS-Anwendungen zu Anwendungspools 816
ASP.NET-Version 817
Erweiterte Einstellungen für Anwendungspools 818
Anwendungspoolidentität 819
Wiederverwendung (Recycling) 819
Leistungseinstellungen 820
Zustandsüberwachung 821
Besonderheiten für ASP.NET-Anwendungen 821
IIS-Autostart 821
IIS-Verarbeitungspipeline 824
Kapitel 20 - Microsoft Azure 827
Azure-Konzepte 827
Anlegen einer Subscription 828
Anlegen einer Ressource Group 828
Anlegen eines App Service Plans 829
Anlegen eines Azure App Service 830
Anlegen eines Azure App Service mit der PowerShell 833
Kapitel 21 - Verteilen von Webanwendungen aus Visual Studio heraus 835
Web Deploy-Werkzeug 835
Web Deploy in einen IIS-Webserver 836
Web Deploy nach Azure 838
Konfigurationstransformationen 839
Erstellen der Transformationsdateien 839
Syntax der Transformationsdateien 839
Ergebnis der Transformation 841
Continuous Integration und Continuous Delivery 841
Kapitel 22 - Webanwendungen in Docker 843
Docker auf Windows 843
Installation der Docker-Unterstützung von Microsoft 845
Installation von Docker for Windows 847
Ein Image beschaffen 848
Einen Container starten 849
Ein Visual-Studio-Container-Projekt erstellen 850
Debugging eines Containers 851
Verwendung des Containers 851
Images aus Containern erstellen 855
.NET Core-Container 855
Container in Windows Server 2016 hosten 858
Images verbreiten 859
Teil F - Fallbeispiel: MiracleList 863
Kapitel 23 - Das Fallbeispiel »MiracleList« 865
Das Szenario 865
Links 868
Kapitel 24 - Das MiracleList-Backend 869
Architektur 871
Entitätsklassen 874
Entity Framework Core-Kontextklasse 876
Lebensdauer der Kontextklasse in ASP.NET Core- Anwendungen 877
Geschäftslogik 878
Web API 887
Kapitel 25 - MiracleList-Web-Client 899
Technikeinsatz im Web-Client 899
Angular-CLI 900
Webserver starten 902
Zusatzkomponenten 903
Proxy für REST-Dienste 904
Daten darstellen 905
Navigation zu den Aufgaben 907
Datumsanzeigen 910
Zeilenumbrüche 912
Aufgabenstatus ändern 912
Aufgaben anlegen 915
Suchfunktion 916
Komponentenbildung 917
Schritt 1: Routing-Modul 919
Schritt 2: Kommunikationsdienst 919
Schritt 3: Teilaufgabenliste in SubTaskList-Komponente 920
Schritt 4: Auslagerung in TaskView 922
Schritt 5: Aufgaben bearbeiten 924
Schritt 6: Integration in AppComponent 925
Datepicker 926
Kontextmenü verwenden 927
Nachfragen beim Löschen 930
Animationen 931
Sortieren der Aufgabenliste 932
Benutzeranmeldung 933
Hauptmenü 935
Testen 936
Auslieferung 939
Kapitel 26 - MiracleList-Electron-Client 941
Hybride Apps 942
Architektur von Electron 942
Electron-Projekt anlegen 943
Kommunikation zwischen Main und Renderer 952
Erweiterungen in der Webanwendung 952
Start der Electron-Anwendung 955
Debugging 956
Deployment 957
Kapitel 27 - MiracleList-Cordova-Client 959
Architektur von Cordova 960
Cordova-Projekt anlegen 961
Cordova-Anwendung starten 963
Erweiterungen in der Webanwendung 964
Cordova-APIs verwenden 965
Plug-ins verwenden 966
Responsive Web Design mit Bootstrap 969
Index 971
Erscheint lt. Verlag | 1.10.2018 |
---|---|
Reihe/Serie | Animals | Animals |
Verlagsort | Heidelberg |
Sprache | deutsch |
Themenwelt | Mathematik / Informatik ► Informatik ► Programmiersprachen / -werkzeuge |
Schlagworte | ASP.NET • ASP.NET Core • Bootstrap • Client Side Rendering • CSS3 • Docker • HTML5 • HTML-Cross-Plattform-Anwendungen • JavaScript • Microservices • .NET • react • Server Side Rendering • SPAs • Web APIs |
ISBN-10 | 3-96010-258-5 / 3960102585 |
ISBN-13 | 978-3-96010-258-8 / 9783960102588 |
Haben Sie eine Frage zum Produkt? |
Größe: 26,5 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich