Steyer / Schwichtenberg / Fischer | Verteilte Systeme und Services mit .NET 4.5 | E-Book | www.sack.de
E-Book

E-Book, Deutsch, 674 Seiten

Steyer / Schwichtenberg / Fischer Verteilte Systeme und Services mit .NET 4.5

Konzepte und Lösungen für WCF 4.5 und ASP.NET Web-API
1. Auflage 2013
ISBN: 978-3-446-43565-0
Verlag: Carl Hanser Fachbuchverlag
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)

Konzepte und Lösungen für WCF 4.5 und ASP.NET Web-API

E-Book, Deutsch, 674 Seiten

ISBN: 978-3-446-43565-0
Verlag: Carl Hanser Fachbuchverlag
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)



VERTEILTE SYSTEME & SERVICES MIT .NET 4.5 //
- Für .NET-Entwickler, vom WCF-Einsteiger bis zum -Profi
- Ideal für das Selbststudium, für das Vertiefen und Nachschlagen
- Mit zahlreichen, aufeinander aufbauenden Beispiellösungen und wertvollen Tipps
- Forum für Fragen unter: www.it-visions.de/leser
- Alle Beispiele aus dem Buch unter: http://downloads.hanser.de
Mit diesem durch und durch praxisorientierten Handbuch bekommen Sie einen erstklassigen, didaktisch hervorragenden wie auch konkurrenzlosen Leitfaden an die Hand, um in .NET 4.5 komplexe Geschäftsprozesse planen und entwickeln zu können.
Das Themenspektrum ist groß: Sie lernen alle wichtigen .NET-Technologien, Techniken und Konzepte kennen, um in .NET 4.5 verteilte Systeme, Webservices und serviceorientierte Anwendungen zu erstellen.
Für die erfolgreiche Implementierung verteilter Systeme sind neben der Windows Communication Foundation bzw. der ASP.NET Web API weitere Frameworks notwendig. Detailliert erfahren Sie, wie Sie
- mittels WCF bzw. Web API und SignalR mit Systemen und Geschäftspartnern kommunizieren.
- Geschäftsprozesse in Form von Workflows mit Windows Workflow Foundation automatisieren.
- Single-Sign-On-Szenarien mit Windows Identity Foundation implementieren.
- verschiedene Systeme über Azure Service Bus standortübergreifend integrieren.
- mit Entity Framework, RIA- und Data-Services auf Datenbanken zugreifen.
AUS DEM INHALT:
Servicebasierte Systeme mit WCF umsetzen // REST-Services mit Web API erstellen // Benachrichtigungs-Szenarien mit SignalR // Single-Sign-On mit der Identity Foundation // Datenbasierte Services mit Entity Framework // Geschäftsprozesse mit Workflow Foundation // Systeme verbinden mit Azure Service Bus

Manfred STEYER: FH-Professor und Fachbereichsleiter Software Engineering an der FH CAMPUS 02 in Graz sowie Trainer und Berater bei www.IT-Visions.de. Dr. Holger SCHWICHTENBERG: Leiter des .NET-Expertennetzwerks www.IT-Visions.de. Matthias FISCHER, Jörg KRAUSE: Trainer, Berater und Entwickler für .NET-Technologien.

Steyer / Schwichtenberg / Fischer Verteilte Systeme und Services mit .NET 4.5 jetzt bestellen!

Weitere Infos & Material


