Inhaltsverzeichnis | 5 |
Vorwort | 11 |
1CLR und Sprachsyntax (C#/Visual Basic) | 13 |
1.1.NET Framework 4.5.1 und 4.5.2 erkennen | 13 |
1.2.NET Framework 4.6 erkennen | 15 |
1.3Den Large Object Heap komprimieren | 16 |
1.4C# 6.0 und Visual Basic 14 in älteren .NET-Projekten nutzen | 18 |
1.5Einsatz der dynamischen Typisierung in C# | 19 |
1.6Kovarianz (Covariance) in C# | 22 |
1.7Kontravarianz (Contravariance) in C# | 24 |
1.8Ko- und Kontravarianz in Visual Basic .NET | 26 |
1.9Null-conditional Operator in C# 6.0 und Visual Basic 14 | 26 |
1.9.1Motivation | 26 |
1.9.2Der neue Null-conditional Operator | 28 |
1.9.3Null-conditional Operator und Ereignisse | 28 |
1.9.4Null-conditional Operator und Indexer | 29 |
1.10String-Interpolation in C# 6.0 und Visual Basic 14 | 29 |
1.11Operator „nameof“ in C# 6.0 und Visual Basic 14 | 30 |
1.12Exception-Filter in C# 6.0 | 32 |
2.NET Framework Class Library (FCL) | 35 |
2.1ExpandoObject | 35 |
2.2Prüfung auf 64 Bit | 35 |
2.3BigInteger | 36 |
2.4Standortermittlung | 37 |
2.5Interprozesskommunikation mit Memory-mapped Files | 38 |
2.6Auf Textdateien mittels LINQ zugreifen | 39 |
2.7Erweiterungsmethode „String.Truncate()“ | 40 |
2.8Erweiterungsmethoden „String.ToDateTime()“, „ToInt32()“, „ToDecimal()“ | 41 |
2.9Eine einfache Objektausgabefunktion für alle .NET-Objekte | 45 |
2.10Zugriff auf COM-Bibliotheken ohne Primary Interop Assemblies (NoPIA) | 50 |
2.11Übertragen von Daten zwischen Streams | 50 |
2.12Enums und Bitmasken | 51 |
2.13Caching mit „System.Runtime.Caching“ | 52 |
2.14Caching-Datenmenge begrenzen | 53 |
2.15Caching ganz einfach per Cachemanager | 55 |
2.16Verzögertes Instanziieren mit Lazy | 63 |
2.17Tuples | 65 |
2.18SortedSet | 67 |
2.19Observer | 68 |
2.20API-basierte Konfiguration in MEF 2 | 71 |
2.21„InnerException“-Ausgabe ohne Stacktrace | 75 |
2.22Dateien mit ZIP komprimieren | 77 |
2.23Den angemeldeten Benutzer ermitteln | 80 |
2.24Eigenschaften eines Benutzerkontos ändern | 82 |
2.25Benutzerinformationen auslesen | 85 |
2.26 Ein neues Benutzerkonto anlegen | 89 |
3ADO.NET und Entity Framework | 93 |
3.1Abgebrochene Datenverbindung automatisch neu aufbauen | 93 |
3.2Ladeoptimierung durch Abfragen ohne Änderungsverfolgung (No-Tracking Queries) | 97 |
3.3Objekte löschen, ohne sie vorher zu laden | 100 |
3.4Setzen des Concurrency Mode für alle Spalten in der EDMX-Datei | 101 |
3.5Setzen des Concurrency Mode für alle Spalten bei Code-based Modeling | 103 |
3.6Entity Framework Logging | 108 |
3.7Entity Framework Profiling | 113 |
3.8Speicheroperationen optimieren | 117 |
3.9Massenoperationen mit Entity Framework | 121 |
3.10UPDATE und DELETE per Lambdaausdruck | 122 |
4Windows Management Instrumentation (WMI) | 125 |
4.1Liste der verfügbaren Laufwerke | 125 |
4.2Füllstand der Laufwerke auflisten | 127 |
4.3Computer neustarten | 128 |
4.4Laufwerksname ändern | 130 |
4.5Computer umbenennen | 131 |
4.6Hardware auflisten | 132 |
5ASP.NET Web Forms und MVC | 135 |
5.1C# 6 und Visual Basic 14 in ASP.NET-Webseiten verwenden | 135 |
5.2Tipps zur Leistungssteigerung in ASP.?NET Web Forms | 136 |
5.3Leistungssteigerung durch Seiten-Caching | 137 |
5.3.1Caching-Profile in der „web.config“-Datei | 141 |
5.3.2Caching einzelner Steuerelemente | 141 |
5.4Asynchrone Controller in ASP.NET MVC | 143 |
5.5Minification und Bundling | 144 |
5.6In ASP.NET 4.x wie in ASP.NET 3.5 rendern | 146 |
5.7HTML Encoded Code Expressions in ASP NET 4.0 | 147 |
5.8Vorlagen für Felder und Models in ASP.?NET MVC | 149 |
5.9Razor Helper für Views ASP.NET MVC | 151 |
5.10Views für mobile Anwendungen in ASP.?NET MVC | 152 |
5.11ASP.NET-MVC-Modelle mit jQuery Validate validieren | 154 |
5.12Sprach- und Ländereinstellungen für ASP NET MVC festlegen | 157 |
5.13Bei ASP.NET MVC 4 Seiten über Google, Facebook, Twitter und Co. anmelden | 159 |
5.14Pipelinemodule für Querschnittsfunktionen in ASP.NET SignalR | 162 |
6Windows Communication Foundation (WCF) | 165 |
6.1Kerberos vs. NTLM | 165 |
6.2Antwortformat bei REST-Services dynamisch festlegen | 166 |
6.3Bandbreite mit „EmitDefaultValue=false“ sparen | 167 |
6.4Lebensdauer von Sessions beeinflussen | 169 |
6.5Fehlerdetails bei WCF Services anzeigen | 170 |
6.6Hilfeseite für REST-Services | 172 |
6.7Anpassung der Serialisierung von String-Listen mit „CollectionDataContractAttribute“ | 172 |
6.8Leistungsindikatoren für WCF-Services | 174 |
6.9Einfluss auf den Mengentyp im Proxy | 175 |
6.10Port Sharing bei TCP-basierten Services | 176 |
6.11UDP Binding und Multicasts in WCF 4.5 | 178 |
6.12Erweiterbare Datenverträge | 180 |
6.13Programmatische Impersonation | 181 |
6.14Kompression bei binärer Kodierung in WCF 4.5 | 181 |
6.15Deklarative Impersonation | 182 |
6.16Impersonation für alle Operationen festlegen | 183 |
6.17Vereinfachte Codekonfiguration in WCF 4.5 | 183 |
6.18Unterstützung für mehrere Authentifizierungsarten pro Endpunkt in WCF 4.5 | 186 |
7WCF Data Services | 189 |
7.1Schnell erstellte CRUD Web Services mit WCF Data Services | 189 |
7.2Fehlermeldungen aktivieren | 193 |
7.3Zugriffsrechte einschränken | 194 |
7.4Datenmengenbeschränkungen aktivieren | 197 |
7.5Serverseitiges Paging | 198 |
7.6Zeilen zählen | 200 |
7.7Individuelle Dienstoperationen | 201 |
7.8Individuelle generische Dienstoperationen | 204 |
7.9Hosting eines WCF Data Service in eigenen Anwendungen | 206 |
8ASP.NET Web API | 207 |
8.1ASP.NET Web API ohne IIS verwenden | 207 |
8.2JSON-Serialisierung bei ASP.NET Web API anpassen | 208 |
8.3Zirkuläre Referenzen mit ASP.NET Web API serialisieren | 210 |
8.4Clientseitige Proxies für Web APIs generieren | 213 |
8.5Web APIs mit Swagger dokumentieren | 215 |
8.6Swashbuckle zur Generierung von Dokumentationen für Web APIs konfigurieren | 217 |
8.7ASP.NET Web API: Fortschritt ermitteln | 220 |
8.8Tracing in ASP.NET Web API | 221 |
8.9Controllerbasierte Konfiguration in ASP.?NET Web API | 224 |
8.10Routenbasierte Konfiguration | 225 |
8.11SSL mit ASP.NET Web API ohne IIS nutzen | 226 |
8.12OData mit ASP.NET Web API | 227 |
9AngularJS | 229 |
9.1Unterstützung für ECMAScript 6 Promises in AngularJS ab 1.3 | 229 |
9.2Verschachtelte Formulare mit AngularJS validieren | 230 |
9.3Mit AngularJS auf unsichere Eingaben reagieren | 233 |
9.4Validierungsfehler komfortabel mit AngularJS und ngMessages anzeigen | 236 |
10Windows Presentation Foundation (WPF) | 239 |
10.1Wartecursor anzeigen | 239 |
10.2Eigene Cursorgrafiken | 242 |
10.2.1Cursorgrafiken erstellen | 242 |
10.2.2Cursordateien zuweisen | 243 |
10.2.3Multi-Image-Cursordateien für High-DPI-Displays | 243 |
10.3Fenster via ViewModel öffnen und manipulieren | 245 |
10.4WPF-View an beliebige Methoden in ViewModel binden | 247 |
10.5Windows-7-Integration bei WPF | 250 |
10.5.1Vorschaufenster | 250 |
10.5.2Schaltflächen im Vorschaufenster (Thumbnail-Buttons) | 251 |
10.5.3Symbole und Fortschrittsanzeige in der Taskleiste | 252 |
11Visual Studio und andere Werkzeuge | 255 |
11.1Codewiederverwendung mit Portable Class Libraries (PCLs) | 255 |
11.2Den Überblick bei langen Fehlerlisten behalten | 259 |
11.3Fehlerschlangenlinien im Projektmappen-Explorer | 260 |
11.4Webseitenprobleme mit dem Page Inspector analysieren | 261 |
11.5Copy-and-Paste-Entwicklung entlarven | 263 |
11.6Metadaten mit Code Lens | 265 |
11.7Rückgabewerte im Visual-Studio-Debugger analysieren | 265 |
11.8Schneller Webseiten in vielen Browsern mit Browser Link überprüfen | 266 |
11.9Festen HTTP-Port für den ASP.NET Development Server vergeben | 269 |
11.10HTTP-Port für den IIS Express ändern | 270 |
11.11Visual Studio Power Productivity Tools | 273 |
11.12Verbesserter Solution Explorer | 274 |
11.13Verbesserte Registerkartenverwaltung mit Visual Studio 2010 Productivity Power Tools | 275 |
11.14Mit Fiddler sehen, wie Browser und Server kommunizieren | 276 |
11.15Mit „Fiddler“ den Localhost abhören | 279 |
Über die Autoren | 281 |
Stichwortverzeichnis | 283 |