Verteilte Systeme und Services mit .NET 4.5 (eBook)
XXII, 674 Seiten
Carl Hanser Fachbuchverlag
978-3-446-43565-0 (ISBN)
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.
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.
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
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.
| Erscheint lt. Verlag | 4.4.2013 |
|---|---|
| Verlagsort | München |
| Sprache | deutsch |
| Themenwelt | Mathematik / Informatik ► Informatik |
| Schlagworte | AppFabric • ASP.NET Web API • Entity Framework • Entity Framework 5 • SignalR • SOA • WCF • WebServices • Windows Azure Service Bus • Windows Communication Foundation • Windows Identity Foundation • Windows Workflow Foundation |
| ISBN-10 | 3-446-43565-4 / 3446435654 |
| ISBN-13 | 978-3-446-43565-0 / 9783446435650 |
| Informationen gemäß Produktsicherheitsverordnung (GPSR) | |
| Haben Sie eine Frage zum Produkt? |
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich