image
image

Zu diesem Buch – sowie zu vielen weiteren O’Reilly-Büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei oreilly.plus+:

www.oreilly.plus

3., aktualisierte Auflage

Moderne Webanwendungen für .NET-Entwickler

Server-Anwendungen, Web APIs, SPAs & HTML-Cross-Platform-Anwendungen mit ASP.NET, ASP.NET Core, JavaScript, TypeScript & Angular

mit Beiträgen von Dr. Holger Schwichtenberg, Jörg Krause, Dr. Joachim Fuchs, Sebastian Kleinschmager und Manfred Steyer

image

Holger Schwichtenberg und Jörg Krause

Lektorat: Ariane Hesse

Bibliografische Information Der Deutschen Nationalbibliothek

ISBN:

Dieses Buch erscheint in Kooperation mit O’Reilly Media, Inc. unter dem Imprint »O’REILLY«. O’REILLY ist ein Markenzeichen und eine eingetragene Marke von O’Reilly Media, Inc. und wird mit Einwilligung des Eigentümers verwendet.

3., aktualisierte Auflage 2018

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.

Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.

Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und deren Folgen.

Inhalt

Vorwort zur 3. Auflage

Warum dieses Buch?

Was ist der Inhalt dieses Buchs?

Welche Voraussetzungen sollten Sie für dieses Buch mitbringen?

Was ist das Ziel des Buchs?

Welche Versionen werden in diesem Buch behandelt?

Welche Programmiersprache wird in diesem Buch verwendet?

Welche Werkzeuge werden in diesem Buch verwendet?

Welche Sprachversion wird in diesem Buch verwendet?

Woher bekommen Sie die Code-Beispiele und die drei Bonuskapitel zu diesem Buch?

Wem ist zu danken?

Die Autoren

Teil AWeb-Basiswissen

1Protokolle, Standards und Konzepte

Standardisierung

RFCs

World Wide Web Consortium (W3C)

European Computer Manufacturers Association (ECMA)

Hypertext Transfer Protocol (HTTP)

Protokollaufbau, Header, Body

Kommandoaufbau

Die HTTP-Statuscodes

Ablauf einer HTTP-Kommunikation

Kopffelder

HTTP 2.0

Ergänzende Standards zu HTTP

Web-Sockets

WebDAV

Simple Mail Transfer Protocol (SMTP) oder Extended SMTP (ESMTP)

File Transfer Protocol (FTP)

REpresentational State Transfer (REST)

Webdienste

Merkmale

REST-Beispiel

URI

HTTP-Methoden für REST

Multipurpose Internet Mail Extensions (MIME)

JavaScript Object Notation (JSON)

Atom Syndication Format (ATOM)

Grenzen von REST: GraphQL und OData

Single Page Application (SPA)

Asynchronous JavaScript and XML (AJAX)

Responsive Web Design (RWD)

2Hypertext Markup Language (HTML)

Grundlagen HTML

Geschichte

XML – Grundlage für HTML

Markup

XML-Dokumente

Verarbeitung

Der Begriff »Markup«

Seitenaufbau

Document Object Model (DOM)

Der Dokumenttyp (Doctype)

Codierungen

HTML5-Seitenstruktur

Elemente der Seite

Textelemente

Fließtextauszeichnung

Verweise

Tabellen

Multimedia und Grafiken

Formulare

Skripte

Interaktive Elemente

Allgemeine und universelle Attribute

id

class

accesskey

contenteditable

contextmenu

dir

draggable

dropzone

hidden

lang

spellcheck

style

tabindex

title

3Cascading Style Sheets (CSS)

Grundlagen

Syntax

Selektor

Elemente (Tags)

ID

Klassen

Attribute

Logische Auswahl

Weitere Selektoren

Das Box-Modell

Bausteine der Box

Zählweise

Ausnahmen

Das Box-Modell in CSS3

Das Flexbox-Modell

Prinzipien

Eigenschaft der Container

Beachtung von Medien

Syntax

Parameter

Der Viewport

Viewport einstellen

Parameter für den Viewport

Einheiten

Absolute Einheiten

Relative Einheiten

4Bootstrap

Einführung in Bootstrap

Neuerungen in Bootstrap 4

Installation

Struktur der CSS-Dateien

Seitenaufbau

Browserunterstützung

ARIA

Optimierung

Hilfsklassen

Reboot

Struktur der Seite

Einführung

Das Rastersystem

