ebook img

Verteilte Systeme und Services mit .NET 4.5: Konzepte und Lösungen für WCF 4.5 und ASP.NET Web-API PDF

668 Pages·2013·16.43 MB·German
by  Steyer
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Verteilte Systeme und Services mit .NET 4.5: Konzepte und Lösungen für WCF 4.5 und ASP.NET Web-API

K G R E E B N H E T T H C O I W H I C L S B r e g I ol B h r. manfred STEYER d T n holger SCHWICHTENBERG o E g. v matthias FISCHER N s r jörg KRAUSE h . VERTEILTE SYSTEME UND SERVICES MIT .NET 4.5 KONZEPTE UND LÖSUNGEN MIT WCF 4.5 UND ASP.NET WEB-API 2. Auflage Zusammenspiel vonWCF, ASP.NET Web API, SignalR, Workflow Foundation, Identity Foundation, Entity Framework und Azure Service Bus EXTRA: Mit kostenlosem E-Book Steyer/Schwichtenberg/Fischer/Krause Verteilte Systeme und Services mit .NET 4.5 Bleiben Sie auf dem Laufenden! Der Hanser Computerbuch-Newsletter informiert Sie regelmäßig über neue Bücher und Termine aus den verschiedenen Bereichen der IT. Profitieren Sie auch von Gewinnspielen und exklusiven Leseproben. Gleich anmelden unter www.hanser-fachbuch.de/newsletter III Manfred Steyer Holger Schwichtenberg Matthias Fischer Jörg Krause Verteilte Systeme und Services mit .NET 4.5 Konzepte und Lösungen für WCF 4.5 und ASP.NET Web-API 2., überarbeitete und erweiterte Auflage Die Autoren: Manfred Steyer, IT-Visions.de, FH CAMPUS 02, Graz Holger Schwichtenberg (Herausgeber und Autor), IT-Visions.de, Essen Matthias Fischer, Rathenow bei Berlin Jörg Krause, Berlin Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bes- tem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz aus- zuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autoren und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht. Ebenso übernehmen Autoren und Verlag keine Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Waren be zeich nungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeich- nung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz- Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Bibliografische Information der Deutschen Nationalbibliothek: Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbiblio- grafie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden. © 2013 Carl Hanser Verlag München, www.hanser.de Lektorat: Sieglinde Schärl Copy editing: Sandra Gottmann, Münster-Nienberge Herstellung: Irene Weilhart Umschlagdesign: Marc Müller-Bremer, www.rebranding.de, München Umschlagrealisation: Stephan Rönigk Gesamtherstellung: Kösel, Krugzell Ausstattung patentrechtlich geschützt. Kösel FD 351, Patent-Nr. 0748702 Printed in Germany print-ISBN: 978-3-446-43443-1 e-book-ISBN: 978-3-446-43565-0 Inhalt Geleitwort des Herausgebers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XVII Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XIX 1 Serviceorientierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 Konzeptionelle Ebene ................................................ 1 1.1.1 Betriebswirtschaftliche Sicht ................................... 1 1.1.2 Technische Sicht .............................................. 2 1.1.3 Was ist ein Service? ........................................... 3 1.2 Technische Realisierung .............................................. 4 1.2.1 SOAP ....................................................... 4 1.2.2 Web Service Description Language (WSDL) ....................... 6 1.2.3 Universal Description, Discovery and Integration .................. 7 1.2.4 WS-I ........................................................ 7 1.2.5 WS-* ........................................................ 8 1.2.6 RESTful Web Services als Gegenbewegung zu SOAP ................ 8 1.2.7 POX-Services und Web APIs .................................... 11 1.2.8 SOAP und REST im Vergleich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.3 WCF vs. ASP.NET Web API ............................................ 13 2 WCF im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1 Architektur ......................................................... 15 2.2 Standard-Bindings ................................................... 16 2.3 Hosting von Services ................................................. 18 2.4 Erste Schritte mit WCF ............................................... 19 2.4.1 Erstellen eines Web-Service-Projektes ............................ 19 2.4.2 Web-Service mit Client konsumieren ............................. 27 2.4.3 Mit Laufzeit-Proxy auf Service zugreifen .......................... 31 2.4.4 Service zur Verwendung von ws2007HttpBinding konfigurieren ..... 32 2.4.5 NetTcpBinding und Self-Hosting ................................. 33 VI Inhalt 3 Services mit WCF erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.1 Verträge ............................................................ 39 3.1.1 Serviceverträge ............................................... 39 3.1.2 Datenverträge ................................................ 40 3.1.3 Nachrichtenverträge ........................................... 43 3.1.4 SOAP-Binding festlegen ........................................ 44 3.2 Instanziierung von Services ........................................... 44 3.2.1 PerCall ...................................................... 45 3.2.2 Single ....................................................... 46 3.2.3 PerSession ................................................... 46 3.3 Nebenläufigkeit ..................................................... 51 3.4 Asynchrone Service-Operationen ....................................... 51 3.5 WCF konfigurieren ................................................... 52 3.5.1 WCF deklarativ konfigurieren ................................... 52 3.5.2 WCF programmatisch konfigurieren ............................. 55 3.5.3 In IIS gehostete Services programmatisch konfigurieren (ab .NET 4.5) 55 3.5.4 Benutzerdefinierte Bindings .................................... 57 3.5.5 Einschränkungen für Bindings festlegen .......................... 58 3.5.6 Drosselung .................................................. 59 3.5.7 Port-Sharing bei TCP-basierten Services .......................... 60 3.5.8 Konfiguration des Proxy-Servers ................................ 61 3.6 Metadaten .......................................................... 62 3.7 Services diagnostizieren .............................................. 64 3.7.1 Protokollierung konfigurieren ................................... 64 3.7.2 Leistungsindikatoren .......................................... 66 3.8 One-Way-Operationen ................................................ 67 3.9 Duplex-Operationen .................................................. 67 3.9.1 Unterstützte Bindings ......................................... 68 3.9.2 Implementierung von Duplex-Szenarien .......................... 69 3.9.3 Konfigurieren von Duplex-Szenarien ............................. 70 3.9.4 Callbacks mit WebSockets (ab .NET 4.5) .......................... 72 3.9.5 Grenzen von Callbacks ........................................ 73 3.10 UDP und Multicasts (ab .NET 4.5) ...................................... 74 3.11 Umgang mit binären Daten ............................................ 75 3.11.1 MTOM ...................................................... 76 3.11.2 Streaming ................................................... 80 3.12 Fehlerbehandlung und FaultContracts .................................. 83 3.13 ASP.NET-Kompatibilität ............................................... 85 3.14 Zuverlässige Sitzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 3.14.1 Verlässliche Sitzungen konfigurieren ............................ 88 3.14.2 Verlässliche Sitzungen erzwingen ............................... 89 3.14.3 Idempotente Services als Alternative zu WS-ReliableMessaging ...... 89 3.15 Transaktionale Services .............................................. 90 3.15.1 Zwei-Phasen-Commit .......................................... 90 3.15.2 Plug-in für WS-AtomicTransactions einrichten ..................... 90 Inhalt VII 3.15.3 Distributed Transaction Coordinator (DTC) einrichten .............. 91 3.15.4 Transaktionen konfigurieren und nutzen ......................... 92 3.15.5 Transaktionsisolationslevel ..................................... 94 3.15.6 Transaktion am Client starten .................................. 95 3.15.7 Transaktionen und Sessions .................................... 95 3.16 Queued Services ..................................................... 96 3.16.1 Microsoft Message Queuing Services (MSMQ) ..................... 96 3.16.2 Implementierung von Queued Services ........................... 97 3.16.3 Queued Services konfigurieren .................................. 98 3.17 REST-basierte Services mit WCF ....................................... 100 3.17.1 REST-Services mit WCF implementieren und konsumieren . . . . . . . . . . 101 3.17.2 Antwortformat dynamisch festlegen ............................. 104 3.17.3 Hilfe-Seiten (Help Pages) ....................................... 105 3.17.4 ASP.NET Cache Profiles ........................................ 107 3.17.5 REST-Services über ASP.NET-Routen ............................. 108 3.17.6 Ausnahmen auf HTTP-Statuscodes abbilden ....................... 108 3.17.7 Conditional GET und ETag-Unterstützung ......................... 109 3.18 WCF und Windows 8 ................................................. 110 4 Sicherheit von WCF-Diensten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 4.1 Überblick über WCF-Security .......................................... 111 4.1.1 Transport- und Nachrichtensicherheit ............................ 111 4.1.2 Festlegen der zu verwendenden Credentials ....................... 113 4.1.3 Authentifizierung und Autorisierung ............................ 114 4.1.4 Service-Identitäten ............................................ 116 4.1.5 Verschlüsseln und Signieren .................................... 116 4.2 Windows-Security ................................................... 118 4.2.1 Impersonation ................................................ 118 4.2.2 Kerberos vs. NTLM ............................................ 119 4.3 Web-Security mit SSL und IIS .......................................... 121 4.3.1 IIS für die Verwendung von SSL konfigurieren ..................... 121 4.3.2 Konfiguration des Service ...................................... 125 4.3.3 Aufruf der Service-Operation ................................... 126 4.3.4 Benutzerdefinierte Authentifizierung und Autorisierung ............ 126 4.4 Web-Security mit SSL ohne IIS ......................................... 133 4.5 Nachrichtenbasierte Sicherheit ........................................ 134 4.5.1 Zertifikate einrichten .......................................... 134 4.5.2 Konfiguration ................................................ 135 4.5.3 Aufruf der Service-Operation ................................... 137 4.6 Client-Zertifikate .................................................... 137 4.7 Federated und Claims-based Security mit Windows Identity Foundation (WIF) 139 4.7.1 Architektur .................................................. 140 4.7.2 Web-Service-Standards ........................................ 141 4.7.3 Implementierung in .NET 4.5 ................................... 141 4.7.4 Implementierung für Versionen vor 4.5 ........................... 155 VIII Inhalt 5 Lose Kopplung mit WCF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 5.1 Routing (System.ServiceModel.Routing) ................................. 167 5.1.1 Architektur .................................................. 168 5.1.2 Routerarten .................................................. 169 5.1.3 Beispielanwendung (Routing Testclient) .......................... 170 5.1.4 Filter ........................................................ 171 5.1.5 Erstellen des Routers mit WCF 4.x ............................... 174 5.1.6 Konfiguration eines Routers .................................... 174 5.1.7 Router für das Routing-Testszenario .............................. 175 5.1.8 Entwicklung des Clients ....................................... 180 5.1.9 Dynamische Filter entwickeln ................................... 181 5.1.10 Dynamische Filter mit eigener Filtertabelle ....................... 183 5.1.11 Leistungsverlust durch Routing ................................. 187 5.2 Discovery .......................................................... 188 5.2.1 Dienst mit Discovery .......................................... 188 5.2.2 Client mit Discovery ........................................... 189 5.2.3 Mögliche Services mittels Scopes einschränken .................... 190 5.2.4 Clients für die Verwendung mit Discovery deklarativ konfigurieren ... 191 5.2.5 Ankündigungen (Announcements) .............................. 192 5.3 Ereignisse und Publish-/Subscribe-Szenarien ............................ 194 5.3.1 Service-Verträge .............................................. 194 5.3.2 Implementierung eines Publish-/Subscribe-Service ................ 195 5.3.3 Konfiguration ................................................ 197 5.3.4 Implementierung des zu benachrichtigenden Clients . . . . . . . . . . . . . . . 198 5.3.5 Weiterführende Überlegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 5.4 ESB-Lösungen mit WCF entwickeln ..................................... 199 5.4.1 Catch-All-Verträge ............................................ 199 5.4.2 Nachrichtentransformation ..................................... 200 5.5 Freie ESB-Implementierung ........................................... 204 6 ASP .NET Web API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 6.1 REST-Services mit ASP.NET Web API erstellen ........................... 205 6.1.1 Parameter und Rückgabewerte .................................. 206 6.1.2 Dynamische Parameter ........................................ 208 6.1.3 REST-Services konfigurieren .................................... 209 6.1.4 REST-Services mit Fiddler testen ................................ 210 6.1.5 Mehr Kontrolle über HTTP ..................................... 211 6.1.6 REST-Services über HttpClient konsumieren ...................... 214 6.1.7 Hilfe-Seiten .................................................. 217 6.2 Tracing ............................................................ 221 6.2.1 Standard-Implementierung von ITraceWriter ...................... 221 6.2.2 Eigenen TraceWriter implementieren ............................ 222 6.3 OData-Unterstützung ................................................. 223 6.4 Self-Hosting mit Web APIs ............................................ 223 6.5 Querschnittsfunktionen an globalen Stellen platzieren ..................... 224 Inhalt IX 6.5.1 Querschnittsfunktionen mit Message-Handler implementieren ....... 225 6.5.2 Handler mit HttpClient verwenden .............................. 226 6.5.3 Querschnittsfunktionen mit Filter realisieren ..................... 228 6.6 Erweiterte Konfigurationsmöglichkeiten ................................. 232 6.6.1 Benutzerdefinierte Routen ...................................... 232 6.6.2 Controller-basierte Konfiguration ................................ 232 6.6.3 Routen-basierte Konfiguration .................................. 233 6.7 Deklaratives Validieren von Parametern ................................. 234 6.7.1 Verwenden von Data-Attributen ................................. 234 6.7.2 Auswerten von Validierungsattributen ........................... 236 6.7.3 Benutzerdefinierte Validierungsattribute ......................... 237 6.8 Benutzerdefinierte Formate unterstützen ................................ 238 6.8.1 Formatter implementieren ..................................... 238 6.8.2 Formatter serverseitig registrieren und testen ..................... 240 6.8.3 Formatter mit HttpClient verwenden ............................. 240 6.8.4 Binäre Serialisierung mit BSON ................................. 241 6.9 Serialisierung beeinflussen ........................................... 241 6.9.1 JSON-Serializer konfigurieren ................................... 242 6.9.2 XML-Serializer konfigurieren ................................... 243 6.9.3 Eigenschaften von der Serialisierung ausnehmen .................. 243 6.9.4 Zirkuläre Referenzen serialisieren ............................... 243 6.10 Streaming .......................................................... 246 6.10.1 Action-Methoden für Streaming vorbereiten ....................... 246 6.10.2 Streaming in Self-Hosting-Szenarien konfigurieren ................. 247 6.10.3 Streaming für IIS konfigurieren ................................. 247 6.10.4 Streams über HttpClient verwenden ............................. 249 6.11 Fortschritt ermitteln ................................................. 250 6.12 Web API und HTML-Formulare ........................................ 251 6.12.1 Einfache Formular-Felder übermitteln ............................ 251 6.12.2 Dateiupload via HTML-Formular ................................ 252 6.13 ASP.NET Web API erweitern ........................................... 254 6.13.1 Abhängigkeiten auflösen mit benutzerdefiniertem DependencyResolver .......................................... 254 6.13.2 Zusätzliche Assemblies mit AssemblyResolver laden ............... 255 6.13.3 Service-Operationen über HttpActionSelector auswählen ............ 256 6.13.4 Controller über HttpControllerSelector auswählen ................. 257 6.13.5 Methodenparameter auf benutzerdefinierte Weise mit HttpParameterBinding ......................................... 259 7 ASP .NET Web API Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 7.1 Verschlüsselte Übertragung ........................................... 263 7.1.1 SSL mit IIS ................................................... 263 7.1.2 SSL in Self-Hosting-Szenarien ................................... 263 7.1.3 Diskussion über Nachrichtensicherheit ........................... 264 7.2 Authentifizierung und Autorisierung ................................... 264

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.