1;Inhalt;6
2;Geleitwort des Herausgebers;18
3;Vorwort;20
4;1 Serviceorientierung;24
4.1;1.1 Konzeptionelle Ebene;24
4.1.1;1.1.1 Betriebswirtschaftliche Sicht;24
4.1.2;1.1.2 Technische Sicht;25
4.1.3;1.1.3 Was ist ein Service?;26
4.2;1.2 Technische Realisierung;27
4.2.1;1.2.1 SOAP;27
4.2.2;1.2.2 Web Service Description Language (WSDL);29
4.2.3;1.2.3 Universal Description, Discovery and Integration;30
4.2.4;1.2.4 WS-I;30
4.2.5;1.2.5 WS-*;31
4.2.6;1.2.6 RESTful Web Services als Gegenbewegung zu SOAP;31
4.2.7;1.2.7 POX-Services und Web APIs;34
4.2.8;1.2.8 SOAP und REST im Vergleich;35
4.3;1.3 WCF vs. ASP.NET Web API;36
5;2 WCF im Überblick;38
5.1;2.1 Architektur;38
5.2;2.2 Standard-Bindings;39
5.3;2.3 Hosting von Services;41
5.4;2.4 Erste Schritte mit WCF;42
5.4.1;2.4.1 Erstellen eines Web-Service-Projektes;42
5.4.2;2.4.2 Web-Service mit Client konsumieren;50
5.4.3;2.4.3 Mit Laufzeit-Proxy auf Service zugreifen;54
5.4.4;2.4.4 Service zur Verwendung von ws2007HttpBinding konfigurieren;55
5.4.5;2.4.5 NetTcpBinding und Self-Hosting;56
6;3 Services mit WCF erstellen;62
6.1;3.1 Verträge;62
6.1.1;3.1.1 Serviceverträge;62
6.1.2;3.1.2 Datenverträge;63
6.1.3;3.1.3 Nachrichtenverträge;66
6.1.4;3.1.4 SOAP-Binding festlegen;67
6.2;3.2 Instanziierung von Services;67
6.2.1;3.2.1 PerCall;68
6.2.2;3.2.2 Single;69
6.2.3;3.2.3 PerSession;69
6.3;3.3 Nebenläufigkeit;74
6.4;3.4 Asynchrone Service-Operationen;74
6.5;3.5 WCF konfigurieren;75
6.5.1;3.5.1 WCF deklarativ konfigurieren;75
6.5.2;3.5.2 WCF programmatisch konfigurieren;78
6.5.3;3.5.3 In IIS gehostete Services programmatisch konfigurieren