Das Flex-Raster

Typografie

Überschriften

Text und Textelemente

Listen

Tabellen

Hilfsklassen

Formulare

Struktur eines Formulars

Eingabeelemente

Schaltflächen

Weitere Bausteine

Symbole

Responsive Bilder

Eingebettete Quellen

Farben und Hintergründe

Ausrichtung von Elementen im Fluss

Inhalte anzeigen und verstecken

Komponenten

Klappmenüs (dropdown)

Werkzeugleisten (toolbar)

Schaltfläche mit Menü (button group)

Navigation (nav, navbar)

Pfadnavigation (breadcrumb)

Seitenweises Blättern (pagination)

Kennzeichnungen (tag)

Großbildleinwand (jumbotron)

Seitenüberschriften (page header)

Meldungen (alert)

Fortschrittsbalken (progress)

Medien (media)

Allgemeine Listen (list group)

Karten (cards)

Aktive Komponenten

Einrichtung und Aktivierung

Die Programmierschnittstelle

Übergänge (transition)

Modale Dialoge (modals)

Klappmenü (dropdown)

Scrollbar-Überwachung (scrollspy)

Angeheftete Navigation (affix)

Umschaltbare Tabulatoren (tab)

Tooltips (tooltip)

Inhaltsüberlagerung (popover)

Meldungen (alert)

Interaktive Schaltflächen (button)

Inhaltseinblendung (collapse)

Bilderkreisel (carousel)

Teil BWebserverprogrammierung mit ASP.NET

5ASP.NET MVC

Geschichte und Verbreitung von ASP.NET

Architektur von ASP.NET MVC

Erste Schritte mit ASP.NET MVC

ASP.NET-MVC-Projekt anlegen

Projektaufbau

Nuget-Pakete

Controller anlegen

View anlegen

Webanwendung testen

Einträge editieren

Vorschlagswerte über Drop-down-Listenfelder anbieten

Controller

Models entgegennehmen

View auswählen

Auf Ausnahmen reagieren

URL-Mapping beeinflussen (Routing)

Asynchrone Controller

Vereinfachte Implementierung asynchroner Controller seit .NET 4.5

Views

Razor

Razor-Helper

Layoutseiten

Partielle Views

Vorlagen für Felder und Models

Views für mobile Anwendungen

Zwischen unterschiedlichen Ansichten wechseln

Minification und Bundling

Models

Metadaten im Model festlegen

HTML-Text übermitteln

Validieren von Benutzereingaben

Globalisierung

Sprach- und Ländereinstellungen festlegen

Über Ressourcedateien mehrsprachige Inhalte bereitstellen

Codierung festlegen

Areas

Filter

Überblick

Umsetzung

Filter auf Controller und Action-Methoden anwenden

Globale Filter

Authentifizierungsfilter

6ASP.NET Web API

Einen einfachen HTTP-Service erstellen

Parameter und Rückgabewerte

HTTP-Services konfigurieren

HTTP-Services mit Fiddler testen

Mehr Kontrolle über HTTP-Nachrichten

Antworten mit HttpResponseMessage beeinflussen

Anfragen als HttpRequestMessage darstellen

HttpRequestMessage und HttpResponseMessage am Beispiel Conditional Get

Antworten über IHttpActionResult zurückgeben

HTTP-Services über HttpClient konsumieren

Routing

Benutzerdefinierte Routen über die Konfiguration festlegen

Attributbasiertes Routing

Weiterführende Schritte mit der Web API

Dynamische Parameter

Tracing

Request Batching

Cross Origin Resource Sharing (CORS)

Validieren

Querschnittsfunktionen implementieren

Message-Handler

Filter

Filterüberschreibungen

Benutzerdefinierte Formate unterstützen

Formatter implementieren

Formatter mit HttpClient verwenden

Serialisierung beeinflussen

JSON-Serializer konfigurieren

XML-Serializer konfigurieren

Eigenschaften von der Serialisierung ausschließen

Zirkuläre Referenzen serialisieren

Binary JSON (BSON)

Web API und HTML-Formulare

Einfache Formularfelder übermitteln

Datei-Upload via HTML-Formular

Fortschritt ermitteln

Feingranulare Konfiguration

Controllerbasierte Konfiguration

Routenbasierte Konfiguration

7ASP.NET SignalR

Long-Polling

Web-Sockets

Überblick über ASP.NET SignalR

PersistentConnection

