Inhalt | 6 |
Geleitwort des Herausgebers | 18 |
Vorwort | 20 |
1 Serviceorientierung | 24 |
1.1 Konzeptionelle Ebene | 24 |
1.1.1 Betriebswirtschaftliche Sicht | 24 |
1.1.2 Technische Sicht | 25 |
1.1.3 Was ist ein Service? | 26 |
1.2 Technische Realisierung | 27 |
1.2.1 SOAP | 27 |
1.2.2 Web Service Description Language (WSDL) | 29 |
1.2.3 Universal Description, Discovery and Integration | 30 |
1.2.4 WS-I | 30 |
1.2.5 WS-* | 31 |
1.2.6 RESTful Web Services als Gegenbewegung zu SOAP | 31 |
1.2.7 POX-Services und Web APIs | 34 |
1.2.8 SOAP und REST im Vergleich | 35 |
1.3 WCF vs. ASP.NET Web API | 36 |
2 WCF im Überblick | 38 |
2.1 Architektur | 38 |
2.2 Standard-Bindings | 39 |
2.3 Hosting von Services | 41 |
2.4 Erste Schritte mit WCF | 42 |
2.4.1 Erstellen eines Web-Service-Projektes | 42 |
2.4.2 Web-Service mit Client konsumieren | 50 |
2.4.3 Mit Laufzeit-Proxy auf Service zugreifen | 54 |
2.4.4 Service zur Verwendung von ws2007HttpBinding konfigurieren | 55 |
2.4.5 NetTcpBinding und Self-Hosting | 56 |
3 Services mit WCF erstellen | 62 |
3.1 Verträge | 62 |
3.1.1 Serviceverträge | 62 |
3.1.2 Datenverträge | 63 |
3.1.3 Nachrichtenverträge | 66 |
3.1.4 SOAP-Binding festlegen | 67 |
3.2 Instanziierung von Services | 67 |
3.2.1 PerCall | 68 |
3.2.2 Single | 69 |
3.2.3 PerSession | 69 |
3.3 Nebenläufigkeit | 74 |
3.4 Asynchrone Service-Operationen | 74 |
3.5 WCF konfigurieren | 75 |
3.5.1 WCF deklarativ konfigurieren | 75 |
3.5.2 WCF programmatisch konfigurieren | 78 |
3.5.3 In IIS gehostete Services programmatisch konfigurieren |
78 |
3.5.4 Benutzerdefinierte Bindings | 80 |
3.5.5 Einschränkungen für Bindings festlegen | 81 |
3.5.6 Drosselung | 82 |
3.5.7 Port-Sharing bei TCP-basierten Services | 83 |
3.5.8 Konfiguration des Proxy-Servers | 84 |
3.6 Metadaten | 85 |
3.7 Services diagnostizieren | 87 |
3.7.1 Protokollierung konfigurieren | 87 |
3.7.2 Leistungsindikatoren | 89 |
3.8 One-Way-Operationen | 90 |
3.9 Duplex-Operationen | 90 |
3.9.1 Unterstützte Bindings | 91 |
3.9.2 Implementierung von Duplex-Szenarien | 92 |
3.9.3 Konfigurieren von Duplex-Szenarien | 93 |
3.9.4 Callbacks mit WebSockets (ab .NET 4.5) | 95 |
3.9.5 Grenzen von Callbacks | 96 |
3.10 UDP und Multicasts (ab .NET 4.5) | 97 |
3.11 Umgang mit binären Daten | 98 |
3.11.1 MTOM | 99 |
3.11.2 Streaming | 103 |
3.12 Fehlerbehandlung und FaultContracts | 106 |
3.13 ASP.NET-Kompatibilität | 108 |
3.14 Zuverlässige Sitzungen | 110 |
3.14.1 Verlässliche Sitzungen konfigurieren | 111 |
3.14.2 Verlässliche Sitzungen erzwingen | 112 |
3.14.3 Idempotente Services als Alternative zu WS-ReliableMessaging | 112 |
3.15 Transaktionale Services | 113 |
3.15.1 Zwei-Phasen-Commit | 113 |
3.15.2 Plug-in für WS-AtomicTransactions einrichten | 113 |
3.15.3 Distributed Transaction Coordinator (DTC) einrichten | 114 |
3.15.4 Transaktionen konfigurieren und nutzen | 115 |
3.15.5 Transaktionsisolationslevel | 117 |
3.15.6 Transaktion am Client starten | 118 |
3.15.7 Transaktionen und Sessions | 118 |
3.16 Queued Services | 119 |
3.16.1 Microsoft Message Queuing Services (MSMQ) | 119 |
3.16.2 Implementierung von Queued Services | 120 |
3.16.3 Queued Services konfigurieren | 121 |
3.17 REST-basierte Services mit WCF | 123 |
3.17.1 REST-Services mit WCF implementieren und konsumieren | 124 |
3.17.2 Antwortformat dynamisch festlegen | 127 |
3.17.3 Hilfe-Seiten (Help Pages) | 128 |
3.17.4 ASP.NET Cache Profiles | 130 |
3.17.5 REST-Services über ASP.NET-Routen | 131 |
3.17.6 Ausnahmen auf HTTP-Statuscodes abbilden | 131 |
3.17.7 Conditional GET und ETag-Unterstützung | 132 |
3.18 WCF und Windows 8 | 133 |
4 Sicherheit von WCF-Diensten | 134 |
4.1 Überblick über WCF-Security | 134 |
4.1.1 Transport- und Nachrichtensicherheit | 134 |
4.1.2 Festlegen der zu verwendenden Credentials | 136 |
4.1.3 Authentifizierung und Autorisierung | 137 |
4.1.4 Service-Identitäten | 139 |
4.1.5 Verschlüsseln und Signieren | 139 |
4.2 Windows-Security | 141 |
4.2.1 Impersonation | 141 |
4.2.2 Kerberos vs. NTLM | 142 |
4.3 Web-Security mit SSL und IIS | 144 |
4.3.1 IIS für die Verwendung von SSL konfigurieren | 144 |
4.3.2 Konfiguration des Service | 148 |
4.3.3 Aufruf der Service-Operation | 149 |
4.3.4 Benutzerdefinierte Authentifizierung und Autorisierung | 149 |
4.4 Web-Security mit SSL ohne IIS | 156 |
4.5 Nachrichtenbasierte Sicherheit | 157 |
4.5.1 Zertifikate einrichten | 157 |
4.5.2 Konfiguration | 158 |
4.5.3 Aufruf der Service-Operation | 160 |
4.6 Client-Zertifikate | 160 |
4.7 Federated und Claims-based Security mit Windows Identity Foundation (WIF) | 162 |
4.7.1 Architektur | 163 |
4.7.2 Web-Service-Standards | 164 |
4.7.3 Implementierung in .NET 4.5 | 164 |
4.7.4 Implementierung für Versionen vor 4.5 | 178 |
5 Lose Kopplung mit WCF | 190 |
5.1 Routing (System.ServiceModel.Routing) | 190 |
5.1.1 Architektur | 191 |
5.1.2 Routerarten | 192 |
5.1.3 Beispielanwendung (Routing Testclient) | 193 |
5.1.4 Filter | 194 |
5.1.5 Erstellen des Routers mit WCF 4.x | 197 |
5.1.6 Konfiguration eines Routers | 197 |
5.1.7 Router für das Routing-Testszenario | 198 |
5.1.8 Entwicklung des Clients | 203 |
5.1.9 Dynamische Filter entwickeln | 204 |
5.1.10 Dynamische Filter mit eigener Filtertabelle | 206 |
5.1.11 Leistungsverlust durch Routing | 210 |
5.2 Discovery | 211 |
5.2.1 Dienst mit Discovery | 211 |
5.2.2 Client mit Discovery | 212 |
5.2.3 Mögliche Services mittels Scopes einschränken | 213 |
5.2.4 Clients für die Verwendung mit Discovery deklarativ konfigurieren | 214 |
5.2.5 Ankündigungen (Announcements) | 215 |
5.3 Ereignisse und Publish-/Subscribe-Szenarien | 217 |
5.3.1 Service-Verträge | 217 |
5.3.2 Implementierung eines Publish-/Subscribe-Service | 218 |
5.3.3 Konfiguration | 220 |
5.3.4 Implementierung des zu benachrichtigenden Clients | 221 |
5.3.5 Weiterführende Überlegungen | 222 |
5.4 ESB-Lösungen mit WCF entwickeln | 222 |
5.4.1 Catch-All-Verträge | 222 |
5.4.2 Nachrichtentransformation | 223 |
5.5 Freie ESB-Implementierung | 227 |
6 ASP.NET Web API | 228 |
6.1 REST-Services mit ASP.NET |
228 |
6.1.1 Parameter und Rückgabewerte | 229 |
6.1.2 Dynamische Parameter | 231 |
6.1.3 REST-Services konfigurieren | 232 |
6.1.4 REST-Services mit Fiddler testen | 233 |
6.1.5 Mehr Kontrolle über HTTP | 234 |
6.1.6 REST-Services über HttpClient konsumieren | 237 |
6.1.7 Hilfe-Seiten | 240 |
6.2 Tracing | 244 |
6.2.1 Standard-Implementierung von ITraceWriter | 244 |
6.2.2 Eigenen TraceWriter implementieren | 245 |
6.3 OData-Unterstützung | 246 |
6.4 Self-Hosting mit Web APIs | 246 |
6.5 Querschnittsfunktionen an globalen Stellen platzieren | 247 |
6.5.1 Querschnittsfunktionen mit Message-Handler implementieren | 248 |
6.5.2 Handler mit HttpClient verwenden | 249 |
6.5.3 Querschnittsfunktionen mit Filter realisieren | 251 |
6.6 Erweiterte Konfigurationsmöglichkeiten | 255 |
6.6.1 Benutzerdefinierte Routen | 255 |
6.6.2 Controller-basierte Konfiguration | 255 |
6.6.3 Routen-basierte Konfiguration | 256 |
6.7 Deklaratives Validieren von Parametern | 257 |
6.7.1 Verwenden von Data-Attributen | 257 |
6.7.2 Auswerten von Validierungsattributen | 259 |
6.7.3 Benutzerdefinierte Validierungsattribute | 260 |
6.8 Benutzerdefinierte Formate unterstützen | 261 |
6.8.1 Formatter implementieren | 261 |
6.8.2 Formatter serverseitig registrieren und testen | 263 |
6.8.3 Formatter mit HttpClient verwenden | 263 |
6.8.4 Binäre Serialisierung mit BSON | 264 |
6.9 Serialisierung beeinflussen | 264 |
6.9.1 JSON-Serializer konfigurieren | 265 |
6.9.2 XML-Serializer konfigurieren | 266 |
6.9.3 Eigenschaften von der Serialisierung ausnehmen | 266 |
6.9.4 Zirkuläre Referenzen serialisieren | 266 |
6.10 Streaming | 269 |
6.10.1 Action-Methoden für Streaming vorbereiten | 269 |
6.10.2 Streaming in Self-Hosting-Szenarien konfigurieren | 270 |
6.10.3 Streaming für IIS konfigurieren | 270 |
6.10.4 Streams über HttpClient verwenden | 272 |
6.11 Fortschritt ermitteln | 273 |
6.12 Web API und HTML-Formulare | 274 |
6.12.1 Einfache Formular-Felder übermitteln | 274 |
6.12.2 Dateiupload via HTML-Formular | 275 |
6.13 ASP.NET Web API erweitern | 277 |
6.13.1 Abhängigkeiten auflösen mit benutzerdefiniertem DependencyResolver | 277 |
6.13.2 Zusätzliche Assemblies mit AssemblyResolver laden | 278 |
6.13.3 Service-Operationen über HttpActionSelector auswählen | 279 |
6.13.4 Controller über HttpControllerSelector auswählen | 280 |
6.13.5 Methodenparameter auf benutzerdefinierte Weise |
282 |
7 ASP.NET Web API Security | 286 |
7.1 Verschlüsselte Übertragung | 286 |
7.1.1 SSL mit IIS | 286 |
7.1.2 SSL in Self-Hosting-Szenarien | 286 |
7.1.3 Diskussion über Nachrichtensicherheit | 287 |
7.2 Authentifizierung und Autorisierung | 287 |
7.2.1 Operationen absichern | 287 |
7.2.2 HTTP-Authentifizierung mit IIS | 289 |
7.2.3 HTTP-Authentifizierung in Self-Hosting-Szenarien | 290 |
7.2.4 Benutzer mit HttpClient authentifizieren | 291 |
7.2.5 Benutzerdefinierte Security mit Handler | 291 |
7.2.6 Benutzerdefinierte Security mit HTTP-Module | 293 |
7.2.7 Mit Client-Zertifikaten arbeiten | 296 |
7.3 Single Sign-On mit OAuth2 und |
300 |
7.3.1 OAuth2 | 300 |
7.3.2 OAuth2 und REST-Services | 301 |
7.3.3 Implementieren eines Authorization Servers mit |
301 |
7.3.4 Client für OAuth2-Szenario | 307 |
7.3.5 Service mittels OAuth2 absichern | 308 |
8 ASP.NET SignalR | 310 |
8.1 Long-Polling | 310 |
8.2 Web Sockets | 311 |
8.3 ASP.NET SignalR | 311 |
8.4 PersistentConnection | 312 |
8.4.1 Erste Schritte mit SignalR und PersistentConnection | 312 |
8.4.2 Lifecycle-Methoden | 313 |
8.4.3 URL-Mapping für PersistentConnection | 314 |
8.4.4 Einfacher Client für eine PersistentConnection | 314 |
8.4.5 Einfacher JavaScript-Client für eine PersistentConnection | 315 |
8.4.6 Daten über serverseitige Prozesse an Connection senden | 317 |
8.5 Hubs | 317 |
8.5.1 Methoden und Callbacks mit SignalR und Hubs | 317 |
8.5.2 URL-Mapping für Hubs | 319 |
8.5.3 Lifecycle-Methoden | 319 |
8.5.4 Hubs konsumieren | 319 |
8.5.5 Hubs über JavaScript konsumieren | 322 |
8.5.6 Gruppen | 325 |
8.5.7 Hubs über serverseitige Prozesse benachrichtigen | 326 |
8.6 Pipeline-Modules für Querschnittsfunktionen | 326 |
8.7 SignalR konfigurieren | 328 |
8.8 SignalR skalieren | 328 |
9 Hosting von WCF- und Web API-Diensten | 330 |
9.1 Hosting in Windows-Systemdiensten | 330 |
9.1.1 Erstellen eines Windows-Systemdienstes | 331 |
9.1.2 Ergänzen eines WCF-Dienstes in einem Systemdienst | 333 |
9.1.3 Ergänzen eines Web API-Dienstes in einem Systemdienst | 334 |
9.1.4 Trick für das Debugging eines Systemdienstes | 334 |
9.1.5 Vorbereiten der Installation eines Systemdienstes | 337 |
9.1.6 Installation eines Systemdienstes | 338 |
9.2 Hosting im Internet Information Server (IIS)/Windows Server AppFabric | 340 |
9.2.1 Von IIS über WAS zu AppFabric | 340 |
9.2.2 IIS-Websites | 341 |
9.2.3 IIS-Anwendungen | 347 |
9.2.4 IIS-Anwendungspools | 348 |
9.2.5 Autostart | 354 |
9.3 WCF-Projekte für den IIS | 357 |
9.3.1 .svc-Dateien | 358 |
9.3.2 Test des Dienstes | 358 |
9.3.3 Abruf der Metadaten | 359 |
9.3.4 Konfigurationsdatei | 360 |
9.3.5 WCF ohne SVC-Datei | 362 |
9.3.6 Eigene ServiceHostFactory | 362 |
9.4 ASP.NET Web API-Projekte für den IIS | 363 |
9.5 Installieren von WCF- und |
363 |
9.5.1 Manuelles Verbreiten von Diensten (XCopy-Deployment) | 363 |
9.5.2 Verbreiten mit der Funktion „Build/Publish“ in Visual Studio direkt auf einen IIS | 364 |
9.5.3 Verbreiten von Diensten mit dem IIS Web Deployment Tool |
365 |
9.6 Konfiguration und Monitoring mit den „AppFabric“-Erweiterungen | 375 |
9.6.1 Installation | 376 |
9.6.2 AppFabric-Ansichten | 377 |
9.6.3 Überwachungsfunktionen | 379 |
9.6.4 Weitere Konfigurationsmöglichkeiten | 381 |
10 Service Bus und Access Control für Windows Azure und Windows Server | 384 |
10.1 Überblick | 384 |
10.2 Namespace einrichten | 385 |
10.3 Relaying | 386 |
10.3.1 Relay-Bindings | 387 |
10.3.2 Service über Relaying bereitstellen | 387 |
10.3.3 Service über Relaying konsumieren | 390 |
10.4 Lose Kopplung mit Queues und Topics | 391 |
10.4.1 Zugriff auf Queues und Topics | 393 |
10.4.2 Transaktionen | 393 |
10.4.3 Sitzungen | 394 |
10.4.4 Metadaten, Filtern und Stamping | 394 |
10.4.5 Queues über die .NET-API ansprechen | 394 |
10.4.6 Queues programmatisch erzeugen | 395 |
10.4.7 Nachrichten an Queues senden | 396 |
10.4.8 Nachrichten aus Queues abrufen | 397 |
10.4.9 Mit Sitzungen arbeiten | 399 |
10.4.10 Aus Dead Letter Queue lesen | 400 |
10.4.11 Topics und Abonnenten einrichten | 401 |
10.4.12 Nachrichten unter Verwendung von Topics senden |
403 |
10.4.13 Queues über WCF ansprechen | 405 |
10.4.14 WCF-Sitzungen realisieren | 408 |
10.4.15 Topics via WCF abonnieren | 409 |
10.5 Windows Azure Access Control | 410 |
10.5.1 AC konfigurieren | 410 |
10.5.2 Service mit AC absichern | 412 |
10.5.3 Azure Service Bus mit AC absichern | 416 |
10.6 Windows Server Service Bus | 417 |
10.6.1 Namespaces administrieren | 418 |
10.6.2 Auf Queues und Topics zugreifen | 418 |
10.6.3 Zugriff auf Queues und Topics einschränken | 419 |
11 Datenbasierte Services | 420 |
11.1 Was sind datenbasierte Services? | 420 |
11.2 Services und ADO.NET Entity Framework | 420 |
11.2.1 Vom DataSet zum Entity Framework | 420 |
11.2.2 Grundlagen der Self-Tracking Entities | 422 |
11.2.3 Beispielanwendung | 426 |
11.3 ADO.NET Entity Framework Code First (Code Only) | 435 |
11.3.1 Die drei Ebenen des ADO.NET Entity Framework | 435 |
11.3.2 Vorbereitungen | 436 |
11.3.3 Entitätsklassen | 436 |
11.3.4 Kontextklasse | 441 |
11.3.5 Nutzen der Kontextklasse | 442 |
11.3.6 Einsatzbeispiel | 443 |
11.3.7 Konvention vor Konfiguration | 446 |
11.3.8 Codebasierte Konfiguration | 448 |
11.3.9 Schemamigrationen | 449 |
11.3.10 Entity Framework Power Tools | 450 |
11.3.11 Code Only und Webservices | 452 |
11.4 Kritik an der Implementierung eines datenbasierten Service mit WCF | 453 |
11.5 WCF Data Services (Open Data Protocol) | 454 |
11.5.1 Lizenz und Standardisierung | 454 |
11.5.2 Bezug der WCF Data Services | 454 |
11.5.3 Andere Bibliotheken | 455 |
11.5.4 Rahmenbedingungen | 456 |
11.5.5 OData-Beispiel | 456 |
11.5.6 Architektur | 458 |
11.5.7 Abfragesyntax | 459 |
11.5.8 Einen WCF Data Service erstellen | 460 |
11.5.9 Zugriffsrechte | 460 |
11.5.10 Fehlermeldungen aktivieren | 462 |
11.511 Einen WCF Data Service im Webbrowser testen | 463 |
11.5.12 Abruf der Metadaten | 465 |
11.5.13 Einen WCF Data Service mit Fiddler testen | 466 |
11.5.14 Einen .NET-basierten Client erstellen | 466 |
11.5.15 Tipps und Tricks | 471 |
11.6 WCF RIA Services | 480 |
11.6.1 Architektur der RIA Services | 481 |
11.6.2 Einen RIA Service erstellen | 482 |
11.6.3 Einen RIA Service nutzen | 486 |
11.7 Datenbasierte REST-Services mit ASP.NET Web API und dem Open Data Protocol (OData) | 489 |
11.7.1 Daten mit OData flexibel abfragen | 489 |
11.7.2 Mögliche OData-Abfragen einschränken | 491 |
11.7.3 OData-Abfragen global aktivieren | 493 |
11.7.4 OData-Abfragen manuell auswerten | 493 |
11.7.5 Daten mit OData verwalten | 494 |
11.8 Vergleich und Fazit | 498 |
12 Workflows und Workflow Services | 502 |
12.1 Überblick | 502 |
12.2 Visual Studio-Projektvorlagen | 503 |
12.3 Sequenzielle Workflows | 503 |
12.3.1 Sequenzielle Workflows erstellen | 503 |
12.3.2 Sequenzielle Workflows ausführen | 504 |
12.3.3 Kontrollfluss | 505 |
12.4 Flussdiagramme | 507 |
12.5 Zustandsautomaten (State Machines) | 508 |
12.6 Transaktionen und Kompensation | 510 |
12.6.1 Transaktionen | 510 |
12.6.2 Kompensation | 510 |
12.7 WCF Workflow Services | 512 |
12.7.1 Workflow Services erstellen | 512 |
12.7.2 Workflow Services testen | 513 |
12.7.3 Workflow Services konfigurieren | 514 |
12.7.4 Korrelation | 515 |
12.7.5 Contract-First (ab .NET 4.5) | 516 |
12.8 Benutzerdefinierte Aktivitäten | 518 |
12.8.1 CodeActivity | 518 |
12.8.2 AsyncCodeActivity | 519 |
12.8.3 NativeActivity | 520 |
12.8.4 Anpassen der Darstellung benutzerdefinierter Aktivitäten | 523 |
12.9 Bookmarks | 525 |
12.10 Persistenz | 526 |
12.10.1 SQLWorkflowInstanceStore | 526 |
12.10.2 Eigenschaften höherstufen | 529 |
12.10.3 Höherstufen von Eigenschaften bei Verwendung |
531 |
12.11 Versionisierung und Aktualisierung von Workflows (ab .NET 4.5) | 533 |
12.11.1 Side-by-Side-Versionisierung | 533 |
12.11.2 Dynamic Update | 539 |
12.11.3 Dynamic Update mit WorkflowControlEndpoint | 544 |
12.12 Ablaufverfolgung (Tracking) | 546 |
12.12.1 Benutzerdefinierte Tracking Records erzeugen | 546 |
12.12.2 Tracking Records abonnieren | 547 |
12.12.3 Tracking Records einsehen | 549 |
12.13 Workflow-Designer in eigenen Anwendungen hosten | 550 |
12.14 WCF-Dienste und -Services in AppFabric hosten | 551 |
12.14.1 Monitoring | 552 |
12.14.2 Persistenz | 554 |
12.14.3 Weitere Möglichkeiten | 555 |
13 Das WCF-Erweiterungsmodell | 556 |
13.1 Übersicht | 556 |
13.1.1 Was sich erweitern lässt | 556 |
13.1.2 Die Laufzeitumgebung der Applikation erweitern | 557 |
13.2 Erweiterung des Sicherheitsmodells | 557 |
13.2.1 Verantwortungsbereich der WCF Security Component | 557 |
13.2.2 Das WebService-(WS-)Sicherheitsmodell | 557 |
13.2.3 Implementierung der WebService-(WS-)Sicherheit | 558 |
13.3 Erweiterung des Bindungssystems | 562 |
13.3.1 Bindungen und Bindungselemente | 563 |
13.3.2 Nachrichtenkanäle | 563 |
13.3.3 Benutzerdefinierte Bindungen | 564 |
13.4 Weitere Erweiterungsfunktionen | 565 |
13.4.1 Erweiterung des Metadatenmodells | 565 |
13.4.2 Erweiterungen der Serialisierung | 566 |
14 WCF erweitern | 568 |
14.1 ServiceHost und Dienstmodellebene | 568 |
14.1.1 Aufbau der Dienstmodellebene | 568 |
14.1.2 Erweiterung mittels Verhalten | 569 |
14.1.3 Erweiterung von Clients | 572 |
14.1.4 Erweiterung des Dispatchers | 577 |
14.1.5 Erweiterbare Objekte | 585 |
14.1.6 Erweitertes Hosting – die Klasse ServiceHostFactory | 588 |
14.2 Erweiterung des Bindungsmodells | 590 |
14.2.1 Konfigurieren mittels Bindungselementen | 590 |
14.2.2 Bindungen selbst erstellen | 591 |
14.2.3 Erstellen eines eigenen Bindungselements | 593 |
14.3 Channel Layer- und Peer Channel-Erweiterungen | 595 |
14.3.1 Funktionsweise | 596 |
14.3.2 Benutzerdefinierte Übertragungskanäle | 596 |
14.3.3 Benutzerdefinierte Nachrichtenencoder | 606 |
14.4 Das Metadatensystem | 608 |
14.4.1 Funktionsweise | 609 |
14.4.2 Anwendung | 609 |
14.5 Serialisierung und Encoder | 614 |
14.5.1 Ersetzen von Datenverträgen | 614 |
14.5.2 Eigene Formatierer | 620 |
14.6 Erweiterung des Sicherheitsmodells | 626 |
14.6.1 Aufbau der Sicherheitsarchitektur | 626 |
14.6.2 Benutzerdefinierte Anmeldeinformation und Token | 626 |
14.6.3 Benutzerdefinierte Nachrichtenverschlüsselung | 644 |
Anhang – NuGet | 654 |
Index | 658 |