(ab .NET 4.5);78
6.5.4;3.5.4 Benutzerdefinierte Bindings;80
6.5.5;3.5.5 Einschränkungen für Bindings festlegen;81
6.5.6;3.5.6 Drosselung;82
6.5.7;3.5.7 Port-Sharing bei TCP-basierten Services;83
6.5.8;3.5.8 Konfiguration des Proxy-Servers;84
6.6;3.6 Metadaten;85
6.7;3.7 Services diagnostizieren;87
6.7.1;3.7.1 Protokollierung konfigurieren;87
6.7.2;3.7.2 Leistungsindikatoren;89
6.8;3.8 One-Way-Operationen;90
6.9;3.9 Duplex-Operationen;90
6.9.1;3.9.1 Unterstützte Bindings;91
6.9.2;3.9.2 Implementierung von Duplex-Szenarien;92
6.9.3;3.9.3 Konfigurieren von Duplex-Szenarien;93
6.9.4;3.9.4 Callbacks mit WebSockets (ab .NET 4.5);95
6.9.5;3.9.5 Grenzen von Callbacks;96
6.10;3.10 UDP und Multicasts (ab .NET 4.5);97
6.11;3.11 Umgang mit binären Daten;98
6.11.1;3.11.1 MTOM;99
6.11.2;3.11.2 Streaming;103
6.12;3.12 Fehlerbehandlung und FaultContracts;106
6.13;3.13 ASP.NET-Kompatibilität;108
6.14;3.14 Zuverlässige Sitzungen;110
6.14.1;3.14.1 Verlässliche Sitzungen konfigurieren;111
6.14.2;3.14.2 Verlässliche Sitzungen erzwingen;112
6.14.3;3.14.3 Idempotente Services als Alternative zu WS-ReliableMessaging;112
6.15;3.15 Transaktionale Services;113
6.15.1;3.15.1 Zwei-Phasen-Commit;113
6.15.2;3.15.2 Plug-in für WS-AtomicTransactions einrichten;113
6.15.3;3.15.3 Distributed Transaction Coordinator (DTC) einrichten;114
6.15.4;3.15.4 Transaktionen konfigurieren und nutzen;115
6.15.5;3.15.5 Transaktionsisolationslevel;117
6.15.6;3.15.6 Transaktion am Client starten;118
6.15.7;3.15.7 Transaktionen und Sessions;118
6.16;3.16 Queued Services;119
6.16.1;3.16.1 Microsoft Message Queuing Services (MSMQ);119
6.16.2;3.16.2 Implementierung von Queued Services;120
6.16.3;3.16.3 Queued Services konfigurieren;121
6.17;3.17 REST-basierte Services mit WCF;123
6.17.1;3.17.1 REST-Services mit WCF implementieren und konsumieren;124
6.17.2;3.17.2 Antwortformat dynamisch festlegen;127
6.17.3;3.17.3 Hilfe-Seiten (Help Pages);128
6.17.4;3.17.4 ASP.NET Cache Profiles;130
6.17.5;3.17.5 REST-Services über ASP.NET-Routen;131
6.17.6;3.17.6 Ausnahmen auf HTTP-Statuscodes abbilden;131
6.17.7;3.17.7 Conditional GET und ETag-Unterstützung;132
6.18;3.18 WCF und Windows 8;133
7;4 Sicherheit von WCF-Diensten;134
7.1;4.1 Überblick über WCF-Security;134
7.1.1;4.1.1 Transport- und Nachrichtensicherheit;134
7.1.2;4.1.2 Festlegen der zu verwendenden Credentials;136
7.1.3;4.1.3 Authentifizierung und Autorisierung;137
7.1.4;4.1.4 Service-Identitäten;139
7.1.5;4.1.5 Verschlüsseln und Signieren;139
7.2;4.2 Windows-Security;141
7.2.1;4.2.1 Impersonation;141
7.2.2;4.2.2 Kerberos vs. NTLM;142
7.3;4.3 Web-Security mit SSL und IIS;144
7.3.1;4.3.1 IIS für die Verwendung von SSL konfigurieren;144
7.3.2;4.3.2 Konfiguration des Service;148
7.3.3;4.3.3 Aufruf der Service-Operation;149
7.3.4;4.3.4 Benutzerdefinierte Authentifizierung und Autorisierung;149
7.4;4.4 Web-Security mit SSL ohne IIS;156
7.5;4.5 Nachrichtenbasierte Sicherheit;157
7.5.1;4.5.1 Zertifikate einrichten;157
7.5.2;4.5.2 Konfiguration;158
7.5.3;4.5.3 Aufruf der Service-Operation;160
7.6;4.6 Client-Zertifikate;160
7.7;4.7 Federated und Claims-based Security mit Windows Identity Foundation (WIF);162
7.7.1;4.7.1 Architektur;163
7.7.2;4.7.2 Web-Service-Standards;164
7.7.3;4.7.3 Implementierung in .NET 4.5;164
7.7.4;4.7.4 Implementierung für Versionen vor 4.5;178
8;5 Lose Kopplung mit WCF;190
8.1;5.1 Routing (System.ServiceModel.Routing);190
8.1.1;5.1.1 Architektur;191
8.1.2;5.1.2 Routerarten;192
8.1.3;5.1.3 Beispielanwendung (Routing Testclient);193
8.1.4;5.1.4 Filter;194
8.1.5;5.1.5 Erstellen des Routers mit WCF 4.x;197
8.1.6;5.1.6 Konfiguration eines Routers;197
8.1.7;5.1.7 Router für das Routing-Testszenario;198
8.1.8;5.1.8 Entwicklung des Clients;203
8.1.9;5.1.9 Dynamische Filter entwickeln;204
8.1.10;5.1.10 Dynamische Filter mit eigener Filtertabelle;206
8.1.11;5.1.11 Leistungsverlust durch Routing;210
8.2;5.2 Discovery;211
8.2.1;5.2.1 Dienst mit Discovery;211
8.2.2;5.2.2 Client mit Discovery;212
8.2.3;5.2.3 Mögliche Services mittels Scopes einschränken;213
8.2.4;5.2.4 Clients für die Verwendung mit Discovery deklarativ konfigurieren;214
8.2.5;5.2.5 Ankündigungen (Announcements);215
8.3;5.3 Ereignisse und Publish-/Subscribe-Szenarien;217
8.3.1;5.3.1 Service-Verträge;217
8.3.2;5.3.2 Implementierung eines Publish-/Subscribe-Service;218
8.3.3;5.3.3 Konfiguration;220
8.3.4;5.3.4 Implementierung des zu benachrichtigenden Clients;221
8.3.5;5.3.5 Weiterführende Überlegungen;222
8.4;5.4 ESB-Lösungen mit WCF entwickeln;222
8.4.1;5.4.1 Catch-All-Verträge;222
8.4.2;5.4.2 Nachrichtentransformation;223
8.5;5.5 Freie ESB-Implementierung;227
9;6 ASP.NET Web API;228
9.1;6.1 REST-Services mit ASP.NET