Erste Schritte mit SignalR und PersistentConnection

Lifecycle-Methoden

URL-Mapping für persistente Verbindungen

Einfacher Client für eine persistente Verbindung

Einfacher JavaScript-Client für eine persistente Verbindung

Hubs

Methoden und Callbacks mit SignalR und Hubs

URL-Mapping für Hubs

Lifecycle-Methoden

Hubs konsumieren

Hubs über JavaScript konsumieren

Gruppen

Pipeline-Module für Querschnittsfunktionen

SignalR konfigurieren

Cross Origin Resource Sharing (CORS)

SignalR skalieren

Überlegungen zum Skalieren von SignalR

SignalR mit SQL Server skalieren

Implementierung eines SignalR-Clients

Das Skalierungsszenario testen

Azure Service Bus und Redis als Alternative zu SQL Server

8ASP.NET-Programmierschnittstellen

Direkt mit HTTP interagieren

HttpContext

Server (HttpServerUtility)

Request (HttpRequest)

Response (HttpResponse)

Zustandsverwaltung auf Sitzungsebene

Überblick

Weitere Optionen

Programmieren mit dem Sitzungszustand

URL-basierte Sitzungsverwaltung ohne Cookies

Konfiguration des Sitzungszustands

Speicherort der Sitzungstabelle wählen

Komprimierung des Sitzungszustands

Deaktivieren des Sitzungszustands

Caching

Überblick

Pro und Contra der Zwischenspeicherung

Zwischenspeicherung ganzer Seiten (Output-Caching)

Caching von Seitenteilen (Fragmentzwischenspeicherung)

Programmatisches Caching

Cacheinvalidierung

Teil CWebserverprogrammierung mit ASP.NET Core

9Einführung in ASP.NET Core

Klassisches ASP.NET oder ASP.NET Core?

Einführung in die Core-Welt

.NET Standard

Windows Compatibility Pack für .NET Core

Open Source

Dokumentation

Werkzeuge

Kommandozeilenwerkzeug dotnet

Editoren

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

Installation

Projekt anlegen

Projektaufbau

Die Klasse Program

Klasse Startup und Middleware

Referenzen/Pakete

Übersetzen und Debugging

Deployment

ASP.NET Core auf dem klassischen .NET Framework

Einsatzszenarien

Anlegen von ASP.NET-Core-Projekten mit dem klassischen .NET Framework

Projektaufbau

Referenzen/Pakete

Deployment

In ASP.NET Core integrierte Webserver: Kestrel versus HTTP.sys (WebListener)

Kestrel

HTTP.sys

10ASP.NET Core MVC und Razor Pages

POCO-Controller

Controller und View

Tag Helper

Wie funktionieren Tag Helper?

Eingebaute Tag Helper

Eigene Tag Helper

Beispiel: Tag <autor>

Beispiel: Tag <row>

Beispiel: Tag <condition>

Beispiel: Tag <repeater>

View Components

Razor Pages

Von Webforms über MVC zu Razor Pages

Razor Pages versus MVC

Page Model als Code-Behind

URL-Parameter

Eingebaute Objekte

Datenbindung

Praxisbeispiel zu Razor Pages

Drittanbieterkomponenten für ASP.NET Core

11ASP.NET-Core-Klassenbibliotheken

Dependency Injection in ASP.NET Core

Implementierung eines Diensts

Registrierung von Diensten

Injektion in einen Konstruktor

Manuelle Beschaffung

Injektion in eine View

Vordefinierte Dienste der ASP.NET-Core-Infrastruktur

Konfiguration in ASP.NET Core

Sitzungen in ASP.NET Core

Cookies

URL-Rewriting in ASP.NET Core

Benutzerverwaltung und Authentifizierung

12ASP.NET Core Web APIs

Die Grundlagen von ASP.NET Core Web API

Abfragen von Daten

Arbeiten mit Statuscodes

Anlegen, Aktualisieren und Löschen von Daten

Nutzung von Sub-Routen für Teil-Ressourcen

Nutzung weiterer Model-Binding-Funktionen

Anbieten unterschiedlicher Repräsentationen von Ressourcen

Nutzung des PATCH-Verbs mit JSON-Patch

Cross Origin Resource Sharing

Bereitstellung von OpenAPI-Beschreibungen über Swagger

Starten von Hintergrundprozessen über IHostedService

Integrationstests mithilfe des TestHosts

