Log In
Or create an account -> 
Imperial Library
  • Home
  • About
  • News
  • Upload
  • Forum
  • Help
  • Login/SignUp

Index
Moderne Webanwendungen mit ASP.NET MVC und JavaScript: ASP.NET MVC im Zusammenspiel mit Web APIs und JavaScript-Frameworks Vorwort
Für wen dieses Buch gedacht ist Zielsetzung des Buchs Unterschiede zur ersten Auflage Typografische Konventionen Behandelte Versionen Express-Editionen
Verwendete Programmiersprache
Sprachversion Leserservice Danksagungen Über www.IT-Visions.de Über den Autor Manfred Steyer Über den Autor Dr. Holger Schwichtenberg
1. ASP.NET MVC
Architektur
Model-View-Controller (MVC) Überblick über MVVM (Model-View-ViewModel)
Erste Schritte mit ASP.NET MVC
ASP.NET MVC-Projekt anlegen Modell anlegen Controller anlegen View anlegen Webanwendung testen Einträge editieren Vorschlagswerte über Dropdown-Listenfelder anbieten
Controller
Models entgegennehmen View auswählen Auf Ausnahmen reagieren URL-Mapping beeinflussen (Routing) Asynchrone Controller Vereinfachte Implementierung asynchroner Controller ab .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
Manuelles Validieren Deklaratives Validieren
Validierungsattribute Validierungsattribute in Metadatenklassen auslagern Benutzerdefinierte Validierungsattribute Serverseitige deklarative Validierung Clientseitige Validierung Remotevalidierung Validieren unterbinden
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
2. ASP.NET Web API
REST, WebAPIs und HTTP-Services 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 Routen
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
Einen Handler umsetzen Handler mit HttpClient verwenden
Filter
Überblick Filter umsetzen Filter als Attribute einsetzen Filter über FilterProvider bereitstellen Filter als globale Filter registrieren Interfaces für Filter Authentifizierungsfilter
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 Dateiupload via HTML-Formular
Fortschritt ermitteln Feingranulare Konfiguration
Controllerbasierte Konfiguration Routenbasierte Konfiguration
3. JavaScript-Frameworks
JavaScript als Multiparadigmen-Sprache
Die prozedurale Seite von JavaScript Die funktionale Seite von JavaScript Die objektorientierte Seite von JavaScript
Objekte mit JSON beschreiben Konstruktorfunktionen Objekte als Dictionaries Vererbung Elemente mit Namespaces organisieren Ausgewählte vordefinierte Objekte JSON-basierte Strings Ausnahmen
Die modulare Seite von JavaScript
JavaScript debuggen jQuery
Wrapper-Objekte Selektion von Seitenelementen Ereignisbehandlung mit jQuery Modifizieren von Seitenelementen Animationen AJAX
ASP.NET MVC-Modelle mit jQuery Validate validieren jQuery UI jQuery Mobile
Logische Seiten Dialogfelder Navigationsleisten Formularfelder Listen
Twitter Bootstrap
Bewertung von Bootstrap Von Bootstrap unterstützte Browser Bootstrap-Dateien Aufbau einer Bootstrap-basierten Webseite Bootstrap-Grundlayout Testseite für Bootstrap-Grundlayout Verschachtelung Ausblenden von Inhalten Navigation Formulare Symbole Sprechblasen Abgerundete Grafiken Weitere Möglichkeiten
Offlinefähige Webanwendungen mit HTML 5
Daten im Web Storage speichern Datenbanken im Browser IndexedDB
Mit IndexedDB arbeiten Objekte mit IndexedDB speichern Objekte mit IndexedDB laden Repository einsetzen Daten über Index abrufen IndexedDB nachrüsten Werkzeuge für IndexedDB
Anwendungsdateien im Browser speichern
Aufbau eines Cache-Manifests Cache-Manifest dynamisch erzeugen Cache-Manifest über JavaScript aktualisieren
Asynchronität und Hintergrundprozesse
Mit Promises asynchrone Aufrufe wartbar gestalten Mit Web-Workern Aufgaben in den Hintergrund auslagern
Internationalisierung mit Globalize modernizr TypeScript
Typen und Variablen Funktionen Klassen Strukturelles Sub-Typing Generics Module Ambiente Deklarationen
4. AngularJS
AngularJS herunterladen und einbinden MVC, MVP und MVVM mit AngularJS Erste Schritte mit AngularJS
Definition eines Moduls und Controllers Deklaration der View-Models Datenbindung verwenden
AngularJS näher betrachtet
Direktiven Datenbindung Scopes Dependency-Injection
HTTP-Services via AngularJS konsumieren Angular-Services bereitstellen und konsumieren Filter in AngularJS
Filter verwenden Benutzerdefinierte Filter bereitstellen
Mit Formularen arbeiten
Objekte an Formularfelder binden Form-Controller Eingaben validieren Fehlerhafte Eingaben mit CSS hervorheben Auf Validierungsergebnisse programmatisch zugreifen Benutzerdefinierte Validierungslogiken Steuerelementbibliotheken für AngularJS
Logische Seiten und Routing
Logische Seiten mit ng-switch Routing mit dem Modul ngRoute Routing mit dem externen Modul UI-Router
Verschachtelte Views Mehrere Views pro Vorlage verwenden Parameter übergeben Auf Zustände programmatisch zugreifen
AngularJS-Anwendungen testen
Anatomie eines Jasmine-Tests Der Jasmine-Test-Runner Ein View-Model testen Asynchrone Tests Controller testen HTTP-Zugriffe für Tests mit angular-mock.js simulieren Angular-Services für Tests simulieren Filter testen Direktiven testen
Benutzerdefinierte Direktiven
Eine erste (zu) einfache Direktive Eigener Scope für Direktive Isolierte Scopes Link-Phase Compile-Phase Kommunikation zwischen Direktiven
5. ASP.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
6. Datenzugriff mit Entity Framework
Überblick Mit dem Entity Data Model arbeiten
Entity Data Model anlegen Entity Data Model aus bestehender Datenbank ableiten Entity Data Model einsehen und bearbeiten Entity Data Model nach Datenbankänderungen aktualisieren Datenbank für Database First generieren
Daten abfragen
Auf Entitäten zugreifen Ergebnismenge einschränken und sortieren Ladestrategien
Vorzeitiges Laden – Eager Loading Lazy Loading Benachbarte Objekte nicht laden
Mit Entity SQL auf Datenbanken zugreifen Tracing
Entitäten verwalten
Entitäten einfügen Entitäten aktualisieren Getrennte Objektgraphen aktualisieren Entitäten löschen Konflikte erkennen und auflösen
Optimistische Konflikterkennung Konflikte bei optimistischer Konflikterkennung auflösen Pessimistische Konflikterkennung
Mit Transaktionen arbeiten
Transactionen mit TransactionScope Transaktionen über DbContext steuern
Erweiterte Mapping-Szenarien
Komplexe Typen Enumerationen Vererbung
Polymorphe Abfragen Table per Hierarchy (TPH) Table per Type (TPT) Type per concrete Type (TPC)
Tabellen zu einer Klasse zusammenfassen Klasse auf ausgewählte Datensätze einer Tabelle abbilden Tabelle auf mehrere Klassen verteilen
Mit gespeicherten Prozeduren arbeiten
Gespeicherte Prozeduren zum Erzeugen, Aktualisieren und Löschen verwenden Vollständige Parallelität mit gespeicherten Prozeduren Mit gespeicherten Prozeduren Daten abrufen
Mit nativem SQL arbeiten Codegenerierung anpassen Code First
Erste Schritte mit Code Only Standardkonventionen Konventionen mit Fluent-API überschreiben Konventionen mit Attributen übersteuern Benutzerdefinierte Konventionen bei Code First
Konfigurationskonventionen (Configuration Conventions) Modellbasierte Konventionen
Code First und Stored Procedures
Konventionen für das Abbilden von Entitäten auf Stored Procedures Vollständige Parallelität beim Einsatz von Stored Procedures unter Code First Aus Konventionen ausbrechen
Automatisches Migrieren von Datenbanken
Datenbasierte Dienste mit dem Entity Framework, ASP.NET Web API und OData
Daten mit OData flexibel abfragen Mögliche OData-Abfragen einschränken OData-Abfragen global aktivieren OData-Abfragen manuell auswerten Daten mit OData verwalten Batching
7. Basisdienste im ASP.NET-Umfeld
Open Web Interface for .NET (OWIN) und Katana
Ideen hinter OWIN Katana Self-Hosting mit Katana
Erste Schritte mit Self-Hosting Self-Hosting von ASP.NET Web API Self-Hosting von ASP.NET SignalR Leichtgewichtiger Webserver für das Self-Hosting
Eigene Middleware-Komponenten implementieren
Eigene Middleware-Komponenten in Form von Klassen bereitstellen Eigene Middleware-Komponenten in Form von Delegaten bereitstellen
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 Zwischenspeicherung Zwischenspeicherung ganzer Seiten (Output-Caching)
Zwischenspeicherungsprofile (Caching Profiles)
Caching von Seitenteilen (Fragmentzwischenspeicherung) Programmatisches Caching Cacheinvalidierung
Cacheinvalidierung durch die Datenbank Cache Invalidation bei Microsoft SQL Server 7.0 und 2000
Beispiel auf Ebene von Action-Methoden: Beispiel für die programmatische Anwendung:
Cacheinvalidierung bei Microsoft SQL Server ab Version 2005
8. Sicherheit
Gesicherte Übertragung mit SSL/TLS
SSL für ein Webprojekt in IIS konfigurieren Digitale Zertifikate für Entwicklung ausstellen SSL für Self-Hosting-Szenarien konfigurieren SSL und Clients
Zugang zu Action-Methoden beschränken Windows-Sicherheit unter Verwendung von HTTP-basierter Authentifizierung
HTTP-Sicherheit in IIS konfigurieren HTTP-Sicherheit in ASP.NET konfigurieren Windows-Sicherheit bei Self-Hosting Windows-Sicherheit mit HttpClient
Mit Clientzertifikaten arbeiten
IIS konfigurieren In Service auf Clientzertifikat zugreifen Client für Authentifizierung mittels Clientzertifikat vorbereiten
Sicherheitszenarien mit ASP.NET Identity und Katana
Überblick über ASP.NET Identity
ASP.NET Identity verwenden Überlegungen zur Implementierung eines eigenen UserStores
Formularbasierte Authentifizierung mit Katana
Überblick über die CookieAuthenticationMiddleware vor dem Hintergrund formularbasierter Authentifizierung CookieAuthenticationMiddleware für formularbasierte Authentifizierung konfigurieren Benutzer anmelden Benutzer abmelden Claims in Action-Methoden verwenden
Authentifzierung mit externen Identitätsanbietern, wie Google oder Facebook mit Katana
Middleware registrieren Registrierte Login-Provider abrufen Authentifizierung durch externen Login-Provider veranlassen Weiterführende Konfigurationsmöglichkeiten
Benutzerdefinierte Authentifizierungs-Middleware-Komponenten mit Katana entwickeln
Überblick über Authentifizierungs-Middleware-Komponenten Benutzerdefinierte Implementierung von HTTP BASIC
Umsetzung einer Middleware für HTTP BASIC Einsatz als passive Authentifizierungs-Middleware
Kommunikation zwischen Anwendungscode und Middleware-Komponenten Kommunikation zwischen Authentifizierungs-Middleware-Komponenten
Single-Sign-On und weiterführende Szenarien mit OAuth 2.0, OpenID Connect und Katana
OAuth 2.0
Rollen Access- und Refresh-Token Single-Sign-On mit OAuth 2 und OpenID Connect JSON-Web-Token Flows
Authorization Code Grant-Flow Implicit Grant-Flow Resource Owner Password Credentials Grant Client Credentials Grant
Eine OAuth 2.0-Implementierung mit ASP.NET MVC 5 und ASP.NET Web API 2
Katana-Middleware-Komponenten für OAuth 2.0 registrieren Datenformate Einen OAuthAuthorizationServerProvider für den Resource Owner Password Credentials Grant implementieren Den Resource Owner Password Credentials Grant testen Neues Access-Token mit Refresh-Token anfordern Via OpenID Connect ein Identitäts-Token ausstellen Serviceaufrufer mit einem über OpenID Connect ausgestellten JWT authentifizieren Authorization Code Grant und Implicit Grant implementieren Weiterführende Überlegungen zur Authentifizierung des Benutzers beim Einsatz des Authorization Code Grants sowie Implicit Grants Access-Token über Authorization Code Grant anfordern Access-Token über Implicit Grant anfordern Katana-Middleware für Single-Sign-On über Authorization Code Grant und OpenID Connect realisieren Federated Security mit dem JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants Implementierung des JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants zur Realisierung von Verbundsicherheit Authentifizieren von JavaScript-Clients mit OAuth 2.0 JavaScript-Client mit Resource Owner Password Credentials Grant authentifizieren JavaScript-Client mit Implicit Grant authentifizieren
Single-Sign-On mit WIF
Verweis auf STS einrichten Konfigurieren von ASP.NET-Projekten für den Einsatz mit WIF Übermittelte Claims prüfen Programmatisches Anfordern einer Anmeldung Sitzungscookie für Claims erstellen
9. ASP.NET MVC und ASP.NET Web API erweitern
ASP.NET MVC erweitern
DependencyResolver ModelBinder
ModelBinder anpassen Validierende Modellbindung ModelBinder auf traditionellem Weg registrieren ModelBinder über DependencyResolver bereitstellen
ValueProvider
Benutzerdefinierter ValueProvider ValueProvider mit ValueProviderFactories erzeugen ValueProviderFactory über DependencyResolver bereitstellen
ModelValidatorProvider
Benutzerdefinierter ModelValidatorProvider ModelValidationProvider auf traditionellem Weg bereitstellen ModelValidationProvider über DependencyResolver bereitstellen
MetadataProvider
Ein einfacher MetadataProvider MetadataProvider auf traditionellem Weg registrieren MetadataProvider über DependencyResolver bereitstellen Benutzerdefinierte Metadaten Performanceverbesserung durch das Zwischenspeichern von Metadaten
View-Helper
View-Helper bereitstellen Benutzerdefinierte View-Helper aufrufen Mit View-Helper auf Modell zugreifen
Basisklasse für Razor-Views ändern Action-Methoden mit ActionMethodSelectorAttribut auswählen
Benutzerdefinierte ActionMethodSelectorAttribut-Implementierungen bereitstellen ActionMethodSelectorAttribute anwenden
ActionNameSelectorAttribute Controller mit ControllerFactory auswählen
Benutzerdefinierte ControllerFactory ControllerFactory auf traditionellem Weg registrieren ControllerFactory und DependencyResolver
View-Engine
Benutzerdefinierte Pfade für Views mit benutzerdefinierter View-Engine View-Engine auf traditionellem Weg registrieren View-Engine über DependencyResolver bereitstellen Benutzerdefiniertes Rendering mit benutzerdefinierter View-Engine
Benutzerdefiniertes ActionResult
ASP.NET Web API erweitern
Abhängigkeiten auflösen mit benutzerdefiniertem DependencyResolver Methodenparameter auf benutzerdefinierte Weise mit HttpParameterBinding binden Zusätzliche Assemblies mit AssembliesResolver laden Service-Operationen über HttpActionSelector auswählen Controller über HttpControllerSelector auswählen
10. Testbare Systeme mit Dependency-Injection
Fallbeispiel ohne Dependency-Injection
Implementierung mit ASP.NET MVC Komponententests (engl. Unit Tests) Diskussion der betrachteten Lösung
Fallbeispiel mit Dependency-Injection
Implementierung der Webanwendung Brückenschlag zwischen ASP.NET MVC und Unity Testen
Zusammenfassung und Fazit
Stichwortverzeichnis Impressum
  • ← Prev
  • Back
  • Next →
  • ← Prev
  • Back
  • Next →

Chief Librarian: Las Zenow <zenow@riseup.net>
Fork the source code from gitlab
.

This is a mirror of the Tor onion service:
http://kx5thpx2olielkihfyo4jgjqfb7zx7wxr3sd4xzt26ochei4m6f7tayd.onion