Web API erstellen;228
9.1.1;6.1.1 Parameter und Rückgabewerte;229
9.1.2;6.1.2 Dynamische Parameter;231
9.1.3;6.1.3 REST-Services konfigurieren;232
9.1.4;6.1.4 REST-Services mit Fiddler testen;233
9.1.5;6.1.5 Mehr Kontrolle über HTTP;234
9.1.6;6.1.6 REST-Services über HttpClient konsumieren;237
9.1.7;6.1.7 Hilfe-Seiten;240
9.2;6.2 Tracing;244
9.2.1;6.2.1 Standard-Implementierung von ITraceWriter;244
9.2.2;6.2.2 Eigenen TraceWriter implementieren;245
9.3;6.3 OData-Unterstützung;246
9.4;6.4 Self-Hosting mit Web APIs;246
9.5;6.5 Querschnittsfunktionen an globalen Stellen platzieren;247
9.5.1;6.5.1 Querschnittsfunktionen mit Message-Handler implementieren;248
9.5.2;6.5.2 Handler mit HttpClient verwenden;249
9.5.3;6.5.3 Querschnittsfunktionen mit Filter realisieren;251
9.6;6.6 Erweiterte Konfigurationsmöglichkeiten;255
9.6.1;6.6.1 Benutzerdefinierte Routen;255
9.6.2;6.6.2 Controller-basierte Konfiguration;255
9.6.3;6.6.3 Routen-basierte Konfiguration;256
9.7;6.7 Deklaratives Validieren von Parametern;257
9.7.1;6.7.1 Verwenden von Data-Attributen;257
9.7.2;6.7.2 Auswerten von Validierungsattributen;259
9.7.3;6.7.3 Benutzerdefinierte Validierungsattribute;260
9.8;6.8 Benutzerdefinierte Formate unterstützen;261
9.8.1;6.8.1 Formatter implementieren;261
9.8.2;6.8.2 Formatter serverseitig registrieren und testen;263
9.8.3;6.8.3 Formatter mit HttpClient verwenden;263
9.8.4;6.8.4 Binäre Serialisierung mit BSON;264
9.9;6.9 Serialisierung beeinflussen;264
9.9.1;6.9.1 JSON-Serializer konfigurieren;265
9.9.2;6.9.2 XML-Serializer konfigurieren;266
9.9.3;6.9.3 Eigenschaften von der Serialisierung ausnehmen;266
9.9.4;6.9.4 Zirkuläre Referenzen serialisieren;266
9.10;6.10 Streaming;269
9.10.1;6.10.1 Action-Methoden für Streaming vorbereiten;269
9.10.2;6.10.2 Streaming in Self-Hosting-Szenarien konfigurieren;270
9.10.3;6.10.3 Streaming für IIS konfigurieren;270
9.10.4;6.10.4 Streams über HttpClient verwenden;272
9.11;6.11 Fortschritt ermitteln;273
9.12;6.12 Web API und HTML-Formulare;274
9.12.1;6.12.1 Einfache Formular-Felder übermitteln;274
9.12.2;6.12.2 Dateiupload via HTML-Formular;275
9.13;6.13 ASP.NET Web API erweitern;277
9.13.1;6.13.1 Abhängigkeiten auflösen mit benutzerdefiniertem DependencyResolver;277
9.13.2;6.13.2 Zusätzliche Assemblies mit AssemblyResolver laden;278
9.13.3;6.13.3 Service-Operationen über HttpActionSelector auswählen;279
9.13.4;6.13.4 Controller über HttpControllerSelector auswählen;280
9.13.5;6.13.5 Methodenparameter auf benutzerdefinierte Weise