Service-Kommunikation mit HttpClient

Abfragen von Daten

Versenden von Daten und Reaktion auf Statuscodes

Arbeiten mit Headern und HttpRequestMessage

Generieren von Clients für Swagger-Spezifikationen

Ausblick auf Neuerungen durch ASP.NET Core 2.1

Annotation [ApiController]

ActionResult<T>-Rückgabewerte

Optimierte Input-Verarbeitung

13Microservices mit ASP.NET Core Web API und RabbitMQ

Grundlagen von Microservices

Mögliche Vorteile von Microservices

Mögliche Nachteile von Microservices

Modellierung von Microservices

Integration und Kommunikation von Microservices

Synchrone und asynchrone Kommunikation

Messaging-basierte versus Request-Response-Kommunikation

Gesteuerte (orchestriert) versus Event-getriebene Kommunikation (choreografiert)

.NET-Core-Technologien zur Umsetzung von Service-Kommunikation

Asynchrone Service-Kommunikation über RabbitMQ

Microservices-Fallstudie

Umgebung und fachlicher Kontext

Der HumanResourcesService

Der ProjectsService

Der ManagementDashboardService

Der InvoicingService

Fazit

Nützliche Patterns und Best-Practices im Bereich Microservices

Resilienz-Patterns

Serviceübergreifender Code und serviceübergreifende Funktionen

14ASP.NET Core SignalR

Hub-Klassen

Hub-Client mit .NET Core 2.1

Hub-Client mit Angular

Serverseitig initiierte Benachrichtigungen und Gruppen

Teil DWeb-Client-Programmierung

15JavaScript-Grundlagen

Grundlagen der Sprache

Sprachmerkmale und Entwurfsmuster

Vergleich mit Programmiersprachen

JavaScript-Syntax

Typen

Objekte

Symbole

Arrays

Operatoren

Anweisungen – Statements

Fehlerbehandlung

Variablen und Scope

Objektorientierung

Erstellen von Objekten

Klassen

Statische Mitglieder

Vererbung

Exkurs Objekthierarchie

Ableiten von internen Typen

Tipps zum Umgang mit objektorientierten Techniken

Globale Standardfunktionen

Timer-Funktionen

Prüffunktionen

Konvertierungsfunktionen

Module

Entwurfsmuster

Module

Funktionen

Pfeilfunktionen (Lambdas)

Erweiterte Objektliterale

Destrukturierung

Umgang mit Argumenten

Generatoren und Iteratoren

Asynchrone Programmierung

Klassische asynchrone Programmierung

Promise

Set und Map

Set

Map

Schlüsselvergleiche

Iteratoren

WeakMap und WeakSet

Reguläre Ausdrücke

Einführung

Kopieren oder Konstruieren?

Und wie funktioniert das?

Gruppierungen

Vorwärtsreferenzen

Die JavaScript-Funktionen

Zusammenfassung

Reflektions-API

Einfache Methoden

Reflect

Erzeugerfunktionen

Operatoren für Schlüsselwörter

Dynamische Argumentlisten

Funktionsaufrufe

Proxy-Fallen

Zusammenfassung der Reflect-Methoden

Stellvertreter: Proxies

Einführung

Proxy-Fallen anwenden

Schemaprüfung mit Proxies

Entfernbare Proxies

Übersicht

16TypeScript

Geschichte von TypeScript

Open-Source-Projekt

TypeScript-Compiler

Übersetzung von TypeScript in JavaScript

TypeScript Playground

TypeScript in Visual Studio

TypeScript-Kommandozeilencompiler tsc

TypeScript in Visual Studio Code

TypeScript in Gulp

Datentypen

Arrays und Tupel

Klassen

Generische Klassen

Strukturelle Typäquivalenz (Duck Typing)

Funktionen und Lambda-Ausdrücke

Dekoratoren

Module und Verweise

TypeScript ohne externes Modulsystem (interne Module)

Externe Module

Re-Export

Deklarationsdateien

Einbindung von Deklarationsdateien (altes Verfahren)

Import von Deklarationsdateien

Deklarationsdateien und tsconfig.js

Mixins

Mixin-Konstruktortypen

Deklaratives Mischen

Module mischen

Nicht mögliche Vermischungen

Reflektion: Metadaten per Programmcode

Die Metadaten-API für Reflektion

Ermitteln von Typinformationen

Ermitteln von Parameterinformationen

Ermitteln von Rückgabeinformationen

