
Verteilte Systeme und Services mit .NET 4.5
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions

Persons
Content
2 - Geleitwort des Herausgebers [Seite 18]
3 - Vorwort [Seite 20]
4 - 1 Serviceorientierung [Seite 24]
4.1 - 1.1 Konzeptionelle Ebene [Seite 24]
4.1.1 - 1.1.1 Betriebswirtschaftliche Sicht [Seite 24]
4.1.2 - 1.1.2 Technische Sicht [Seite 25]
4.1.3 - 1.1.3 Was ist ein Service? [Seite 26]
4.2 - 1.2 Technische Realisierung [Seite 27]
4.2.1 - 1.2.1 SOAP [Seite 27]
4.2.2 - 1.2.2 Web Service Description Language (WSDL) [Seite 29]
4.2.3 - 1.2.3 Universal Description, Discovery and Integration [Seite 30]
4.2.4 - 1.2.4 WS-I [Seite 30]
4.2.5 - 1.2.5 WS-* [Seite 31]
4.2.6 - 1.2.6 RESTful Web Services als Gegenbewegung zu SOAP [Seite 31]
4.2.7 - 1.2.7 POX-Services und Web APIs [Seite 34]
4.2.8 - 1.2.8 SOAP und REST im Vergleich [Seite 35]
4.3 - 1.3 WCF vs. ASP.NET Web API [Seite 36]
5 - 2 WCF im Überblick [Seite 38]
5.1 - 2.1 Architektur [Seite 38]
5.2 - 2.2 Standard-Bindings [Seite 39]
5.3 - 2.3 Hosting von Services [Seite 41]
5.4 - 2.4 Erste Schritte mit WCF [Seite 42]
5.4.1 - 2.4.1 Erstellen eines Web-Service-Projektes [Seite 42]
5.4.2 - 2.4.2 Web-Service mit Client konsumieren [Seite 50]
5.4.3 - 2.4.3 Mit Laufzeit-Proxy auf Service zugreifen [Seite 54]
5.4.4 - 2.4.4 Service zur Verwendung von ws2007HttpBinding konfigurieren [Seite 55]
5.4.5 - 2.4.5 NetTcpBinding und Self-Hosting [Seite 56]
6 - 3 Services mit WCF erstellen [Seite 62]
6.1 - 3.1 Verträge [Seite 62]
6.1.1 - 3.1.1 Serviceverträge [Seite 62]
6.1.2 - 3.1.2 Datenverträge [Seite 63]
6.1.3 - 3.1.3 Nachrichtenverträge [Seite 66]
6.1.4 - 3.1.4 SOAP-Binding festlegen [Seite 67]
6.2 - 3.2 Instanziierung von Services [Seite 67]
6.2.1 - 3.2.1 PerCall [Seite 68]
6.2.2 - 3.2.2 Single [Seite 69]
6.2.3 - 3.2.3 PerSession [Seite 69]
6.3 - 3.3 Nebenläufigkeit [Seite 74]
6.4 - 3.4 Asynchrone Service-Operationen [Seite 74]
6.5 - 3.5 WCF konfigurieren [Seite 75]
6.5.1 - 3.5.1 WCF deklarativ konfigurieren [Seite 75]
6.5.2 - 3.5.2 WCF programmatisch konfigurieren [Seite 78]
6.5.3 - 3.5.3 In IIS gehostete Services programmatisch konfigurieren [Seite 3.5.3 In IIS gehostete Services programmatisch konfigurieren ]
(ab .NET 4.5) - 78 [Seite 78]
6.5.4 - 3.5.4 Benutzerdefinierte Bindings [Seite 80]
6.5.5 - 3.5.5 Einschränkungen für Bindings festlegen [Seite 81]
6.5.6 - 3.5.6 Drosselung [Seite 82]
6.5.7 - 3.5.7 Port-Sharing bei TCP-basierten Services [Seite 83]
6.5.8 - 3.5.8 Konfiguration des Proxy-Servers [Seite 84]
6.6 - 3.6 Metadaten [Seite 85]
6.7 - 3.7 Services diagnostizieren [Seite 87]
6.7.1 - 3.7.1 Protokollierung konfigurieren [Seite 87]
6.7.2 - 3.7.2 Leistungsindikatoren [Seite 89]
6.8 - 3.8 One-Way-Operationen [Seite 90]
6.9 - 3.9 Duplex-Operationen [Seite 90]
6.9.1 - 3.9.1 Unterstützte Bindings [Seite 91]
6.9.2 - 3.9.2 Implementierung von Duplex-Szenarien [Seite 92]
6.9.3 - 3.9.3 Konfigurieren von Duplex-Szenarien [Seite 93]
6.9.4 - 3.9.4 Callbacks mit WebSockets (ab .NET 4.5) [Seite 95]
6.9.5 - 3.9.5 Grenzen von Callbacks [Seite 96]
6.10 - 3.10 UDP und Multicasts (ab .NET 4.5) [Seite 97]
6.11 - 3.11 Umgang mit binären Daten [Seite 98]
6.11.1 - 3.11.1 MTOM [Seite 99]
6.11.2 - 3.11.2 Streaming [Seite 103]
6.12 - 3.12 Fehlerbehandlung und FaultContracts [Seite 106]
6.13 - 3.13 ASP.NET-Kompatibilität [Seite 108]
6.14 - 3.14 Zuverlässige Sitzungen [Seite 110]
6.14.1 - 3.14.1 Verlässliche Sitzungen konfigurieren [Seite 111]
6.14.2 - 3.14.2 Verlässliche Sitzungen erzwingen [Seite 112]
6.14.3 - 3.14.3 Idempotente Services als Alternative zu WS-ReliableMessaging [Seite 112]
6.15 - 3.15 Transaktionale Services [Seite 113]
6.15.1 - 3.15.1 Zwei-Phasen-Commit [Seite 113]
6.15.2 - 3.15.2 Plug-in für WS-AtomicTransactions einrichten [Seite 113]
6.15.3 - 3.15.3 Distributed Transaction Coordinator (DTC) einrichten [Seite 114]
6.15.4 - 3.15.4 Transaktionen konfigurieren und nutzen [Seite 115]
6.15.5 - 3.15.5 Transaktionsisolationslevel [Seite 117]
6.15.6 - 3.15.6 Transaktion am Client starten [Seite 118]
6.15.7 - 3.15.7 Transaktionen und Sessions [Seite 118]
6.16 - 3.16 Queued Services [Seite 119]
6.16.1 - 3.16.1 Microsoft Message Queuing Services (MSMQ) [Seite 119]
6.16.2 - 3.16.2 Implementierung von Queued Services [Seite 120]
6.16.3 - 3.16.3 Queued Services konfigurieren [Seite 121]
6.17 - 3.17 REST-basierte Services mit WCF [Seite 123]
6.17.1 - 3.17.1 REST-Services mit WCF implementieren und konsumieren [Seite 124]
6.17.2 - 3.17.2 Antwortformat dynamisch festlegen [Seite 127]
6.17.3 - 3.17.3 Hilfe-Seiten (Help Pages) [Seite 128]
6.17.4 - 3.17.4 ASP.NET Cache Profiles [Seite 130]
6.17.5 - 3.17.5 REST-Services über ASP.NET-Routen [Seite 131]
6.17.6 - 3.17.6 Ausnahmen auf HTTP-Statuscodes abbilden [Seite 131]
6.17.7 - 3.17.7 Conditional GET und ETag-Unterstützung [Seite 132]
6.18 - 3.18 WCF und Windows 8 [Seite 133]
7 - 4 Sicherheit von WCF-Diensten [Seite 134]
7.1 - 4.1 Überblick über WCF-Security [Seite 134]
7.1.1 - 4.1.1 Transport- und Nachrichtensicherheit [Seite 134]
7.1.2 - 4.1.2 Festlegen der zu verwendenden Credentials [Seite 136]
7.1.3 - 4.1.3 Authentifizierung und Autorisierung [Seite 137]
7.1.4 - 4.1.4 Service-Identitäten [Seite 139]
7.1.5 - 4.1.5 Verschlüsseln und Signieren [Seite 139]
7.2 - 4.2 Windows-Security [Seite 141]
7.2.1 - 4.2.1 Impersonation [Seite 141]
7.2.2 - 4.2.2 Kerberos vs. NTLM [Seite 142]
7.3 - 4.3 Web-Security mit SSL und IIS [Seite 144]
7.3.1 - 4.3.1 IIS für die Verwendung von SSL konfigurieren [Seite 144]
7.3.2 - 4.3.2 Konfiguration des Service [Seite 148]
7.3.3 - 4.3.3 Aufruf der Service-Operation [Seite 149]
7.3.4 - 4.3.4 Benutzerdefinierte Authentifizierung und Autorisierung [Seite 149]
7.4 - 4.4 Web-Security mit SSL ohne IIS [Seite 156]
7.5 - 4.5 Nachrichtenbasierte Sicherheit [Seite 157]
7.5.1 - 4.5.1 Zertifikate einrichten [Seite 157]
7.5.2 - 4.5.2 Konfiguration [Seite 158]
7.5.3 - 4.5.3 Aufruf der Service-Operation [Seite 160]
7.6 - 4.6 Client-Zertifikate [Seite 160]
7.7 - 4.7 Federated und Claims-based Security mit Windows Identity Foundation (WIF) [Seite 162]
7.7.1 - 4.7.1 Architektur [Seite 163]
7.7.2 - 4.7.2 Web-Service-Standards [Seite 164]
7.7.3 - 4.7.3 Implementierung in .NET 4.5 [Seite 164]
7.7.4 - 4.7.4 Implementierung für Versionen vor 4.5 [Seite 178]
8 - 5 Lose Kopplung mit WCF [Seite 190]
8.1 - 5.1 Routing (System.ServiceModel.Routing) [Seite 190]
8.1.1 - 5.1.1 Architektur [Seite 191]
8.1.2 - 5.1.2 Routerarten [Seite 192]
8.1.3 - 5.1.3 Beispielanwendung (Routing Testclient) [Seite 193]
8.1.4 - 5.1.4 Filter [Seite 194]
8.1.5 - 5.1.5 Erstellen des Routers mit WCF 4.x [Seite 197]
8.1.6 - 5.1.6 Konfiguration eines Routers [Seite 197]
8.1.7 - 5.1.7 Router für das Routing-Testszenario [Seite 198]
8.1.8 - 5.1.8 Entwicklung des Clients [Seite 203]
8.1.9 - 5.1.9 Dynamische Filter entwickeln [Seite 204]
8.1.10 - 5.1.10 Dynamische Filter mit eigener Filtertabelle [Seite 206]
8.1.11 - 5.1.11 Leistungsverlust durch Routing [Seite 210]
8.2 - 5.2 Discovery [Seite 211]
8.2.1 - 5.2.1 Dienst mit Discovery [Seite 211]
8.2.2 - 5.2.2 Client mit Discovery [Seite 212]
8.2.3 - 5.2.3 Mögliche Services mittels Scopes einschränken [Seite 213]
8.2.4 - 5.2.4 Clients für die Verwendung mit Discovery deklarativ konfigurieren [Seite 214]
8.2.5 - 5.2.5 Ankündigungen (Announcements) [Seite 215]
8.3 - 5.3 Ereignisse und Publish-/Subscribe-Szenarien [Seite 217]
8.3.1 - 5.3.1 Service-Verträge [Seite 217]
8.3.2 - 5.3.2 Implementierung eines Publish-/Subscribe-Service [Seite 218]
8.3.3 - 5.3.3 Konfiguration [Seite 220]
8.3.4 - 5.3.4 Implementierung des zu benachrichtigenden Clients [Seite 221]
8.3.5 - 5.3.5 Weiterführende Überlegungen [Seite 222]
8.4 - 5.4 ESB-Lösungen mit WCF entwickeln [Seite 222]
8.4.1 - 5.4.1 Catch-All-Verträge [Seite 222]
8.4.2 - 5.4.2 Nachrichtentransformation [Seite 223]
8.5 - 5.5 Freie ESB-Implementierung [Seite 227]
9 - 6 ASP.NET Web API [Seite 228]
9.1 - 6.1 REST-Services mit ASP.NET [Seite 6.1 REST-Services mit ASP.NET ]
Web API erstellen - 228 [Seite 228]
9.1.1 - 6.1.1 Parameter und Rückgabewerte [Seite 229]
9.1.2 - 6.1.2 Dynamische Parameter [Seite 231]
9.1.3 - 6.1.3 REST-Services konfigurieren [Seite 232]
9.1.4 - 6.1.4 REST-Services mit Fiddler testen [Seite 233]
9.1.5 - 6.1.5 Mehr Kontrolle über HTTP [Seite 234]
9.1.6 - 6.1.6 REST-Services über HttpClient konsumieren [Seite 237]
9.1.7 - 6.1.7 Hilfe-Seiten [Seite 240]
9.2 - 6.2 Tracing [Seite 244]
9.2.1 - 6.2.1 Standard-Implementierung von ITraceWriter [Seite 244]
9.2.2 - 6.2.2 Eigenen TraceWriter implementieren [Seite 245]
9.3 - 6.3 OData-Unterstützung [Seite 246]
9.4 - 6.4 Self-Hosting mit Web APIs [Seite 246]
9.5 - 6.5 Querschnittsfunktionen an globalen Stellen platzieren [Seite 247]
9.5.1 - 6.5.1 Querschnittsfunktionen mit Message-Handler implementieren [Seite 248]
9.5.2 - 6.5.2 Handler mit HttpClient verwenden [Seite 249]
9.5.3 - 6.5.3 Querschnittsfunktionen mit Filter realisieren [Seite 251]
9.6 - 6.6 Erweiterte Konfigurationsmöglichkeiten [Seite 255]
9.6.1 - 6.6.1 Benutzerdefinierte Routen [Seite 255]
9.6.2 - 6.6.2 Controller-basierte Konfiguration [Seite 255]
9.6.3 - 6.6.3 Routen-basierte Konfiguration [Seite 256]
9.7 - 6.7 Deklaratives Validieren von Parametern [Seite 257]
9.7.1 - 6.7.1 Verwenden von Data-Attributen [Seite 257]
9.7.2 - 6.7.2 Auswerten von Validierungsattributen [Seite 259]
9.7.3 - 6.7.3 Benutzerdefinierte Validierungsattribute [Seite 260]
9.8 - 6.8 Benutzerdefinierte Formate unterstützen [Seite 261]
9.8.1 - 6.8.1 Formatter implementieren [Seite 261]
9.8.2 - 6.8.2 Formatter serverseitig registrieren und testen [Seite 263]
9.8.3 - 6.8.3 Formatter mit HttpClient verwenden [Seite 263]
9.8.4 - 6.8.4 Binäre Serialisierung mit BSON [Seite 264]
9.9 - 6.9 Serialisierung beeinflussen [Seite 264]
9.9.1 - 6.9.1 JSON-Serializer konfigurieren [Seite 265]
9.9.2 - 6.9.2 XML-Serializer konfigurieren [Seite 266]
9.9.3 - 6.9.3 Eigenschaften von der Serialisierung ausnehmen [Seite 266]
9.9.4 - 6.9.4 Zirkuläre Referenzen serialisieren [Seite 266]
9.10 - 6.10 Streaming [Seite 269]
9.10.1 - 6.10.1 Action-Methoden für Streaming vorbereiten [Seite 269]
9.10.2 - 6.10.2 Streaming in Self-Hosting-Szenarien konfigurieren [Seite 270]
9.10.3 - 6.10.3 Streaming für IIS konfigurieren [Seite 270]
9.10.4 - 6.10.4 Streams über HttpClient verwenden [Seite 272]
9.11 - 6.11 Fortschritt ermitteln [Seite 273]
9.12 - 6.12 Web API und HTML-Formulare [Seite 274]
9.12.1 - 6.12.1 Einfache Formular-Felder übermitteln [Seite 274]
9.12.2 - 6.12.2 Dateiupload via HTML-Formular [Seite 275]
9.13 - 6.13 ASP.NET Web API erweitern [Seite 277]
9.13.1 - 6.13.1 Abhängigkeiten auflösen mit benutzerdefiniertem DependencyResolver [Seite 277]
9.13.2 - 6.13.2 Zusätzliche Assemblies mit AssemblyResolver laden [Seite 278]
9.13.3 - 6.13.3 Service-Operationen über HttpActionSelector auswählen [Seite 279]
9.13.4 - 6.13.4 Controller über HttpControllerSelector auswählen [Seite 280]
9.13.5 - 6.13.5 Methodenparameter auf benutzerdefinierte Weise [Seite 6.13.5 Methodenparameter auf benutzerdefinierte Weise ]
mit HttpParameterBinding - 282 [Seite 282]
10 - 7 ASP.NET Web API Security [Seite 286]
10.1 - 7.1 Verschlüsselte Übertragung [Seite 286]
10.1.1 - 7.1.1 SSL mit IIS [Seite 286]
10.1.2 - 7.1.2 SSL in Self-Hosting-Szenarien [Seite 286]
10.1.3 - 7.1.3 Diskussion über Nachrichtensicherheit [Seite 287]
10.2 - 7.2 Authentifizierung und Autorisierung [Seite 287]
10.2.1 - 7.2.1 Operationen absichern [Seite 287]
10.2.2 - 7.2.2 HTTP-Authentifizierung mit IIS [Seite 289]
10.2.3 - 7.2.3 HTTP-Authentifizierung in Self-Hosting-Szenarien [Seite 290]
10.2.4 - 7.2.4 Benutzer mit HttpClient authentifizieren [Seite 291]
10.2.5 - 7.2.5 Benutzerdefinierte Security mit Handler [Seite 291]
10.2.6 - 7.2.6 Benutzerdefinierte Security mit HTTP-Module [Seite 293]
10.2.7 - 7.2.7 Mit Client-Zertifikaten arbeiten [Seite 296]
10.3 - 7.3 Single Sign-On mit OAuth2 und [Seite 7.3 Single Sign-On mit OAuth2 und ]
DotNetOpenAuth - 300 [Seite 300]
10.3.1 - 7.3.1 OAuth2 [Seite 300]
10.3.2 - 7.3.2 OAuth2 und REST-Services [Seite 301]
10.3.3 - 7.3.3 Implementieren eines Authorization Servers mit [Seite 7.3.3 Implementieren eines Authorization Servers mit ]
DotNetOpenAuth - 301 [Seite 301]
10.3.4 - 7.3.4 Client für OAuth2-Szenario [Seite 307]
10.3.5 - 7.3.5 Service mittels OAuth2 absichern [Seite 308]
11 - 8 ASP.NET SignalR [Seite 310]
11.1 - 8.1 Long-Polling [Seite 310]
11.2 - 8.2 Web Sockets [Seite 311]
11.3 - 8.3 ASP.NET SignalR [Seite 311]
11.4 - 8.4 PersistentConnection [Seite 312]
11.4.1 - 8.4.1 Erste Schritte mit SignalR und PersistentConnection [Seite 312]
11.4.2 - 8.4.2 Lifecycle-Methoden [Seite 313]
11.4.3 - 8.4.3 URL-Mapping für PersistentConnection [Seite 314]
11.4.4 - 8.4.4 Einfacher Client für eine PersistentConnection [Seite 314]
11.4.5 - 8.4.5 Einfacher JavaScript-Client für eine PersistentConnection [Seite 315]
11.4.6 - 8.4.6 Daten über serverseitige Prozesse an Connection senden [Seite 317]
11.5 - 8.5 Hubs [Seite 317]
11.5.1 - 8.5.1 Methoden und Callbacks mit SignalR und Hubs [Seite 317]
11.5.2 - 8.5.2 URL-Mapping für Hubs [Seite 319]
11.5.3 - 8.5.3 Lifecycle-Methoden [Seite 319]
11.5.4 - 8.5.4 Hubs konsumieren [Seite 319]
11.5.5 - 8.5.5 Hubs über JavaScript konsumieren [Seite 322]
11.5.6 - 8.5.6 Gruppen [Seite 325]
11.5.7 - 8.5.7 Hubs über serverseitige Prozesse benachrichtigen [Seite 326]
11.6 - 8.6 Pipeline-Modules für Querschnittsfunktionen [Seite 326]
11.7 - 8.7 SignalR konfigurieren [Seite 328]
11.8 - 8.8 SignalR skalieren [Seite 328]
12 - 9 Hosting von WCF- und Web API-Diensten [Seite 330]
12.1 - 9.1 Hosting in Windows-Systemdiensten [Seite 330]
12.1.1 - 9.1.1 Erstellen eines Windows-Systemdienstes [Seite 331]
12.1.2 - 9.1.2 Ergänzen eines WCF-Dienstes in einem Systemdienst [Seite 333]
12.1.3 - 9.1.3 Ergänzen eines Web API-Dienstes in einem Systemdienst [Seite 334]
12.1.4 - 9.1.4 Trick für das Debugging eines Systemdienstes [Seite 334]
12.1.5 - 9.1.5 Vorbereiten der Installation eines Systemdienstes [Seite 337]
12.1.6 - 9.1.6 Installation eines Systemdienstes [Seite 338]
12.2 - 9.2 Hosting im Internet Information Server (IIS)/Windows Server AppFabric [Seite 340]
12.2.1 - 9.2.1 Von IIS über WAS zu AppFabric [Seite 340]
12.2.2 - 9.2.2 IIS-Websites [Seite 341]
12.2.3 - 9.2.3 IIS-Anwendungen [Seite 347]
12.2.4 - 9.2.4 IIS-Anwendungspools [Seite 348]
12.2.5 - 9.2.5 Autostart [Seite 354]
12.3 - 9.3 WCF-Projekte für den IIS [Seite 357]
12.3.1 - 9.3.1 .svc-Dateien [Seite 358]
12.3.2 - 9.3.2 Test des Dienstes [Seite 358]
12.3.3 - 9.3.3 Abruf der Metadaten [Seite 359]
12.3.4 - 9.3.4 Konfigurationsdatei [Seite 360]
12.3.5 - 9.3.5 WCF ohne SVC-Datei [Seite 362]
12.3.6 - 9.3.6 Eigene ServiceHostFactory [Seite 362]
12.4 - 9.4 ASP.NET Web API-Projekte für den IIS [Seite 363]
12.5 - 9.5 Installieren von WCF- und [Seite 9.5 Installieren von WCF- und ]
Web API-Diensten im IIS - 363 [Seite 363]
12.5.1 - 9.5.1 Manuelles Verbreiten von Diensten (XCopy-Deployment) [Seite 363]
12.5.2 - 9.5.2 Verbreiten mit der Funktion "Build/Publish" in Visual Studio direkt auf einen IIS [Seite 364]
12.5.3 - 9.5.3 Verbreiten von Diensten mit dem IIS Web Deployment Tool [Seite 9.5.3 Verbreiten von Diensten mit dem IIS Web Deployment Tool ]
(MSDeploy) - 365 [Seite 365]
12.6 - 9.6 Konfiguration und Monitoring mit den "AppFabric"-Erweiterungen [Seite 375]
12.6.1 - 9.6.1 Installation [Seite 376]
12.6.2 - 9.6.2 AppFabric-Ansichten [Seite 377]
12.6.3 - 9.6.3 Überwachungsfunktionen [Seite 379]
12.6.4 - 9.6.4 Weitere Konfigurationsmöglichkeiten [Seite 381]
13 - 10 Service Bus und Access Control für Windows Azure und Windows Server [Seite 384]
13.1 - 10.1 Überblick [Seite 384]
13.2 - 10.2 Namespace einrichten [Seite 385]
13.3 - 10.3 Relaying [Seite 386]
13.3.1 - 10.3.1 Relay-Bindings [Seite 387]
13.3.2 - 10.3.2 Service über Relaying bereitstellen [Seite 387]
13.3.3 - 10.3.3 Service über Relaying konsumieren [Seite 390]
13.4 - 10.4 Lose Kopplung mit Queues und Topics [Seite 391]
13.4.1 - 10.4.1 Zugriff auf Queues und Topics [Seite 393]
13.4.2 - 10.4.2 Transaktionen [Seite 393]
13.4.3 - 10.4.3 Sitzungen [Seite 394]
13.4.4 - 10.4.4 Metadaten, Filtern und Stamping [Seite 394]
13.4.5 - 10.4.5 Queues über die .NET-API ansprechen [Seite 394]
13.4.6 - 10.4.6 Queues programmatisch erzeugen [Seite 395]
13.4.7 - 10.4.7 Nachrichten an Queues senden [Seite 396]
13.4.8 - 10.4.8 Nachrichten aus Queues abrufen [Seite 397]
13.4.9 - 10.4.9 Mit Sitzungen arbeiten [Seite 399]
13.4.10 - 10.4.10 Aus Dead Letter Queue lesen [Seite 400]
13.4.11 - 10.4.11 Topics und Abonnenten einrichten [Seite 401]
13.4.12 - 10.4.12 Nachrichten unter Verwendung von Topics senden [Seite 10.4.12 Nachrichten unter Verwendung von Topics senden ]
und abrufen - 403 [Seite 403]
13.4.13 - 10.4.13 Queues über WCF ansprechen [Seite 405]
13.4.14 - 10.4.14 WCF-Sitzungen realisieren [Seite 408]
13.4.15 - 10.4.15 Topics via WCF abonnieren [Seite 409]
13.5 - 10.5 Windows Azure Access Control [Seite 410]
13.5.1 - 10.5.1 AC konfigurieren [Seite 410]
13.5.2 - 10.5.2 Service mit AC absichern [Seite 412]
13.5.3 - 10.5.3 Azure Service Bus mit AC absichern [Seite 416]
13.6 - 10.6 Windows Server Service Bus [Seite 417]
13.6.1 - 10.6.1 Namespaces administrieren [Seite 418]
13.6.2 - 10.6.2 Auf Queues und Topics zugreifen [Seite 418]
13.6.3 - 10.6.3 Zugriff auf Queues und Topics einschränken [Seite 419]
14 - 11 Datenbasierte Services [Seite 420]
14.1 - 11.1 Was sind datenbasierte Services? [Seite 420]
14.2 - 11.2 Services und ADO.NET Entity Framework [Seite 420]
14.2.1 - 11.2.1 Vom DataSet zum Entity Framework [Seite 420]
14.2.2 - 11.2.2 Grundlagen der Self-Tracking Entities [Seite 422]
14.2.3 - 11.2.3 Beispielanwendung [Seite 426]
14.3 - 11.3 ADO.NET Entity Framework Code First (Code Only) [Seite 435]
14.3.1 - 11.3.1 Die drei Ebenen des ADO.NET Entity Framework [Seite 435]
14.3.2 - 11.3.2 Vorbereitungen [Seite 436]
14.3.3 - 11.3.3 Entitätsklassen [Seite 436]
14.3.4 - 11.3.4 Kontextklasse [Seite 441]
14.3.5 - 11.3.5 Nutzen der Kontextklasse [Seite 442]
14.3.6 - 11.3.6 Einsatzbeispiel [Seite 443]
14.3.7 - 11.3.7 Konvention vor Konfiguration [Seite 446]
14.3.8 - 11.3.8 Codebasierte Konfiguration [Seite 448]
14.3.9 - 11.3.9 Schemamigrationen [Seite 449]
14.3.10 - 11.3.10 Entity Framework Power Tools [Seite 450]
14.3.11 - 11.3.11 Code Only und Webservices [Seite 452]
14.4 - 11.4 Kritik an der Implementierung eines datenbasierten Service mit WCF [Seite 453]
14.5 - 11.5 WCF Data Services (Open Data Protocol) [Seite 454]
14.5.1 - 11.5.1 Lizenz und Standardisierung [Seite 454]
14.5.2 - 11.5.2 Bezug der WCF Data Services [Seite 454]
14.5.3 - 11.5.3 Andere Bibliotheken [Seite 455]
14.5.4 - 11.5.4 Rahmenbedingungen [Seite 456]
14.5.5 - 11.5.5 OData-Beispiel [Seite 456]
14.5.6 - 11.5.6 Architektur [Seite 458]
14.5.7 - 11.5.7 Abfragesyntax [Seite 459]
14.5.8 - 11.5.8 Einen WCF Data Service erstellen [Seite 460]
14.5.9 - 11.5.9 Zugriffsrechte [Seite 460]
14.5.10 - 11.5.10 Fehlermeldungen aktivieren [Seite 462]
14.5.11 - 11.511 Einen WCF Data Service im Webbrowser testen [Seite 463]
14.5.12 - 11.5.12 Abruf der Metadaten [Seite 465]
14.5.13 - 11.5.13 Einen WCF Data Service mit Fiddler testen [Seite 466]
14.5.14 - 11.5.14 Einen .NET-basierten Client erstellen [Seite 466]
14.5.15 - 11.5.15 Tipps und Tricks [Seite 471]
14.6 - 11.6 WCF RIA Services [Seite 480]
14.6.1 - 11.6.1 Architektur der RIA Services [Seite 481]
14.6.2 - 11.6.2 Einen RIA Service erstellen [Seite 482]
14.6.3 - 11.6.3 Einen RIA Service nutzen [Seite 486]
14.7 - 11.7 Datenbasierte REST-Services mit ASP.NET Web API und dem Open Data Protocol (OData) [Seite 489]
14.7.1 - 11.7.1 Daten mit OData flexibel abfragen [Seite 489]
14.7.2 - 11.7.2 Mögliche OData-Abfragen einschränken [Seite 491]
14.7.3 - 11.7.3 OData-Abfragen global aktivieren [Seite 493]
14.7.4 - 11.7.4 OData-Abfragen manuell auswerten [Seite 493]
14.7.5 - 11.7.5 Daten mit OData verwalten [Seite 494]
14.8 - 11.8 Vergleich und Fazit [Seite 498]
15 - 12 Workflows und Workflow Services [Seite 502]
15.1 - 12.1 Überblick [Seite 502]
15.2 - 12.2 Visual Studio-Projektvorlagen [Seite 503]
15.3 - 12.3 Sequenzielle Workflows [Seite 503]
15.3.1 - 12.3.1 Sequenzielle Workflows erstellen [Seite 503]
15.3.2 - 12.3.2 Sequenzielle Workflows ausführen [Seite 504]
15.3.3 - 12.3.3 Kontrollfluss [Seite 505]
15.4 - 12.4 Flussdiagramme [Seite 507]
15.5 - 12.5 Zustandsautomaten (State Machines) [Seite 508]
15.6 - 12.6 Transaktionen und Kompensation [Seite 510]
15.6.1 - 12.6.1 Transaktionen [Seite 510]
15.6.2 - 12.6.2 Kompensation [Seite 510]
15.7 - 12.7 WCF Workflow Services [Seite 512]
15.7.1 - 12.7.1 Workflow Services erstellen [Seite 512]
15.7.2 - 12.7.2 Workflow Services testen [Seite 513]
15.7.3 - 12.7.3 Workflow Services konfigurieren [Seite 514]
15.7.4 - 12.7.4 Korrelation [Seite 515]
15.7.5 - 12.7.5 Contract-First (ab .NET 4.5) [Seite 516]
15.8 - 12.8 Benutzerdefinierte Aktivitäten [Seite 518]
15.8.1 - 12.8.1 CodeActivity [Seite 518]
15.8.2 - 12.8.2 AsyncCodeActivity [Seite 519]
15.8.3 - 12.8.3 NativeActivity [Seite 520]
15.8.4 - 12.8.4 Anpassen der Darstellung benutzerdefinierter Aktivitäten [Seite 523]
15.9 - 12.9 Bookmarks [Seite 525]
15.10 - 12.10 Persistenz [Seite 526]
15.10.1 - 12.10.1 SQLWorkflowInstanceStore [Seite 526]
15.10.2 - 12.10.2 Eigenschaften höherstufen [Seite 529]
15.10.3 - 12.10.3 Höherstufen von Eigenschaften bei Verwendung [Seite 12.10.3 Höherstufen von Eigenschaften bei Verwendung ]
von WCF Workflow Services - 531 [Seite 531]
15.11 - 12.11 Versionisierung und Aktualisierung von Workflows (ab .NET 4.5) [Seite 533]
15.11.1 - 12.11.1 Side-by-Side-Versionisierung [Seite 533]
15.11.2 - 12.11.2 Dynamic Update [Seite 539]
15.11.3 - 12.11.3 Dynamic Update mit WorkflowControlEndpoint [Seite 544]
15.12 - 12.12 Ablaufverfolgung (Tracking) [Seite 546]
15.12.1 - 12.12.1 Benutzerdefinierte Tracking Records erzeugen [Seite 546]
15.12.2 - 12.12.2 Tracking Records abonnieren [Seite 547]
15.12.3 - 12.12.3 Tracking Records einsehen [Seite 549]
15.13 - 12.13 Workflow-Designer in eigenen Anwendungen hosten [Seite 550]
15.14 - 12.14 WCF-Dienste und -Services in AppFabric hosten [Seite 551]
15.14.1 - 12.14.1 Monitoring [Seite 552]
15.14.2 - 12.14.2 Persistenz [Seite 554]
15.14.3 - 12.14.3 Weitere Möglichkeiten [Seite 555]
16 - 13 Das WCF-Erweiterungsmodell [Seite 556]
16.1 - 13.1 Übersicht [Seite 556]
16.1.1 - 13.1.1 Was sich erweitern lässt [Seite 556]
16.1.2 - 13.1.2 Die Laufzeitumgebung der Applikation erweitern [Seite 557]
16.2 - 13.2 Erweiterung des Sicherheitsmodells [Seite 557]
16.2.1 - 13.2.1 Verantwortungsbereich der WCF Security Component [Seite 557]
16.2.2 - 13.2.2 Das WebService-(WS-)Sicherheitsmodell [Seite 557]
16.2.3 - 13.2.3 Implementierung der WebService-(WS-)Sicherheit [Seite 558]
16.3 - 13.3 Erweiterung des Bindungssystems [Seite 562]
16.3.1 - 13.3.1 Bindungen und Bindungselemente [Seite 563]
16.3.2 - 13.3.2 Nachrichtenkanäle [Seite 563]
16.3.3 - 13.3.3 Benutzerdefinierte Bindungen [Seite 564]
16.4 - 13.4 Weitere Erweiterungsfunktionen [Seite 565]
16.4.1 - 13.4.1 Erweiterung des Metadatenmodells [Seite 565]
16.4.2 - 13.4.2 Erweiterungen der Serialisierung [Seite 566]
17 - 14 WCF erweitern [Seite 568]
17.1 - 14.1 ServiceHost und Dienstmodellebene [Seite 568]
17.1.1 - 14.1.1 Aufbau der Dienstmodellebene [Seite 568]
17.1.2 - 14.1.2 Erweiterung mittels Verhalten [Seite 569]
17.1.3 - 14.1.3 Erweiterung von Clients [Seite 572]
17.1.4 - 14.1.4 Erweiterung des Dispatchers [Seite 577]
17.1.5 - 14.1.5 Erweiterbare Objekte [Seite 585]
17.1.6 - 14.1.6 Erweitertes Hosting - die Klasse ServiceHostFactory [Seite 588]
17.2 - 14.2 Erweiterung des Bindungsmodells [Seite 590]
17.2.1 - 14.2.1 Konfigurieren mittels Bindungselementen [Seite 590]
17.2.2 - 14.2.2 Bindungen selbst erstellen [Seite 591]
17.2.3 - 14.2.3 Erstellen eines eigenen Bindungselements [Seite 593]
17.3 - 14.3 Channel Layer- und Peer Channel-Erweiterungen [Seite 595]
17.3.1 - 14.3.1 Funktionsweise [Seite 596]
17.3.2 - 14.3.2 Benutzerdefinierte Übertragungskanäle [Seite 596]
17.3.3 - 14.3.3 Benutzerdefinierte Nachrichtenencoder [Seite 606]
17.4 - 14.4 Das Metadatensystem [Seite 608]
17.4.1 - 14.4.1 Funktionsweise [Seite 609]
17.4.2 - 14.4.2 Anwendung [Seite 609]
17.5 - 14.5 Serialisierung und Encoder [Seite 614]
17.5.1 - 14.5.1 Ersetzen von Datenverträgen [Seite 614]
17.5.2 - 14.5.2 Eigene Formatierer [Seite 620]
17.6 - 14.6 Erweiterung des Sicherheitsmodells [Seite 626]
17.6.1 - 14.6.1 Aufbau der Sicherheitsarchitektur [Seite 626]
17.6.2 - 14.6.2 Benutzerdefinierte Anmeldeinformation und Token [Seite 626]
17.6.3 - 14.6.3 Benutzerdefinierte Nachrichtenverschlüsselung [Seite 644]
18 - Anhang - NuGet [Seite 654]
19 - Index [Seite 658]
Bevor es in den nachfolgenden Kapiteln um die Realisierung von Services mit Windows Communication Foundation (WCF) gehen wird, bietet dieses Kapitel einen kompakten Überblick zum Thema Serviceorientierung. Neben den unterschiedlichen Sichten auf dieses Thema wird auch auf Protokolle zur Realisierung von Services eingegangen. 1.1 Konzeptionelle Ebene
Sowohl für Techniker als auch für Betriebswirte ist Serviceorientierung von Bedeutung. Allerdings haben beide Gruppen eine unterschiedliche Sicht auf diese Thematik. Dieser Abschnitt geht auf diese beiden Sichten ein und informiert darüber, was allgemein unter Service verstanden werden kann.
1.1.1 Betriebswirtschaftliche Sicht
Auf das Thema Serviceorientierte Architekturen (SOA) gibt es zwei Sichtweisen - eine betriebswirtschaftliche und eine technische. Aus betriebswirtschaftlicher Sicht helfen serviceorientierte Architekturen beim Unterstützen von Geschäftsprozessen. Einzelne Schritte eines Geschäftsprozesses werden dabei von Services, die von verschiedenen Systemen angeboten werden, realisiert. Zur Koordinierung dieser Services wird ein weiterer Service, ein sogenannter Prozessservice, eingesetzt. Dieser ist beispielsweise mit einer Workflow-Engine implementiert, sodass Anpassungen einfach möglich sind und die Umsetzung auch gleichzeitig die Dokumentation widerspiegelt. Bild 1.1 veranschaulicht dies. Dargestellt ist hier ein sehr einfacher, mit den Mitteln der Business Process Modeling Notation (BPMN, vgl. www. bpmn.org) modellierter Prozess, der eine Vorgehensweise zur Angebotslegung für Reisen beschreibt und in vier Bereiche geteilt ist. Diese Bereiche werden in der BPMN als Pools bezeichnet. Die Aktivitäten in den Pools System, Fluggesellschaft und Hotelreservierung werden idealerweise von Services implementiert. Diese können entweder innerhalb der eigenen Organisation zur Verfügung stehen oder von Geschäftspartnern angeboten werden. Ersteres ist bei den Aktivitäten im Pool System der Fall; Letzteres bei den Aktivitäten in den Pools Fluggesellschaft und Hotelreservierung. Die Aktivitäten im Pool Reisebüro würden die Applikation darstellen, die durch Kombination der restlichen Services geschaffen werden soll, und der Prozess an sich würde mit den Mitteln einer Workflow-Engine, welche die einzelnen Services koordiniert, umgesetzt werden. Hierbei ist auch von Orchestrierung die Rede. Bild 1.1 Beispielhafter Geschäftsprozess
1.1.2 Technische Sicht
Aus technischer Sicht geht es beim Thema SOA um verteilte Systeme und Systemintegration. Einzelne Dienste werden, meist über das Netzwerk, in Anspruch genommen. Dazu sendet ein Client eine Anfrage an einen Service. Dieser führt daraufhin die gewünschte Aufgabe durch und sendet das Ergebnis retour an den Client. Je nach Kommunikationspartner können dabei die zu verwendenden Protokolle und Datenformate variieren. Letztere gilt es bei Bedarf zu "übersetzen", sodass sie in einer für das Gegenüber bearbeitbaren Form vorliegen. All diese Konzepte sind wahrscheinlich so alt wie das Konzept von Computernetzwerken und firmierten vor den Zeiten von SOA zuletzt unter dem Begriff Enterprise Application Integration (EAI) und Komponentenorientierung. Der Übergang zwischen diesen Paradigmen und SOA ist, nüchtern betrachtet, fließend, zumal auch die verwendeten Technologien großteils dieselben sind. SOA unterscheidet sich von seinen Vorgängern vor allem darin, dass der Aspekt der Interoperabilität, also das Zusammenspiel verschiedener Systeme, stärker im Vordergrund steht. Dies manifestiert sich in den bevorzugt verwendeten offenen Protokollen und Datenformaten, wie zum Beispiel HTTP, XML oder auch SOAP. Daneben So wird beispielsweise häufig auf serviceübergreifende Transaktionen verzichtet, da sich deren interoperable Implementierung in der Regel als sehr herausfordernd darstellt. Stattdessen werden im Fehlerfall Kompensationslogiken, welche die ursprünglichen Aktionen rückgängig machen, angestoßen. Bezogen auf das zuvor betrachtete Beispiel könnte es sich dabei um das Stornieren eines Fluges handeln.
1.1.3 Was ist ein Service?
Neben der Tatsache, dass es sich bei einem Service um eine Sammlung von Operationen, die von einzelnen Clients über ein Netzwerk konsumiert werden können, handelt, geht damit auch ein bestimmtes Mindset einher. Im Gegensatz zum klassischen Ansatz der Remote Procedure Calls (RPC) ist ein Service in sich geschlossen. Das bedeutet, dass das Innenleben eines Services für den Aufrufer eine Blackbox darstellt, sodass dieser nicht über technische Details Bescheid wissen muss. Aus diesem Grund sind Service-Operationen auch stark Use-Case-orientiert und selten technisch bzw. generisch. Dies führt auch dazu, dass Service-Operationen mitunter grobgranularer als herkömmliche Methoden sind. Ein gutes Beispiel hierfür bietet die nachfolgend dargestellte Operation BucheFlug. public Ticket BucheFlug(Buchung buchung) { . }
Einige dazu passende Negativbeispiele gehen aus Listing 1.1 hervor, zumal sich der Aufrufer hier mit technischen Konstrukten des Systems, wie zum Beispiel FlugHandles oder Seat- Handles, beschäftigen muss. Gute Services würden hingegen fachliche Konstrukte verwenden, z. B. Flüge anstatt FlugHandles.
Diese Operationen könnte es im vorhin betrachteten Positivbeispiel zwar auch geben, allerdings wären diese hier zum einen nicht öffentlich zugänglich und würden zum anderen von der Operation BucheFlug koordiniert werden. Services mit solchen Koordinierungsmethoden werden auch als Fassaden bzw. Servicefassaden bezeichnet, da sie dahinter liegende Details verbergen. Dabei soll nicht verschwiegen werden, dass die Verwendung von Fassaden auch schon vor dem Aufkommen des Begriffs SOA gängige Praxis im Bereich verteilter Geschäftsanwendungen war. Der Vorteil dieser Vorgehensweise liegt neben der Tatsache, dass sich der Aufrufer nicht mit Interna belasten muss, in einer geringeren Netzwerkbelastung, da anstatt vieler kleiner Nachrichten wenige oder nur eine größere zu übersenden sind. Daneben führt dieses Muster dazu, dass die von der Fassade gekapselten Details ohne Anpassungen des Clients ausgetauscht werden können. Dies erlaubt es, die verwendeten Software-Systeme einfacher an sich ändernde Geschäftsregeln und Abläufe anzupassen, was in weiterer Folge auch die Agilität des Unternehmens erhöht. Hierbei ist auch von loser Kopplung die Rede, was im betrachteten Fall bedeutet, dass der Client möglichst wenig über den konsumierten Service wissen muss.
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.