mit HttpParameterBinding;282
10;7 ASP.NET Web API Security;286
10.1;7.1 Verschlüsselte Übertragung;286
10.1.1;7.1.1 SSL mit IIS;286
10.1.2;7.1.2 SSL in Self-Hosting-Szenarien;286
10.1.3;7.1.3 Diskussion über Nachrichtensicherheit;287
10.2;7.2 Authentifizierung und Autorisierung;287
10.2.1;7.2.1 Operationen absichern;287
10.2.2;7.2.2 HTTP-Authentifizierung mit IIS;289
10.2.3;7.2.3 HTTP-Authentifizierung in Self-Hosting-Szenarien;290
10.2.4;7.2.4 Benutzer mit HttpClient authentifizieren;291
10.2.5;7.2.5 Benutzerdefinierte Security mit Handler;291
10.2.6;7.2.6 Benutzerdefinierte Security mit HTTP-Module;293
10.2.7;7.2.7 Mit Client-Zertifikaten arbeiten;296
10.3;7.3 Single Sign-On mit OAuth2 und

DotNetOpenAuth;300
10.3.1;7.3.1 OAuth2;300
10.3.2;7.3.2 OAuth2 und REST-Services;301
10.3.3;7.3.3 Implementieren eines Authorization Servers mit

DotNetOpenAuth;301
10.3.4;7.3.4 Client für OAuth2-Szenario;307
10.3.5;7.3.5 Service mittels OAuth2 absichern;308
11;8 ASP.NET SignalR;310
11.1;8.1 Long-Polling;310
11.2;8.2 Web Sockets;311
11.3;8.3 ASP.NET SignalR;311
11.4;8.4 PersistentConnection;312
11.4.1;8.4.1 Erste Schritte mit SignalR und PersistentConnection;312
11.4.2;8.4.2 Lifecycle-Methoden;313
11.4.3;8.4.3 URL-Mapping für PersistentConnection;314
11.4.4;8.4.4 Einfacher Client für eine PersistentConnection;314
11.4.5;8.4.5 Einfacher JavaScript-Client für eine PersistentConnection;315
11.4.6;8.4.6 Daten über serverseitige Prozesse an Connection senden;317
11.5;8.5 Hubs;317
11.5.1;8.5.1 Methoden und Callbacks mit SignalR und Hubs;317
11.5.2;8.5.2 URL-Mapping für Hubs;319
11.5.3;8.5.3 Lifecycle-Methoden;319
11.5.4;8.5.4 Hubs konsumieren;319
11.5.5;8.5.5 Hubs über JavaScript konsumieren;322
11.5.6;8.5.6 Gruppen;325
11.5.7;8.5.7 Hubs über serverseitige Prozesse benachrichtigen;326
11.6;8.6 Pipeline-Modules für Querschnittsfunktionen;326
11.7;8.7 SignalR konfigurieren;328
11.8;8.8 SignalR skalieren;328
12;9 Hosting von WCF- und Web API-Diensten;330
12.1;9.1 Hosting in Windows-Systemdiensten;330
12.1.1;9.1.1 Erstellen eines Windows-Systemdienstes;331
12.1.2;9.1.2 Ergänzen eines WCF-Dienstes in einem Systemdienst;333
12.1.3;9.1.3 Ergänzen eines Web API-Dienstes in einem Systemdienst;334
12.1.4;9.1.4 Trick für das Debugging eines Systemdienstes;334
12.1.5;9.1.5 Vorbereiten der Installation eines Systemdienstes;337
12.1.6;9.1.6 Installation eines Systemdienstes;338
12.2;9.2 Hosting im Internet Information Server (IIS)/Windows Server AppFabric;340
12.2.1;9.2.1 Von IIS über WAS zu AppFabric;340
12.2.2;9.2.2 IIS-Websites;341
12.2.3;9.2.3 IIS-Anwendungen;347
12.2.4;9.2.4 IIS-Anwendungspools;348
12.2.5;9.2.5 Autostart;354
12.3;9.3 WCF-Projekte für den IIS;357
12.3.1;9.3.1 .svc-Dateien;358
12.3.2;9.3.2 Test des Dienstes;358
12.3.3;9.3.3 Abruf der Metadaten;359
12.3.4;9.3.4 Konfigurationsdatei;360
12.3.5;9.3.5 WCF ohne SVC-Datei;362
12.3.6;9.3.6 Eigene ServiceHostFactory;362
12.4;9.4 ASP.NET Web API-Projekte für den IIS;363
12.5;9.5 Installieren von WCF- und