Asynchrone Programmierung

Generatoren und Iteratoren

Iteratoren

Generatoren

Asynchrone Iteration

Asynchrone Generatoren

17Angular

Ziele und Architektur von Angular

Browserunterstützung

Veröffentlichungszyklus von Angular

Dokumentation

Beispielsammlung

Komponenten

Datenbindung und Pipes

Syntaxübersichten

Strukturelle Direktiven

Datenbindungssyntax

Angular-Pipes

Module

Formulare

Routing

Dienste und Dependency Injection

Animationen

Werkzeuge

JiT vs. AOT

Angular Universal

18ASP.NET Blazor

Silverlight wurde eingestellt

Web Assembly

Architektur von Blazor

Erste Schritte mit ASP.NET Blazor

Beispielprojekt

Weitere Möglichkeiten

Ausblick

Teil EHosting von ASP.NET und ASP.NET Core

19Internet Information Services (IIS)

Versionsgeschichte

Kernfunktionen des IIS

Installation des IIS

Modularisierung

Skriptbasierte Installation

Integration zwischen ASP.NET und IIS

Test der Installation

IIS Express

IIS-Administration

IIS-Manager

Administration per Kommandozeile und Skript

IIS-Websites (virtuelle Webserver)

Websites erstellen

Websites erstellen per Skript

Wichtige Einstellungen für Websites

Beschränken der möglichen Clients

Authentifizierung

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

Server für Nicht-HTTP-Protokolle

Virtuelle Verzeichnisse im IIS

IIS-Anwendungen

Rahmenbedingungen einer IIS-Anwendung

Anlegen einer IIS-Anwendung

IIS-Anwendungspools

Eigenschaften eines Anwendungspools

Liste der Anwendungspools

Zuordnung von Websites und IIS-Anwendungen zu Anwendungspools

ASP.NET-Version

Erweiterte Einstellungen für Anwendungspools

Anwendungspoolidentität

Wiederverwendung (Recycling)

Leistungseinstellungen

Zustandsüberwachung

Besonderheiten für ASP.NET-Anwendungen

IIS-Autostart

IIS-Verarbeitungspipeline

20Microsoft Azure

Azure-Konzepte

Anlegen einer Subscription

Anlegen einer Ressource Group

Anlegen eines App Service Plans

Anlegen eines Azure App Service

Anlegen eines Azure App Service mit der PowerShell

21Verteilen von Webanwendungen aus Visual Studio heraus

Web Deploy-Werkzeug

Web Deploy in einen IIS-Webserver

Web Deploy nach Azure

Konfigurationstransformationen

Erstellen der Transformationsdateien

Syntax der Transformationsdateien

Ergebnis der Transformation

Continuous Integration und Continuous Delivery

22Webanwendungen in Docker

Docker auf Windows

Installation der Docker-Unterstützung von Microsoft

Installation von Docker for Windows

Ein Image beschaffen

Einen Container starten

Ein Visual-Studio-Container-Projekt erstellen

Debugging eines Containers

Verwendung des Containers

Images aus Containern erstellen

.NET Core-Container

Container in Windows Server 2016 hosten

Images verbreiten

Teil FFallbeispiel: MiracleList

23Das Fallbeispiel »MiracleList«

Das Szenario

Links

24Das MiracleList-Backend

Architektur

Entitätsklassen

Entity Framework Core-Kontextklasse

Lebensdauer der Kontextklasse in ASP.NET Core-Anwendungen

Geschäftslogik

Web API

25MiracleList-Web-Client

Technikeinsatz im Web-Client

Angular-CLI

Webserver starten

Zusatzkomponenten

Proxy für REST-Dienste

Daten darstellen

Navigation zu den Aufgaben

Datumsanzeigen

Zeilenumbrüche

Aufgabenstatus ändern

Aufgaben anlegen

Suchfunktion

Komponentenbildung

Schritt 1: Routing-Modul

Schritt 2: Kommunikationsdienst

Schritt 3: Teilaufgabenliste in SubTaskList-Komponente

Schritt 4: Auslagerung in TaskView

Schritt 5: Aufgaben bearbeiten

Schritt 6: Integration in AppComponent

Datepicker

Kontextmenü verwenden

Nachfragen beim Löschen

Animationen

Sortieren der Aufgabenliste

Benutzeranmeldung

Hauptmenü

Testen

Auslieferung

26MiracleList-Electron-Client

Hybride Apps

Architektur von Electron

Electron-Projekt anlegen

Kommunikation zwischen Main und Renderer

Erweiterungen in der Webanwendung

Start der Electron-Anwendung

Debugging

Deployment

27MiracleList-Cordova-Client

Architektur von Cordova

Cordova-Projekt anlegen

Cordova-Anwendung starten

Erweiterungen in der Webanwendung

Cordova-APIs verwenden

Plug-ins verwenden

Responsive Web Design mit Bootstrap

Index

Vorwort zur 3. Auflage

Liebe Leserinnen und Leser,

herzlichen willkommen zur dritten, erheblich erweiterten Auflage dieses Buchs.

Warum dieses Buch?

Das Web hat sich verändert. Während für gute Webanwendungen vor rund zehn Jahren noch die Regel galt, so viele Aufgaben wie möglich auf dem Server zu erledigen (Server Side Rendering), wird heutzutage in vielen Fällen die Benutzeroberfläche auf dem Client gerendert (Client Side Rendering – CSR), sodass eine Single Page Application (SPA) entsteht. Der Webserver kommt oft nur noch für das initiale Laden der SPA und zum Datenaustausch via REST-Diensten (WebAPIs) zum Einsatz. Dank Basistechniken wie HTML5/CSS3, der erweiterten JavaScript-Syntax, und vielen neuen Browser-APIs sowie zahlreichen Frameworks, die die Handhabung einfacher machen, sind heutzutage Webanwendungen möglich, die in ihrer Benutzerfreundlichkeit Desktop-Anwendungen nahekommen.

Mittlerweile werden mit Webtechniken nicht nur Browseranwendungen, sondern auch mobile Apps und Desktop-Anwendungen entwickelt. Die Produktkombination aus HTML, CSS und JavaScript ist die einzige echte Cross-Platform-Technik, die die Entwicklung von Oberflächen für alle Betriebssysteme im Sinne von »Write once, run anywhere« ermöglicht.

Trotz des Trends zur Verlagerung des Renderings auf den Client gibt es weiterhin viele Webanwendungen, bei denen mit Server Side Rendering (SSR) gearbeitet wird.

Was ist der Inhalt dieses Buchs?

Dieses Buch beschreibt sowohl Server- als auch Clienttechniken für moderne Webanwendungen.

Anders als die Vorlagen beginnt das Buch mit einem Buchteil »Web-Basiswissen«, in dem HTTP, HTML und CSS besprochen werden. Diese Ergänzung findet bewusst statt, weil es Leser-Feedback zu den Vorauflagen gab, dass das Buch Vorwissen in diesen Bereichen voraussetzte. Natürlich kann hier nicht das komplette Wissen zu den Basistechniken des Webs abgedruckt werden. Die Basiskapitel von Jörg Krause geben Ihnen aber ein solides Fundament für den Rest des Buchs.

Serverseitig gab es im Jahr 2016 mit dem Erscheinen von ASP.NET Core einen erheblichen Umbruch, den allerdings viele Unternehmen technisch und/oder organisatorisch noch nicht nachvollziehen können. In diesem Buch wird daher auf der Serverseite sowohl das klassische ASP.NET (MVC, Web API, SignalR) im Buchteil B als auch das neue ASP.NET Core (inkl. MVC, Razor Pages und Web API, SignalR) im Buchteil C besprochen. Ein eigenes Kapitel widmet sich der Entwicklung von Microservices inklusive einer umfangreichen Fallstudie.

Im Buchteil D geht es dann um die Client-Programmierung mit JavaScript und TypeScript sowie die derzeit sehr weit verbreiteten Webframeworks Boostrap (von Twitter) und Angular (von Google). Informationen zu React (von Facebook) finden Sie in Kapitel 30, einem der drei Bonuskapitel, die Sie als Ergänzung des Buchs – so wie im Vorwort beschrieben – herunterladen können.

Ein ganz aktuelles Kapitel zu ASP.NET Blazor ergänzt diesen Buchteil. Auch wenn ASP.NET Blazor noch in einem früheren Entwicklungsstadium steckt, weckt es dennoch bei vielen .NET-Entwicklern die Hoffnung, zukünftig mit C# statt mit JavaScript/TypeScript SPAs im Browser programmieren zu können.

Buchteil E behandelt den Betrieb (das »Hosting«) von Webanwendungen in den Internet Information Services (IIS) von Windows, in Docker-Containern und in Microsoft Azure.