Web API-Diensten im IIS;363
12.5.1;9.5.1 Manuelles Verbreiten von Diensten (XCopy-Deployment);363
12.5.2;9.5.2 Verbreiten mit der Funktion „Build/Publish“ in Visual Studio direkt auf einen IIS;364
12.5.3;9.5.3 Verbreiten von Diensten mit dem IIS Web Deployment Tool

(MSDeploy);365
12.6;9.6 Konfiguration und Monitoring mit den „AppFabric“-Erweiterungen;375
12.6.1;9.6.1 Installation;376
12.6.2;9.6.2 AppFabric-Ansichten;377
12.6.3;9.6.3 Überwachungsfunktionen;379
12.6.4;9.6.4 Weitere Konfigurationsmöglichkeiten;381
13;10 Service Bus und Access Control für Windows Azure und Windows Server;384
13.1;10.1 Überblick;384
13.2;10.2 Namespace einrichten;385
13.3;10.3 Relaying;386
13.3.1;10.3.1 Relay-Bindings;387
13.3.2;10.3.2 Service über Relaying bereitstellen;387
13.3.3;10.3.3 Service über Relaying konsumieren;390
13.4;10.4 Lose Kopplung mit Queues und Topics;391
13.4.1;10.4.1 Zugriff auf Queues und Topics;393
13.4.2;10.4.2 Transaktionen;393
13.4.3;10.4.3 Sitzungen;394
13.4.4;10.4.4 Metadaten, Filtern und Stamping;394
13.4.5;10.4.5 Queues über die .NET-API ansprechen;394
13.4.6;10.4.6 Queues programmatisch erzeugen;395
13.4.7;10.4.7 Nachrichten an Queues senden;396
13.4.8;10.4.8 Nachrichten aus Queues abrufen;397
13.4.9;10.4.9 Mit Sitzungen arbeiten;399
13.4.10;10.4.10 Aus Dead Letter Queue lesen;400
13.4.11;10.4.11 Topics und Abonnenten einrichten;401
13.4.12;10.4.12 Nachrichten unter Verwendung von Topics senden