Das Buch beschließt den Buchteil F mit einem größeren Fallbeispiel: MiracleList ist eine moderne, auf Webtechniken basierende Cross-Platform-Anwendung zur Aufgabenverwaltung (in Anlehnung an www.wunderlist.com, für das Microsoft im Jahr 2015 einen dreistelligen Millionenbetrag bezahlt hat). Der Server basiert auf ASP.NET Core und läuft auf Windows, Linux oder macOS. Der Client basiert unter anderem auf HTML, CSS, JavaScript, Angular, Electron und Cordova. Er läuft daher sowohl im Browser als auch in Desktop-Anwendungen auf Windows, Linux oder macOS sowie als mobile App in iOS, Android und Windows Mobile.

Welche Voraussetzungen sollten Sie für dieses Buch mitbringen?

Das Buch richtet sich an Softwareentwickler, die bereits grundlegende Erfahrung mit .NET und C# besitzen und nun moderne Webanwendungen entwickeln wollen. Das Buch beinhaltet keine Einführung in .NET und C#, aber es führt in alle notwendigen Webtechniken ein.

Wenn Sie die Programmiersprache C# noch nicht oder noch nicht gut beherrschen, sollten Sie vorab dieses Buch lesen:

image

Holger Schwichtenberg:

C# 7.2 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET Framework, .NET Core und Xamarin.

www.IT-Visions.de, 2018

1. Auflage 2018
167 Seiten, 15,00 €

ISBN: 978-3-93427-930-8

Was ist das Ziel des Buchs?

Zielsetzung dieses Buchs ist es, dem Leser zu zeigen, wie die Techniken eingesetzt werden können, um moderne Webanwendungen zu schaffen. Der Fokus liegt dabei auf den Konzepten, die hinter diesen Techniken stehen. Dazu spielt dieses Buch eine Vielzahl an Beispielen durch.

Es ist nicht Ziel dieses Buchs, ein Nachschlagewerk für die Vielzahl der Sprach- und Syntaxelemente sowie Klassen zu sein. Ein Nachschlagewerk zu all diesen Techniken würde viele Tausend Seiten dick sein. Schon bei der hier vorliegenden Seitenzahl mussten Inhalte gekürzt werden. Auf einige Fakten und Praxisbeispiele, die wir gerne präsentiert hätten, mussten wir daher leider verzichten.

Für eine erschöpfende Auflistung sämtlicher Befehle wird, gerade bei den clientseitigen Technologien, auf die umfangreichen frei verfügbaren Online-Referenzen verwiesen.

Darüber hinaus gehen wir auch davon aus, dass der Leser mit wenig Aufwand herausfinden kann, in welchem Namensraum beziehungsweise in welcher Assembly sich eine erwähnte Klasse befindet, sofern diese nicht ohnehin durch die in Visual Studio verwendeten Vorlagen eingebunden wurde.

Außerdem werden in diesem Buch keine Datenbankzugriffe besprochen. Hierzu sei auf das folgende Buch verwiesen:

image

Holger Schwichtenberg:

Effizienter Datenzugriff mit Entity Framework Core: Datenbankprogrammierung mit C# für .NET Framework, .NET Core und Xamarin.

Carl Hanser Verlag, 2018

468 Seiten, 42,00 €

ISBN: 978-3-446-44898-8

Welche Versionen werden in diesem Buch behandelt?

Das Buch behandelt die zum Redaktionsschluss des Buchs aktuellen stabilen Versionen. Dies sind unter anderem:

Welche Programmiersprache wird in diesem Buch verwendet?

Das vorliegende Buch verwendet serverseitig die Programmiersprache C# sowie clientseitig JavaScript und TypeScript.

Alle Leser, die serverseitig lieber mit Visual Basic .NET arbeiten, können die abgedruckten Beispiele sehr einfach mit kostenlosen Werkzeugen nach Visual Basic .NET konvertieren. Informationen dazu findet man unter http://www.dotnetframework.de/tools.aspx.

Welche Werkzeuge werden in diesem Buch verwendet?

Dieses Buch bezieht sich primär auf die Programmierung mit der integrierten Entwicklungsumgebung Visual Studio. Von Visual Studio kann man eine kostenfreie Community Edition nur in kleineren Firmen und bei Open-Source-Projekten kostenfrei einsetzen (www.visualstudio.com/vs/community). Für die Webclient-Programmierung kommt auch Visual Studio Code (https://code.visualstudio.com) zum Einsatz. Zudem sollten Sie node.js (nodejs.org) installieren, um den Node Package Manager (NPM) zur Verfügung zu haben. Für das Testen von Web APIs wird Postman (www.getpostman.com) und Fiddler (www.telerik.com/download/fiddler) verwendet. Auf weitere Werkzeuge wird in den einzelnen Kapiteln hingewiesen.

Welche Sprachversion wird in diesem Buch verwendet?

Dieses Buch beschreibt die englische Version von Visual Studio, weil inzwischen viele deutsche Entwickler (einschließlich der Autoren) die englische Version der Software bevorzugen, denn die Übersetzungen ins Deutsche sind oft holprig und die Fehlermeldungen nur schwer verständlich. Visual-Studio-Anwender können über den Befehl Tools/Options/Environment/International Settings weitere Sprachpakete herunterladen und einrichten. Weiterhin sei noch darauf hingewiesen, dass die Anordnung der Menüs und auch einige Tastaturkürzel von den gewählten Einstellungen in Visual Studio abhängen. Alle Ausführungen in diesem Buch beziehen sich auf die Umgebungseinstellung Common Settings, die bei der Installation des Produkts ausgewählt werden kann.

Woher bekommen Sie die Code-Beispiele und die drei Bonuskapitel zu diesem Buch?

image

Die Code-Beispiele zu diesem Buch erhalten Sie auf oreilly.de auf der Webseite zum Buch Moderne Webanwendungen für .NET-Entwickler unter »Zusatzmaterial«.

Hier finden Sie außerdem drei zusätzliche Kapitel als PDF zum Download, die dieses Buch inhaltlich abrunden: Kapitel 28 »Open Web Interface for .NET (OWIN) und Katana«, Kapitel 29 »Sicherheit in ASP.NET« sowie Kapitel 30 »React«.

Die Autoren bieten den Leserinnen und Lesern dieses Buchs darüber hinaus im Rahmen einer zugangsbeschränkten Website folgende Serviceleistungen:

image

Abbildung V.1: Der Spickzettel zu ASP.NET (Core) MVC und Web API

Zugang zu der ehrenamtlich betriebenen Leser-Website erhalten Sie unter www.IT-Visions.de/Leser. Dort müssen Sie sich einmalig registrieren. Bei der Registrierung wird ein Losungswort abgefragt, das Sie als Käufer dieses Buchs ausweist. Bitte geben Sie dort Beyond ein. Durch die Registrierung erhalten Sie ein persönliches Kennwort per E-Mail zugesendet, das Sie dann für die Anmeldung nutzen können.

image

Dieses Symbol weist auf eine Warnung oder ein Problem hin.

image

Dieses Symbol markiert einen allgemeinen Hinweis oder Tipp.

Wem ist zu danken?

Für ihre Mitwirkung an diesem Buch möchte ich danken:

Essen im Herzen des Ruhrgebiets, im April 2018

Holger Schwichtenberg

Die Autoren

Über www.IT-Visions.de
image

Alle Autoren dieses Buchs arbeiten bei der Firma www.IT-Visions.de als Softwarearchitekten, Softwareentwickler, Trainer und Berater für .NET-Techniken. www.IT-Visions.de ist ein Verbund der deutschen Top-Experten im Bereich der Microsoft-Produkte und -Technologien insbesondere .NET. Unter Leitung und Mitwirkung von Dr. Holger Schwichtenberg bietet www.IT-Visions.de:

image

Die Schwestergesellschaft 5Minds IT-Solutions GmbH & Co. KG bietet Softwareentwicklung (Prototypen und komplette Lösungen) sowie den Verleih von Softwareentwicklern.

Zu den Kunden gehören neben vielen mittelständischen Unternehmen auch Großunternehmen wie z.B. Siemens, Bayer, RWE, Bertelsmann, BASF, Bosch, Thyssen-Krupp, Merkle, Festo, Lufthansa, AIRBUS, REWE, EnBW, DEA, PwC, Deutsche Telekom, Deutsche Post, Karstadt, eurofins, Roche, OSRAM, Jenoptik, Continental, Carl Zeiss, Haufe-Lexware, TÜV, Sartorius, Fraunhofer, diverse Banken und Versicherungen sowie mehrere Landesregierungen.

Dr. Holger Schwichtenberg
image