und abrufen;403
13.4.13;10.4.13 Queues über WCF ansprechen;405
13.4.14;10.4.14 WCF-Sitzungen realisieren;408
13.4.15;10.4.15 Topics via WCF abonnieren;409
13.5;10.5 Windows Azure Access Control;410
13.5.1;10.5.1 AC konfigurieren;410
13.5.2;10.5.2 Service mit AC absichern;412
13.5.3;10.5.3 Azure Service Bus mit AC absichern;416
13.6;10.6 Windows Server Service Bus;417
13.6.1;10.6.1 Namespaces administrieren;418
13.6.2;10.6.2 Auf Queues und Topics zugreifen;418
13.6.3;10.6.3 Zugriff auf Queues und Topics einschränken;419
14;11 Datenbasierte Services;420
14.1;11.1 Was sind datenbasierte Services?;420
14.2;11.2 Services und ADO.NET Entity Framework;420
14.2.1;11.2.1 Vom DataSet zum Entity Framework;420
14.2.2;11.2.2 Grundlagen der Self-Tracking Entities;422
14.2.3;11.2.3 Beispielanwendung;426
14.3;11.3 ADO.NET Entity Framework Code First (Code Only);435
14.3.1;11.3.1 Die drei Ebenen des ADO.NET Entity Framework;435
14.3.2;11.3.2 Vorbereitungen;436
14.3.3;11.3.3 Entitätsklassen;436
14.3.4;11.3.4 Kontextklasse;441
14.3.5;11.3.5 Nutzen der Kontextklasse;442
14.3.6;11.3.6 Einsatzbeispiel;443
14.3.7;11.3.7 Konvention vor Konfiguration;446
14.3.8;11.3.8 Codebasierte Konfiguration;448
14.3.9;11.3.9 Schemamigrationen;449
14.3.10;11.3.10 Entity Framework Power Tools;450
14.3.11;11.3.11 Code Only und Webservices;452
14.4;11.4 Kritik an der Implementierung eines datenbasierten Service mit WCF;453
14.5;11.5 WCF Data Services (Open Data Protocol);454
14.5.1;11.5.1 Lizenz und Standardisierung;454
14.5.2;11.5.2 Bezug der WCF Data Services;454
14.5.3;11.5.3 Andere Bibliotheken;455
14.5.4;11.5.4 Rahmenbedingungen;456
14.5.5;11.5.5 OData-Beispiel;456
14.5.6;11.5.6 Architektur;458
14.5.7;11.5.7 Abfragesyntax;459
14.5.8;11.5.8 Einen WCF Data Service erstellen;460
14.5.9;11.5.9 Zugriffsrechte;460
14.5.10;11.5.10 Fehlermeldungen aktivieren;462
14.5.11;11.511 Einen WCF Data Service im Webbrowser testen;463
14.5.12;11.5.12 Abruf der Metadaten;465
14.5.13;11.5.13 Einen WCF Data Service mit Fiddler testen;466
14.5.14;11.5.14 Einen .NET-basierten Client erstellen;466
14.5.15;11.5.15 Tipps und Tricks;471
14.6;11.6 WCF RIA Services;480
14.6.1;11.6.1 Architektur der RIA Services;481
14.6.2;11.6.2 Einen RIA Service erstellen;482
14.6.3;11.6.3 Einen RIA Service nutzen;486
14.7;11.7 Datenbasierte REST-Services mit ASP.NET Web API und dem Open Data Protocol (OData);489
14.7.1;11.7.1 Daten mit OData flexibel abfragen;489
14.7.2;11.7.2 Mögliche OData-Abfragen einschränken;491
14.7.3;11.7.3 OData-Abfragen global aktivieren;493
14.7.4;11.7.4 OData-Abfragen manuell auswerten;493
14.7.5;11.7.5 Daten mit OData verwalten;494
14.8;11.8 Vergleich und Fazit;498
15;12 Workflows und Workflow Services;502
15.1;12.1 Überblick;502
15.2;12.2 Visual Studio-Projektvorlagen;503
15.3;12.3 Sequenzielle Workflows;503
15.3.1;12.3.1 Sequenzielle Workflows erstellen;503
15.3.2;12.3.2 Sequenzielle Workflows ausführen;504
15.3.3;12.3.3 Kontrollfluss;505
15.4;12.4 Flussdiagramme;507
15.5;12.5 Zustandsautomaten (State Machines);508
15.6;12.6 Transaktionen und Kompensation;510
15.6.1;12.6.1 Transaktionen;510
15.6.2;12.6.2 Kompensation;510
15.7;12.7 WCF Workflow Services;512
15.7.1;12.7.1 Workflow Services erstellen;512
15.7.2;12.7.2 Workflow Services testen;513
15.7.3;12.7.3 Workflow Services konfigurieren;514
15.7.4;12.7.4 Korrelation;515
15.7.5;12.7.5 Contract-First (ab .NET 4.5);516
15.8;12.8 Benutzerdefinierte Aktivitäten;518
15.8.1;12.8.1 CodeActivity;518
15.8.2;12.8.2 AsyncCodeActivity;519
15.8.3;12.8.3 NativeActivity;520
15.8.4;12.8.4 Anpassen der Darstellung benutzerdefinierter Aktivitäten;523
15.9;12.9 Bookmarks;525
15.10;12.10 Persistenz;526
15.10.1;12.10.1 SQLWorkflowInstanceStore;526
15.10.2;12.10.2 Eigenschaften höherstufen;529
15.10.3;12.10.3 Höherstufen von Eigenschaften bei Verwendung

von WCF Workflow Services;531
15.11;12.11 Versionisierung und Aktualisierung von Workflows (ab .NET 4.5);533
15.11.1;12.11.1 Side-by-Side-Versionisierung;533
15.11.2;12.11.2 Dynamic Update;539
15.11.3;12.11.3 Dynamic Update mit WorkflowControlEndpoint;544
15.12;12.12 Ablaufverfolgung (Tracking);546
15.12.1;12.12.1 Benutzerdefinierte Tracking Records erzeugen;546
15.12.2;12.12.2 Tracking Records abonnieren;547
15.12.3;12.12.3 Tracking Records einsehen;549
15.13;12.13 Workflow-Designer in eigenen Anwendungen hosten;550
15.14;12.14 WCF-Dienste und -Services in AppFabric hosten;551
15.14.1;12.14.1 Monitoring;552
15.14.2;12.14.2 Persistenz;554
15.14.3;12.14.3 Weitere Möglichkeiten;555
16;13 Das WCF-Erweiterungsmodell;556
16.1;13.1 Übersicht;556
16.1.1;13.1.1 Was sich erweitern lässt;556
16.1.2;13.1.2 Die Laufzeitumgebung der Applikation erweitern;557
16.2;13.2 Erweiterung des Sicherheitsmodells;557
16.2.1;13.2.1 Verantwortungsbereich der WCF Security Component;557
16.2.2;13.2.2 Das WebService-(WS-)Sicherheitsmodell;557
16.2.3;13.2.3 Implementierung der WebService-(WS-)Sicherheit;558
16.3;13.3 Erweiterung des Bindungssystems;562
16.3.1;13.3.1 Bindungen und Bindungselemente;563
16.3.2;13.3.2 Nachrichtenkanäle;563
16.3.3;13.3.3 Benutzerdefinierte Bindungen;564
16.4;13.4 Weitere Erweiterungsfunktionen;565
16.4.1;13.4.1 Erweiterung des Metadatenmodells;565
16.4.2;13.4.2 Erweiterungen der Serialisierung;566
17;14 WCF erweitern;568
17.1;14.1 ServiceHost und Dienstmodellebene;568
17.1.1;14.1.1 Aufbau der Dienstmodellebene;568
17.1.2;14.1.2 Erweiterung mittels Verhalten;569
17.1.3;14.1.3 Erweiterung von Clients;572
17.1.4;14.1.4 Erweiterung des Dispatchers;577
17.1.5;14.1.5 Erweiterbare Objekte;585
17.1.6;14.1.6 Erweitertes Hosting – die Klasse ServiceHostFactory;588
17.2;14.2 Erweiterung des Bindungsmodells;590
17.2.1;14.2.1 Konfigurieren mittels Bindungselementen;590
17.2.2;14.2.2 Bindungen selbst erstellen;591
17.2.3;14.2.3 Erstellen eines eigenen Bindungselements;593
17.3;14.3 Channel Layer- und Peer Channel-Erweiterungen;595
17.3.1;14.3.1 Funktionsweise;596
17.3.2;14.3.2 Benutzerdefinierte Übertragungskanäle;596
17.3.3;14.3.3 Benutzerdefinierte Nachrichtenencoder;606
17.4;14.4 Das Metadatensystem;608
17.4.1;14.4.1 Funktionsweise;609
17.4.2;14.4.2 Anwendung;609
17.5;14.5 Serialisierung und Encoder;614
17.5.1;14.5.1 Ersetzen von Datenverträgen;614
17.5.2;14.5.2 Eigene Formatierer;620
17.6;14.6 Erweiterung des Sicherheitsmodells;626
17.6.1;14.6.1 Aufbau der Sicherheitsarchitektur;626
17.6.2;14.6.2 Benutzerdefinierte Anmeldeinformation und Token;626
17.6.3;14.6.3 Benutzerdefinierte Nachrichtenverschlüsselung;644
18;Anhang – NuGet;654
19;Index;658


1 Serviceorientierung (S. 1-3)

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.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.