Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

672
7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497 http://slidepdf.com/reader/full/verteilte-systeme-und-services-mit-net-45-konzepte-und-loesungen-fuer-wcf 1/672 EXTRA: Mit kostenlosem E-Book Zusammenspiel von WCF, ASP.NET Web API, SignalR, Workflow Foundation, Identity Foundation, Entity Framework und Azure Service Bus manfred STEYER holger SCHWICHTENBERG matthias FISCHER  jörg KRAUSE VERTEILTE SYSTEME UND SERVICES MIT .NET 4.5  .    N    E    T    B    I    B    L    I    O    T    H    E    K    h    r    s    g  .    v    o    n     d    r  .    h    o    l    g    e    r    S    C    H    W    I    C    H    T    E    N    B    E    R    G KONZEPTE UND LÖSUNGEN MIT WCF 4.5 UND ASP.NET WEB-API 2. Auflage Lizenziert für [email protected]. © 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfältigung.  orderid 21347497 transid 21347497_1D

Transcript of Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    1/672

    EXTRA: Mit kostenlosem E-Book

    Zusammenspiel von WCF, ASP.NET Web API, SignalR,

    Workflow Foundation, Identity Foundation, EntityFramework und Azure Service Bus

    manfred STEYER

    holger SCHWICHTENBERG

    matthias FISCHER

    jrg KRAUSE

    VERTEILTE SYSTEMEUND SERVICESMIT .NET 4.5

    .N

    ETBIBLIOTHEK

    h

    rsg.

    vond

    r.

    holger

    SCHWICHTENBERG

    KONZEPTE UND LSUNGEN MIT WCF 4.5UND ASP.NET WEB-API

    2. Auflage

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    2/672

    Steyer/Schwichtenberg/Fischer/Krause

    Verteilte Systeme und Services

    mit .NET 4.5

    Bleiben Sie auf dem Laufenden!

    Der Hanser Computerbuch-Newsletter informiert

    Sie regelmig ber neue Bcher und Termine

    aus den verschiedenen Bereichen der IT.

    Profitieren Sie auch von Gewinnspielen und

    exklusiven Leseproben. Gleich anmelden unter

    www.hanser-fachbuch.de/newsletter

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

    http://www.hanser-fachbuch.de/newsletterhttp://www.hanser-fachbuch.de/newsletter
  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    3/672

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    4/672

    Manfred Steyer

    Holger Schwichtenberg

    Matthias FischerJrg Krause

    Verteilte Systeme und Services

    mit .NET 4.5

    Konzepte und Lsungen

    fr WCF 4.5 und ASP.NET Web-API

    2., berarbeitete und erweiterte Auflage

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    5/672

    Die Autoren:

    Manred Steyer, IT-Visions.de, FH CAMPUS 02, Graz

    Holger Schwichtenberg (Herausgeber und Autor),IT-Visions.de, Essen

    Matthias Fischer, Rathenow bei Berlin

    Jrg Krause, Berlin

    Alle in diesem Buch enthaltenen Inormationen, Verahren und Darstellungen wurden nach bes-tem Wissen zusammengestellt und mit Sorgalt getestet. Dennoch sind Fehler nicht ganz aus-zuschlieen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Inormationen mitkeiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autoren und Verlag bernehmeninolgedessen keine juristische Verantwortung und werden keine daraus olgende oder sonstigeHaung bernehmen, die au irgendeine Art aus der Benutzung dieser Inormationen oderTeilen davon entsteht.

    Ebenso bernehmen Autoren und Verlag keine Gewhr dar, dass beschriebene Verahren usw.

    rei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen,Warenbezeichnungen 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 rei zu betrachten wren und daher von jedermann benutzt werden dren.

    Bibliografische Inormation 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 abrubar.

    Dieses Werk ist urheberrechtlich geschtzt.Alle Rechte, auch die der bersetzung, des Nachdruckes und der Vervielltigung des Buches,oder Teilen daraus, vorbehalten. Kein Teil des Werkes dar ohne schriliche Genehmigung desVerlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verahren) auch nichtr Zwecke der Unterrichtsgestaltung reproduziert oder unter Verwendung elektronischerSysteme verarbeitet, vervielltigt oder verbreitet werden.

    2013 Carl Hanser Verlag Mnchen, www.hanser.deLektorat: Sieglinde SchrlCopy editing: Sandra Gottmann, Mnster-NienbergeHerstellung: Irene WeilhartUmschlagdesign: Marc Mller-Bremer, www.rebranding.de,MnchenUmschlagrealisation: Stephan RnigkGesamtherstellung: Ksel, KrugzellAusstattung patentrechtlich geschtzt. Ksel FD 351, Patent-Nr. 0748702Printed in Germany

    print-ISBN: 978-3-446-43443-1e-book-ISBN: 978-3-446-43565-0

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

    http://dnb.d-nb.de/http://www.hanser.de/http://www.rebranding.de/http://www.rebranding.de/http://www.hanser.de/http://dnb.d-nb.de/
  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    6/672

    Geleitwort des Herausgebers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XVII

    Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XIX

    1 Serviceorientierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1 Konzeptionelle Ebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1.1.1 Betriebswirtschaliche Sicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.2 Technische Sicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.1.3 Was ist ein Service? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    1.2 Technische Realisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.1 SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.2 Web Service Description Language (WSDL) . . . . . . . . . . . . . . . . . . . . . . . 61.2.3 Universal Description, Discovery and Integration . . . . . . . . . . . . . . . . . . 71.2.4 WS-I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2.5 WS-* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.2.6 RESTul Web Services als Gegenbewegung zu SOAP . . . . . . . . . . . . . . . . 81.2.7 POX-Services und Web APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.2 Standard-Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    2.3 Hosting von Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    2.4 Erste Schritte mit WCF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.4.1 Erstellen eines Web-Service-Projektes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.4.2 Web-Service mit Client konsumieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.4.3 Mit Lauzeit-Proxy au Service zugreien . . . . . . . . . . . . . . . . . . . . . . . . . . 312.4.4 Service zur Verwendung von ws2007HttpBinding konfigurieren . . . . . 322.4.5 NetTcpBinding und Sel-Hosting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    Inhalt

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    7/672

    VI Inhalt

    3 Services mit WCF erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.1 Vertrge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    3.1.1 Servicevertrge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.1.2 Datenvertrge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.1.3 Nachrichtenvertrge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    3.1.4 SOAP-Binding estlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.2 Instanziierung von Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    3.2.1 PerCall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.2.2 Single . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.2.3 PerSession . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    3.3 Nebenlufigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    3.4 Asynchrone Service-Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    3.5 WCF konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523.5.1 WCF deklarativ konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    3.5.2 WCF programmatisch konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.5.3 In IIS gehostete Services programmatisch konfigurieren (ab .NET 4.5) 553.5.4 Benutzerdefinierte Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573.5.5 Einschrnkungen r Bindings estlegen . . . . . . . . . . . . . . . . . . . . . . . . . . 583.5.6 Drosselung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.5.7 Port-Sharing bei TCP-basierten Services . . . . . . . . . . . . . . . . . . . . . . . . . . 603.5.8 Konfiguration des Proxy-Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    3.6 Metadaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    3.7 Services diagnostizieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643.7.1 Protokollierung konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    3.7.2 Leistungsindikatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663.8 One-Way-Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    3.9 Duplex-Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673.9.1 Untersttzte Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683.9.2 Implementierung von Duplex-Szenarien . . . . . . . . . . . . . . . . . . . . . . . . . . 693.9.3 Konfigurieren von Duplex-Szenarien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703.9.4 Callbacks mit WebSockets (ab .NET 4.5) . . . . . . . . . . . . . . . . . . . . . . . . . . 723.9.5 Grenzen von Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

    3.10 UDP und Multicasts (ab .NET 4.5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    3.11 Umgang mit binren Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753.11.1 MTOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763.11.2 Streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

    3.12 Fehlerbehandlung und FaultContracts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    3.13 ASP.NET-Kompatibilitt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

    3.14 Zuverlssige Sitzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873.14.1 Verlssliche Sitzungen konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883.14.2 Verlssliche Sitzungen erzwingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893.14.3 Idempotente Services als Alternative zu WS-ReliableMessaging . . . . . . 89

    3.15 Transaktionale Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

    3.15.1 Zwei-Phasen-Commit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903.15.2 Plug-in r WS-AtomicTransactions einrichten . . . . . . . . . . . . . . . . . . . . . 90

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    8/672

    Inhalt VII

    3.15.3 Distributed Transaction Coordinator (DTC) einrichten . . . . . . . . . . . . . . 913.15.4 Transaktionen konfigurieren und nutzen . . . . . . . . . . . . . . . . . . . . . . . . . 923.15.5 Transaktionsisolationslevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943.15.6 Transaktion am Client starten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953.15.7 Transaktionen und Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

    3.16 Queued Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963.16.1 Microso Message Queuing Services (MSMQ) . . . . . . . . . . . . . . . . . . . . . 963.16.2 Implementierung von Queued Services . . . . . . . . . . . . . . . . . . . . . . . . . . . 973.16.3 Queued Services konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

    3.17 REST-basierte Services mit WCF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003.17.1 REST-Services mit WCF implementieren und konsumieren . . . . . . . . . . 1013.17.2 Antwortormat dynamisch estlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1043.17.3 Hile-Seiten (Help Pages) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053.17.4 ASP.NET Cache Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073.17.5 REST-Services ber ASP.NET-Routen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

    3.17.6 Ausnahmen au HTTP-Statuscodes abbilden . . . . . . . . . . . . . . . . . . . . . . . 1083.17.7 Conditional GET und ETag-Untersttzung . . . . . . . . . . . . . . . . . . . . . . . . . 109

    3.18 WCF und Windows 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

    4 Sicherheit von WCF-Diensten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114.1 berblick ber WCF-Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

    4.1.1 Transport- und Nachrichtensicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114.1.2 Festlegen der zu verwendenden Credentials . . . . . . . . . . . . . . . . . . . . . . . 1134.1.3 Authentifizierung und Autorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144.1.4 Service-Identitten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1164.1.5 Verschlsseln und Signieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

    4.2 Windows-Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184.2.1 Impersonation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184.2.2 Kerberos vs. NTLM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

    4.3 Web-Security mit SSL und IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214.3.1 IIS r die Verwendung von SSL konfigurieren . . . . . . . . . . . . . . . . . . . . . 1214.3.2 Konfiguration des Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1254.3.3 Auru der Service-Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1264.3.4 Benutzerdefinierte Authentifizierung und Autorisierung . . . . . . . . . . . . 126

    4.4 Web-Security mit SSL ohne IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1334.5 Nachrichtenbasierte Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

    4.5.1 Zertifikate einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1344.5.2 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1354.5.3 Auru der Service-Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

    4.6 Client-Zertifikate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

    4.7 Federated und Claims-based Security mit Windows Identity Foundation (WIF) 1394.7.1 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1404.7.2 Web-Service-Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1414.7.3 Implementierung in .NET 4.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

    4.7.4 Implementierung r Versionen vor 4.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    9/672

    VIIIInhalt

    5 Lose Kopplung mit WCF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1675.1 Routing (System.ServiceModel.Routing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

    5.1.1 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1685.1.2 Routerarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1695.1.3 Beispielanwendung (Routing Testclient) . . . . . . . . . . . . . . . . . . . . . . . . . . 170

    5.1.4 Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1715.1.5 Erstellen des Routers mit WCF 4.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1745.1.6 Konfiguration eines Routers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1745.1.7 Router r das Routing-Testszenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1755.1.8 Entwicklung des Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1805.1.9 Dynamische Filter entwickeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815.1.10 Dynamische Filter mit eigener Filtertabelle . . . . . . . . . . . . . . . . . . . . . . . 1835.1.11 Leistungsverlust durch Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

    5.2 Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1885.2.1 Dienst mit Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1885.2.2 Client mit Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1895.2.3 Mgliche Services mittels Scopes einschrnken . . . . . . . . . . . . . . . . . . . . 1905.2.4 Clients r die Verwendung mit Discovery deklarativ konfigurieren . . . 1915.2.5 Ankndigungen (Announcements) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

    5.3 Ereignisse und Publish-/Subscribe-Szenarien . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1945.3.1 Service-Vertrge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1945.3.2 Implementierung eines Publish-/Subscribe-Service . . . . . . . . . . . . . . . . 1955.3.3 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1975.3.4 Implementierung des zu benachrichtigenden Clients . . . . . . . . . . . . . . . 1985.3.5 Weiterhrende berlegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

    5.4 ESB-Lsungen mit WCF entwickeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1995.4.1 Catch-All-Vertrge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1995.4.2 Nachrichtentransormation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

    5.5 Freie ESB-Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

    6 ASP.NET Web API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2056.1 REST-Services mit ASP.NET Web API erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

    6.1.1 Parameter und Rckgabewerte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2066.1.2 Dynamische Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

    6.1.3 REST-Services konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2096.1.4 REST-Services mit Fiddler testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2106.1.5 Mehr Kontrolle ber HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2116.1.6 REST-Services ber HttpClient konsumieren . . . . . . . . . . . . . . . . . . . . . . 2146.1.7 Hile-Seiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

    6.2 Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2216.2.1 Standard-Implementierung von ITraceWriter . . . . . . . . . . . . . . . . . . . . . . 2216.2.2 Eigenen TraceWriter implementieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

    6.3 OData-Untersttzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

    6.4 Sel-Hosting mit Web APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

    6.5 Querschnittsunktionen an globalen Stellen platzieren . . . . . . . . . . . . . . . . . . . . . 224

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    10/672

    Inhalt IX

    6.5.1 Querschnittsunktionen mit Message-Handler implementieren . . . . . . . 2256.5.2 Handler mit HttpClient verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2266.5.3 Querschnittsunktionen mit Filter realisieren . . . . . . . . . . . . . . . . . . . . . 228

    6.6 Erweiterte Konfigurationsmglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326.6.1 Benutzerdefinierte Routen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

    6.6.2 Controller-basierte Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326.6.3 Routen-basierte Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

    6.7 Deklaratives Validieren von Parametern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2346.7.1 Verwenden von Data-Attributen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2346.7.2 Auswerten von Validierungsattributen . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366.7.3 Benutzerdefinierte Validierungsattribute . . . . . . . . . . . . . . . . . . . . . . . . . 237

    6.8 Benutzerdefinierte Formate untersttzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386.8.1 Formatter implementieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386.8.2 Formatter serverseitig registrieren und testen . . . . . . . . . . . . . . . . . . . . . 2406.8.3 Formatter mit HttpClient verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2406.8.4 Binre Serialisierung mit BSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

    6.9 Serialisierung beeinflussen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2416.9.1 JSON-Serializer konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2426.9.2 XML-Serializer konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2436.9.3 Eigenschaen von der Serialisierung ausnehmen . . . . . . . . . . . . . . . . . . 2436.9.4 Zirkulre Reerenzen serialisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

    6.10 Streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2466.10.1 Action-Methoden r Streaming vorbereiten . . . . . . . . . . . . . . . . . . . . . . . 2466.10.2 Streaming in Sel-Hosting-Szenarien konfigurieren . . . . . . . . . . . . . . . . . 247

    6.10.3 Streaming r IIS konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476.10.4 Streams ber HttpClient verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

    6.11 Fortschritt ermitteln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

    6.12 Web API und HTML-Formulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2516.12.1 Einache Formular-Felder bermitteln . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2516.12.2 Dateiupload via HTML-Formular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

    6.13 ASP.NET Web API erweitern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2546.13.1 Abhngigkeiten auflsen mit benutzerdefiniertem

    D e p e n d e n c y R e s o l v e r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 5 46.13.2 Zustzliche Assemblies mit AssemblyResolver laden . . . . . . . . . . . . . . . 255

    6.13.3 Service-Operationen ber HttpActionSelector auswhlen . . . . . . . . . . . . 2566.13.4 Controller ber HttpControllerSelector auswhlen . . . . . . . . . . . . . . . . . 2576.13.5 Methodenparameter au benutzerdefinierte Weise mit

    HttpParameterBinding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

    7 ASP.NET Web API Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2637.1 Verschlsselte bertragung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

    7.1.1 SSL mit IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2637.1.2 SSL in Sel-Hosting-Szenarien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2637.1.3 Diskussion ber Nachrichtensicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

    7.2 Authentifizierung und Autorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    11/672

    X Inhalt

    7.2.1 Operationen absichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2647.2.2 HTTP-Authentifizierung mit IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2667.2.3 HTTP-Authentifizierung in Sel-Hosting-Szenarien . . . . . . . . . . . . . . . . . 2677.2.4 Benutzer mit HttpClient authentifizieren . . . . . . . . . . . . . . . . . . . . . . . . . 2687.2.5 Benutzerdefinierte Security mit Handler . . . . . . . . . . . . . . . . . . . . . . . . . . 268

    7.2.6 Benutzerdefinierte Security mit HTTP-Module . . . . . . . . . . . . . . . . . . . . . 2707.2.7 Mit Client-Zertifikaten arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

    7.3 Single Sign-On mit OAuth2 und DotNetOpenAuth . . . . . . . . . . . . . . . . . . . . . . . . . 2777.3.1 OAuth2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2777.3.2 OAuth2 und REST-Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2787.3.3 Implementieren eines Authorization Servers mit DotNetOpenAuth . . . 2787.3.4 Client r OAuth2-Szenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2847.3.5 Service mittels OAuth2 absichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

    8 ASP.NET SignalR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

    8.1 Long-Polling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2878.2 Web Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

    8.3 ASP.NET SignalR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

    8.4 PersistentConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2898.4.1 Erste Schritte mit SignalR und PersistentConnection . . . . . . . . . . . . . . . 2898.4.2 Liecycle-Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2908.4.3 URL-Mapping r PersistentConnection . . . . . . . . . . . . . . . . . . . . . . . . . . 2918.4.4 Einacher Client r eine PersistentConnection . . . . . . . . . . . . . . . . . . . . 2918.4.5 Einacher JavaScript-Client r eine PersistentConnection . . . . . . . . . . . 292

    8.4.6 Daten ber serverseitige Prozesse an Connection senden . . . . . . . . . . . . 2948.5 Hubs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2948.5.1 Methoden und Callbacks mit SignalR und Hubs . . . . . . . . . . . . . . . . . . . 2948.5.2 URL-Mapping r Hubs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2968.5.3 Liecycle-Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2968.5.4 Hubs konsumieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2968.5.5 Hubs ber JavaScript konsumieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2998.5.6 Gruppen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3028.5.7 Hubs ber serverseitige Prozesse benachrichtigen . . . . . . . . . . . . . . . . . 303

    8.6 Pipeline-Modules r Querschnittsunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

    8.7 SignalR konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3058.8 SignalR skalieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

    9 Hosting von WCF- und Web API-Diensten . . . . . . . . . . . . . . . . . . . . . . . 3079.1 Hosting in Windows-Systemdiensten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

    9.1.1 Erstellen eines Windows-Systemdienstes . . . . . . . . . . . . . . . . . . . . . . . . . 3089.1.2 Ergnzen eines WCF-Dienstes in einem Systemdienst . . . . . . . . . . . . . . 3109.1.3 Ergnzen eines Web API-Dienstes in einem Systemdienst . . . . . . . . . . . 3119.1.4 Trick r das Debugging eines Systemdienstes . . . . . . . . . . . . . . . . . . . . . 3119.1.5 Vorbereiten der Installation eines Systemdienstes . . . . . . . . . . . . . . . . . . 314

    9.1.6 Installation eines Systemdienstes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    12/672

    Inhalt XI

    9.2 Hosting im Internet Inormation Server (IIS)/Windows Server AppFabric . . . . . 3179.2.1 Von IIS ber WAS zu AppFabric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3179.2.2 IIS-Websites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3189.2.3 IIS-Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3249.2.4 IIS-Anwendungspools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

    9.2.5 Autostart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3319.3 WCF-Projekte r den IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

    9.3.1 .svc-Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3359.3.2 Test des Dienstes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3359.3.3 Abru der Metadaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3369.3.4 Konfigurationsdatei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3379.3.5 WCF ohne SVC-Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3399.3.6 Eigene ServiceHostFactory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

    9.4 ASP.NET Web API-Projekte r den IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

    9.5 Installieren von WCF- und Web API-Diensten im IIS . . . . . . . . . . . . . . . . . . . . . . . 3409.5.1 Manuelles Verbreiten von Diensten (XCopy-Deployment) . . . . . . . . . . . . 3409.5.2 Verbreiten mit der Funktion Build/Publish in Visual Studio

    direkt au einen IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3419.5.3 Verbreiten von Diensten mit dem IIS Web Deployment Tool

    (MSDeploy) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

    9.6 Konfiguration und Monitoring mit den AppFabric-Erweiterungen . . . . . . . . . . 3529.6.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3539.6.2 AppFabric-Ansichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3549.6.3 berwachungsunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3569.6.4 Weitere Konfigurationsmglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

    10 Service Bus und Access Control r Windows Azure undWindows Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

    10.1 berblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

    10.2 Namespace einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

    10.3 Relaying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36310.3.1 Relay-Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36410.3.2 Service ber Relaying bereitstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36410.3.3 Service ber Relaying konsumieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

    10.4 Lose Kopplung mit Queues und Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36810.4.1 Zugriff au Queues und Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37010.4.2 Transaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37010.4.3 Sitzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37110.4.4 Metadaten, Filtern und Stamping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37110.4.5 Queues ber die .NET-API ansprechen . . . . . . . . . . . . . . . . . . . . . . . . . . . 37110.4.6 Queues programmatisch erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37210.4.7 Nachrichten an Queues senden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37310.4.8 Nachrichten aus Queues abruen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37410.4.9 Mit Sitzungen arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376

    10.4.10 Aus Dead Letter Queue lesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    13/672

    XII Inhalt

    10.4.11 Topics und Abonnenten einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37810.4.12 Nachrichten unter Verwendung von Topics senden und abruen . . . . . . 38010.4.13 Queues ber WCF ansprechen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38210.4.14 WCF-Sitzungen realisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38510.4.15 Topics via WCF abonnieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

    10.5 Windows Azure Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38710.5.1 AC konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38710.5.2 Service mit AC absichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38910.5.3 Azure Service Bus mit AC absichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393

    10.6 Windows Server Service Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39410.6.1 Namespaces administrieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39510.6.2 Au Queues und Topics zugreien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39510.6.3 Zugriff au Queues und Topics einschrnken . . . . . . . . . . . . . . . . . . . . . . 396

    11 Datenbasierte Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39711.1 Was sind datenbasierte Services? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397

    11.2 Services und ADO.NET Entity Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39711.2.1 Vom DataSet zum Entity Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39711.2.2 Grundlagen der Sel-Tracking Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39911.2.3 Beispielanwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

    11.3 ADO.NET Entity Framework Code First (Code Only) . . . . . . . . . . . . . . . . . . . . . . . 41211.3.1 Die drei Ebenen des ADO.NET Entity Framework . . . . . . . . . . . . . . . . . . 41211.3.2 Vorbereitungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41311.3.3 Entittsklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413

    11.3.4 Kontextklasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41811.3.5 Nutzen der Kontextklasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41911.3.6 Einsatzbeispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42011.3.7 Konvention vor Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42311.3.8 Codebasierte Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42511.3.9 Schemamigrationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42611.3.10 Entity Framework Power Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42711.3.11 Code Only und Webservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429

    11.4 Kritik an der Implementierung eines datenbasierten Service mit WCF . . . . . . . 430

    11.5 WCF Data Services (Open Data Protocol) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

    11.5.1 Lizenz und Standardisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43111.5.2 Bezug der WCF Data Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43111.5.3 Andere Bibliotheken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43211.5.4 Rahmenbedingungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43311.5.5 OData-Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43311.5.6 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43511.5.7 Abragesyntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43611.5.8 Einen WCF Data Service erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43711.5.9 Zugriffsrechte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43711.5.10 Fehlermeldungen aktivieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

    11.5.11 Einen WCF Data Service im Webbrowser testen . . . . . . . . . . . . . . . . . . . . 44011.5.12 Abru der Metadaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    14/672

    Inhalt XIII

    11.5.13 Einen WCF Data Service mit Fiddler testen . . . . . . . . . . . . . . . . . . . . . . . . 44311.5.14 Einen .NET-basierten Client erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44311.5.15 Tipps und Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448

    11.6 WCF RIA Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45711.6.1 Architektur der RIA Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458

    11.6.2 Einen RIA Service erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45911.6.3 Einen RIA Service nutzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463

    11.7 Datenbasierte REST-Services mit ASP.NET Web API und demOpen Data Protocol (OData) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46611.7.1 Daten mit OData flexibel abragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46611.7.2 Mgliche OData-Abragen einschrnken . . . . . . . . . . . . . . . . . . . . . . . . . . 46811.7.3 OData-Abragen global aktivieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47011.7.4 OData-Abragen manuell auswerten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47011.7.5 Daten mit OData verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

    11.8 Vergleich und Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475

    12 Workflows und Workflow Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47912.1 berblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479

    12.2 Visual Studio-Projektvorlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480

    12.3 Sequenzielle Workflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48012.3.1 Sequenzielle Workflows erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48012.3.2 Sequenzielle Workflows aushren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48112.3.3 Kontrollfluss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482

    12.4 Flussdiagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484

    12.5 Zustandsautomaten (State Machines) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48512.6 Transaktionen und Kompensation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487

    12.6.1 Transaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48712.6.2 Kompensation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487

    12.7 WCF Workflow Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48912.7.1 Workflow Services erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48912.7.2 Workflow Services testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49012.7.3 Workflow Services konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49112.7.4 Korrelation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49212.7.5 Contract-First (ab .NET 4.5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493

    12.8 Benutzerdefinierte Aktivitten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49512.8.1 CodeActivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49512.8.2 AsyncCodeActivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49612.8.3 NativeActivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49712.8.4 Anpassen der Darstellung benutzerdefinierter Aktivitten . . . . . . . . . . . 500

    12.9 Bookmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502

    12.10 Persistenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50312.10.1 SQLWorkflowInstanceStore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50312.10.2 Eigenschaen hherstuen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506

    12.10.3 Hherstuen von Eigenschaen bei Verwendung vonWCF Workflow Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    15/672

    XIVInhalt

    12.11 Versionisierung und Aktualisierung von Workflows (ab .NET 4.5) . . . . . . . . . . . 51012.11.1 Side-by-Side-Versionisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51012.11.2 Dynamic Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51612.11.3 Dynamic Update mit WorkflowControlEndpoint . . . . . . . . . . . . . . . . . . . . 521

    12.12 Ablauverolgung (Tracking) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523

    12.12.1 Benutzerdefinierte Tracking Records erzeugen . . . . . . . . . . . . . . . . . . . . 52312.12.2 Tracking Records abonnieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52412.12.3 Tracking Records einsehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526

    12.13 Workflow-Designer in eigenen Anwendungen hosten . . . . . . . . . . . . . . . . . . . . . . 527

    12.14 WCF-Dienste und -Services in AppFabric hosten . . . . . . . . . . . . . . . . . . . . . . . . . . 52812.14.1 Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52912.14.2 Persistenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53112.14.3 Weitere Mglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532

    13 Das WCF-Erweiterungsmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53313.1 bersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533

    13.1.1 Was sich erweitern lsst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53313.1.2 Die Lauzeitumgebung der Applikation erweitern . . . . . . . . . . . . . . . . . . 534

    13.2 Erweiterung des Sicherheitsmodells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53413.2.1 Verantwortungsbereich der WCF Security Component . . . . . . . . . . . . . . 53413.2.2 Das WebService-(WS-)Sicherheitsmodell . . . . . . . . . . . . . . . . . . . . . . . . . . 53413.2.3 Implementierung der WebService-(WS-)Sicherheit . . . . . . . . . . . . . . . . . 535

    13.3 Erweiterung des Bindungssystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53913.3.1 Bindungen und Bindungselemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540

    13.3.2 Nachrichtenkanle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54013.3.3 Benutzerdefinierte Bindungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541

    13.4 Weitere Erweiterungsunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54213.4.1 Erweiterung des Metadatenmodells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54213.4.2 Erweiterungen der Serialisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543

    14 WCF erweitern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54514.1 ServiceHost und Dienstmodellebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545

    14.1.1 Aubau der Dienstmodellebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54514.1.2 Erweiterung mittels Verhalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546

    14.1.3 Erweiterung von Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54914.1.4 Erweiterung des Dispatchers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55414.1.5 Erweiterbare Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56214.1.6 Erweitertes Hosting die Klasse ServiceHostFactory . . . . . . . . . . . . . . . 565

    14.2 Erweiterung des Bindungsmodells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56714.2.1 Konfigurieren mittels Bindungselementen . . . . . . . . . . . . . . . . . . . . . . . . 56714.2.2 Bindungen selbst erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56814.2.3 Erstellen eines eigenen Bindungselements . . . . . . . . . . . . . . . . . . . . . . . . 570

    14.3 Channel Layer- und Peer Channel-Erweiterungen . . . . . . . . . . . . . . . . . . . . . . . . . 57214.3.1 Funktionsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573

    14.3.2 Benutzerdefinierte bertragungskanle . . . . . . . . . . . . . . . . . . . . . . . . . . 57314.3.3 Benutzerdefinierte Nachrichtenencoder . . . . . . . . . . . . . . . . . . . . . . . . . . 583

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    16/672

    Inhalt XV

    14.4 Das Metadatensystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58514.4.1 Funktionsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58614.4.2 Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586

    14.5 Serialisierung und Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59114.5.1 Ersetzen von Datenvertrgen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591

    14.5.2 Eigene Formatierer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59714.6 Erweiterung des Sicherheitsmodells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603

    14.6.1 Aubau der Sicherheitsarchitektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60314.6.2 Benutzerdefinierte Anmeldeinormation und Token . . . . . . . . . . . . . . . . 60314.6.3 Benutzerdefinierte Nachrichtenverschlsselung . . . . . . . . . . . . . . . . . . . 621

    Anhang NuGet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631

    Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    17/672

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    18/672

    Liebe Leserinnen, liebe Leser,

    das .NET Framework ist inzwischen mehr als zehn Jahre alt, und man kam ihm Reie nichtnur altersbedingt, sondern vor allem auch aus achlichen Grnden bescheinigen. DasBesondere an .NET ist, dass es immer mehr Anwendungsarten gibt, die sich mit der glei-chen Sprachsyntax, den gleichen Bibliotheken und den gleichen Werkzeugen erstellen

    lassen. Zu Desktop- und Standard-Web-Applikationen haben sich inzwischen Multimedia-und Office-Anwendungen sowie Rich Internet Applications und Apps gesellt. Und auch auder Serverseite gibt es zahlreiche Mglichkeiten r den Einsatz von .NET, vom MicrosoSQL Server ber Biztalk bis hin zu SharePoint. Mit der Version 4.5 lieert Microso wesent-liche Verbesserungen r zahlreiche Teilbibliotheken des .NET Frameworks sowie auchneue Bausteine, insbesondere im Bereich der verteilten Systeme und Webservices.

    Anlsslich von .NET 4.5 aktualisieren wir natrlich auch wieder die erolgreiche Buchreihe.NET-Bibliothek, die ich r den Carl Hanser Verlag seit 2006 als Herausgeber betreue. DieFachbcher dieser Reihe lieern undiertes Wissen zu zentralen Bausteinen der Klassen-bibliothek im .NET Framework. Die Reihe zeichnet sich durch prgnant gehaltene Bcher

    aus, die das elementare Wissen zu einem Fachgebiet r den proessionellen Entwickleraubereiten. Ein weiteres Merkmal der Reihe sind die Autoren, die seit vielen Jahren mit.NET-Technologien arbeiten und ihre umangreiche Praxiserahrung aus .NET-Projekten indie Bcher einflieen lassen.

    Die Welt der verteilten Systeme ist wieder einmal im Umbruch. SOAP wird an immer mehrStellen durch vermeintlich einachere REST-Dienste abgelst. Das macht sich auch im .NETFramework bemerkbar, indem es nun mit dem ASP.NET Web API eine neue Bibliothek rHTTP-basierte Dienste gibt, mit denen man REST flexibler umsetzen kann als mit derWindows Communication Foundation (WCF). Dennoch ist SOAP und damit auch die WCF in

    vielen Szenarien (insbesondere, wenn .NET mit .NET oder einer anderen Plattorm mitstarker SOAP-Untersttzung kommuniziert) berlegen, weshalb die WCF auch weiterhinden Lwenanteil in diesem Buch ausmacht.

    Als neue Themen behandelt das Buch ASP.NET Web API (und die damit zusammenhn-genden Sicherheitsmechanismen insbesondere OAuth), ASP.NET SignalR sowie den ServiceBus r Windows Server und Windows Azure. Der Rest des Buchs wurde au die zumZeitpunkt der Drucklegung vergbaren stabilen Versionen (WCF 4.5, ADO.NET EntityFramework 5.0, WCF Data Services 5.1) aktualisiert.

    Ich wnsche Ihnen, dass dieses Buch zu Ihrem Projekterolg beitragen kann.

    Essen, im Januar 2013 Dr. Holger Schwichtenbergwww.IT-Visions.de

    Geleitwort desHerausgebers

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

    http://www.it-visions.de/http://www.it-visions.de/
  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    19/672

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    20/672

    Die Geschichte verteilter Sowaresysteme ist ast so alt wie die Geschichte programmier-barer Rechner, die mittlerweile in verschiedensten Formen Einzug in unser tglichesLeben gehalten haben. Gerade im Zeitalter von Internet und mobilen Anwendungen sindverteilte Sowaresysteme spannender denn je. Sei es die Kommunikation zwischen Per-

    sonen, zwischen unternehmensinternen und -externen Applikationen zur Automatisierungvon Abluen, oder zwischen Bestandteilen eines Systems, zum Beispiel Client und Ser-ver, verteilte Systeme sind omniprsent. Whrend sich die Prinzipien hinter diesen Appli-kationen in den letzten 30 Jahren kaum verndert haben, liegt der Teuel wie so hufig im Detail. Es gilt, verschiedene Protokolle und Formate in Einklang zu bringen, au diemannigaltigen Aspekte der Sicherheit zu achten, Transaktionen zu realisieren, Fehler zukompensieren und Datenverluste trotz Kommunikationsproblemen zu verhindern. Hinzukommt, dass immer hufiger Systeme miteinander kommunizieren mssen, die ursprng-lich gar nicht dazu konzipiert wurden.

    Mit der Windows Communication Foundation(WCF) hat Microso den Versuch unternom-

    men, die unterschiedlichen Mglichkeiten, die es zur Lsung der augezeigten Herausor-derungen gibt, unter einen Hut zu bringen. Auerdem steht nun mit der ASP.NET Web APIeine schlanke Alternative zur WCF zur Auswahl, welche sich zwar au bestimmte Arten derKommunikation beschrnkt, dar aber auch einacher einzusetzen ist.

    Die Erahrung hat jedoch gezeigt, dass man WCF und Web API nicht isoliert betrachten dar.Fr die erolgreiche Implementierung von verteilten Systemen sind weitere Frameworksnotwendig, die mit WCF bzw. Web API in Einklang gebracht werden mssen. Aus diesemGrund behandelt das vorliegende Werk auch Technologien wie die Workflow Foundation(WF), die zur Automatisierung von Geschsprozessen dient, dasEntity Framework(EF), die

    WCF Data Services und WCF RIA Services zum Zugriff au Datenbanken, die Windows Iden-tity Foundation(WIF) zur Realisierung von erweiterten Sicherheitsszenarien, die dem Runach Single Sign-On-Lsungen gerecht werden, und den Azure Service Bus, welcher mitt-lerweile auch zur lokalen Installation als Windows Server Service Bus vergbar ist, zurstandortbergreienden Integration verschiedener Systeme.

    Wer ist die Zielgruppe dieses Buchs?

    Dieses Buch wendet sich an Personen, die bereits mit .NET gearbeitet haben, und nun ver-teilte Systeme sowie damit einhergehende Services entwickeln oder au technischer Ebeneplanen mchten. Ebenso werden Entwickler mit Erahrung in den genannten Technologien

    adressiert, die das eine oder andere Thema vertieen oder einach nur bestimmte Aspekte

    Vorwort

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    21/672

    XX Vorwort

    nachschlagen mchten. Die hier prsentierten Beispiele sind in C# gehalten, da C# diehrende Sprache au der .NET-Plattorm darstellt. Allerdings finden sich im Web zahlreicheTools zur automatischen bersetzung in andere .NET-basierte Sprachen. Die verwendeteC#-Version ist die Version 5; die verwendete Version von Visual Studio ist 2012. Um denBeispielen optimal olgen zu knnen, sollte der Leser ebenalls die besagten Versionen oder

    neuere einsetzen. Soern jedoch nicht explizit erwhnt ist, dass die beschriebenen Features.NET 4.5 bentigen, ist davon auszugehen, dass sie auch bei Verwendung von .NET 4.0 zurVergung stehen.

    Wie soll dieses Buch gelesen werden?

    Obwohl die einzelnen Kapitel des vorliegenden Werks miteinander korrelieren und des-wegen auch immer wieder aueinander verweisen, mssen sie nicht strikt sequentiell ge -lesen werden. Einsteigern empehlen wir jedoch, zumindest das erste Kapitel zu bearbeiten,bevor sie sich den jeweiligen Interessensgebieten in den Folgekapiteln zuwenden. Lesern,die sich in die WCF einarbeiten mchten, sei auch Kapitel 2 und 3 ans Herz gelegt. Jene, diemit der ASP.NET Web API starten mchten, knnen nach dem Bearbeiten von Kapitel 1 mitden Kapiteln 6 und 7 ortahren.

    Einige Kapitel gehen davon aus, dass der Leser den Paket-Manager NuGet verwendet, daMicroso bestimmte Bibliotheken vorzugsweise darber zum Download anbietet. Deswegenbefindet sich ein berblick zu NuGet im Anhang.

    Die einzelnen Abschnitte erlutern die behandelten Themen meist anhandvon Beispielen. Gerade das Experimentieren mit ertigen Beispielen hat sichbeim Erarbeiten neuer Stoffgebiete im Selbststudium bewhrt. Die Beispiele

    zu diesem Buch finden Sie unter http://downloads.hanser.de.

    Wir reuen uns darber hinaus ber Ihr Feedback und Ihre Fragen. Hierrwurde unter www.it-visions.de/leserein eigener Bereich eingerichtet.

    Danksagung

    Dank r ihre Mitwirkung und Untersttzung an diesem Buch mchten wir aussprechen an:

    unsere Familienangehrigen, die uns neben unserem Hauptberu das Umeld geschaffen

    haben, auch an manchen Abenden und Wochenenden an diesem Buch zu arbeiten. Frau Sieglinde Schrl vom Carl Hanser Verlag, die dieses Buchprojekt betreut hat.

    Frau Sandra Gottmann und Frau Julia Stepp, die das Buch sprachlich verbessert haben.

    Frau Irene Weilhart, die sich um die optischen Aspekte des Buchs gesorgt hat.

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

    http://downloads.hanser.de/http://www.it-visions.de/leserhttp://www.it-visions.de/leserhttp://downloads.hanser.de/
  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    22/672

    Autoren XXI

    ber die Autoren

    Manred Steyer

    FH-Pro. Manred Steyer (www.sofwarearchitekt.at) ist reiberu-licher Trainer und Berater bei www. IT-Visions.de. Darber hinausist er r den Fachbereich Soware Engineering der Studien-richtung IT und Wirtschasinormatik an der FH CAMPUS 02 inGraz (www.campus02.at)verantwortlich.

    Er schreibt regelmig Fachartikel im .NET-Umeld und ist Autormehrerer Bcher. Manred Steyer hat berusbegleitend IT und IT-Marketing in Graz sowie Computer Science in Hagen studiert undkann au mehr als zehn Jahre an Erahrung in der Planung undUmsetzung von groen Applikationen zurckblicken. Er ist aus-gebildeter Trainer r den Bereich der Erwachsenenbildung und spricht regelmig au

    Fachkonerenzen.In der Vergangenheit war Manred Steyer mehrere Jahre r ein groes sterreichischesSystemhaus ttig. In der Rolle als Entwicklungsleiter hat er gemeinsam mit seinem zehn-kpfigen Team Geschsanwendungen konzipiert und umgesetzt.

    Seine E-Mail-Adresse lautet [email protected] Twitter findet manihn unter http://www.twitter.com/ManredSteyer.

    Dr. Holger Schwichtenberg

    Dr. Holger Schwichtenberg ist Leiter des .NET-Expertennetzwerks

    www.IT-Visions.de (http://www.IT-Visions.de), das zahlreiche Un-ternehmen in Europa durch Beratung, Schulung, Coaching undSupport untersttzt. Zudem ist er Entwicklungsleiter bei der5minds IT-Solutions GmbH & Co. KG, die Soware im Kunden-aurag entwickelt. Die persnlichen Schwerpunkte von Dr. Hol-ger Schwichtenberg sind Webanwendungen, verteilte Systemeund Datenbankzugriffe.

    Dr. Holger Schwichtenberg gehrt durch seine Auritte au natio-nalen und internationalen Fachkonerenzen sowie zahlreicheFachbcher r Addison-Wesley, Microso Press und den Hanser Verlag zu den bekanntes-

    ten .NET-Experten in Deutschland. Darber hinaus ist er stndiger Mitarbeiter der Fach-zeitschrien dotnet magazin, dotnetpro und iX sowie bei heise.de. Von Microso ist er rsein .NET-Fachwissen als Microso Most Valuable Proessional (MVP) r ASP.NET/IISausgezeichnet worden.

    Sein Weblog finden Sie unter http://www.dotnet-doktor.de. Bei Twitter finden Sie ihn unterhttp://www.twitter.com/DOTNETDOKTOR .

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

    http://www.softwarearchitekt.at/http://www.it-visions.de/http://www.campus02.at/mailto:[email protected]://www.twitter.com/ManfredSteyerhttp://www.it-visions.de/http://www.it-visions.de/http://www.it-visions.de/http://www.dotnet-doktor.de/https://service.gmx.net/de/cgi/derefer?TYPE=3&DEST=http%3A%2F%2Fwww.twitter.com%2FDOTNETDOKTOR.https://service.gmx.net/de/cgi/derefer?TYPE=3&DEST=http%3A%2F%2Fwww.twitter.com%2FDOTNETDOKTOR.http://www.it-visions.de/http://www.it-visions.de/mailto:[email protected]://www.campus02.at/https://service.gmx.net/de/cgi/derefer?TYPE=3&DEST=http%3A%2F%2Fwww.twitter.com%2FDOTNETDOKTOR.http://www.dotnet-doktor.de/https://service.gmx.net/de/cgi/derefer?TYPE=3&DEST=http%3A%2F%2Fwww.it-visions.de%2Fhttp://www.twitter.com/ManfredSteyerhttp://www.it-visions.de/http://www.softwarearchitekt.at/
  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    23/672

    XXIIAutoren

    Matthias Fischer

    Matthias Fischer ist seit einigen Jahren Sowareentwickler und-architekt. In seiner Ttigkeit als Technical Expert r .NET be-schigt er sich insbesondere mit dem .NET-Framework, ASP.NET, WCF sowie Netzwerk- und Kommunikationstechnologien in

    C# und F#.

    Des Weiteren ist Matthias Fischer zertifizierter Sowaretester mitErahrung im Embedded-Umeld. Sein umangreiches Wissen gibter in diversen Usergroup-Vortrgen, au Fachkonerenzen sowieals Berater und Fachbuchautor wieder.

    Neben seiner beruflichen Ttigkeit beteiligt sich Matthias bei derOrganisation und Ausrichtung der .NET Usergroup Berlin-Bran-denburg.

    Wenn es die Zeit neben den Projekten erlaubt, unternimmt Matthias gern Radtouren, oder

    er beschigt sich mit Fotografie.

    Jrg Krause

    Jrg Krause ist Partner des .NET-Expertennetzwerks HYPERLINKhttp://www.IT-Visions.de www.IT-Visions.de. Er arbeitet alsreier Fachautor, Trainer, Consultant und Sowareentwickleraus Leidenscha. Schwerpunktthemen sind die Webapplikatio-nen mit ASP.NET, Microso SQL Server sowie die SharePoint-Programmierung. Zu allen Themen hat er Bcher und zahlreiche

    Artikel in Fachzeitschrien verasst und bietet individuelle Work-shops und Trainings au hohem Niveau an. Seit 1998 tritt er auzahlreichen Konerenzen als Speaker au.

    Wenn er sich nicht mit Computern beschigt, was eher seltenvorkommt, liest er bei schlechtem Wetter Bcher (Science-Fiction, Thriller) oder spielt beibesserem Wetter Gol und Badminton.

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

    http://www.it-visions.xn--de-x2t/http://www.it-visions.de/http://www.it-visions.de/http://www.it-visions.xn--de-x2t/
  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    24/672

    1

    Bevor es in den nacholgenden Kapiteln um die Realisierung von Services mit WindowsCommunication Foundation (WCF) gehen wird, bietet dieses Kapitel einen kompakten ber-

    blick zum Thema Serviceorientierung. Neben den unterschiedlichen Sichten au diesesThema wird auch au Protokolle zur Realisierung von Services eingegangen.

    1.1Konzeptionelle Ebene

    Sowohl r Techniker als auch r Betriebswirte ist Serviceorientierung von Bedeutung.Allerdings haben beide Gruppen eine unterschiedliche Sicht au diese Thematik. Dieser

    Abschnitt geht au diese beiden Sichten ein und inormiert darber, was allgemein unterService verstanden werden kann.

    1.1.1Betriebswirtschafliche Sicht

    Au das Thema Serviceorientierte Architekturen (SOA) gibt es zwei Sichtweisen eine

    betriebswirtschafliche und eine technische. Aus betriebswirtschaflicher Sicht helen ser-

    viceorientierte Architekturen beim Untersttzen von Geschfsprozessen. Einzelne Schritte

    eines Geschfsprozesses werden dabei von Services, die von verschiedenen Systemen ange-boten werden, realisiert. Zur Koordinierung dieser Services wird ein weiterer Service, ein

    sogenannter Prozessservice, eingesetzt. Dieser ist beispielsweise mit einer Workflow-Engine

    implementiert, sodass Anpassungen einach mglich sind und die Umsetzung auch gleich-

    zeitig die Dokumentation widerspiegelt. Bild 1.1 veranschaulicht dies. Dargestellt ist hier ein

    sehr einacher, mit den Mitteln der Business Process Modeling Notation (BPMN, vgl. www.

    bpmn.org) modellierter Prozess, der eine Vorgehensweise zur Angebotslegung r Reisen

    beschreibt und in vier Bereiche geteilt ist. Diese Bereiche werden in der BPMN als Pools

    bezeichnet. Die Aktivitten in den Pools System,FluggesellschafundHotelreservierungwer-

    den idealerweise von Services implementiert. Diese knnen entweder innerhalb der eigenen

    Organisation zur Vergung stehen oder von Geschfspartnern angeboten werden. Ersteresist bei den Aktivitten im Pool Systemder Fall; Letzteres bei den Aktivitten in den Pools

    Serviceorientierung

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

    http://www.bpmn.org/http://www.bpmn.org/http://www.bpmn.org/http://www.bpmn.org/
  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    25/672

    Serviceorientierung

    FluggesellschafundHotelreservierung. Die Aktivitten im PoolReisebrowrden die Appli-

    kation darstellen, die durch Kombination der restlichen Services geschaffen werden soll, und

    der Prozess an sich wrde mit den Mitteln einer Workflow-Engine, welche die einzelnen

    Services koordiniert, umgesetzt werden. Hierbei ist auch von Orchestrierungdie Rede.

    Bild 1.1Beispielhafer Geschfsprozess

    1.1.2Technische Sicht

    Aus technischer Sicht geht es beim Thema SOA um verteilte Systeme und Systemintegra-tion. Einzelne Dienste werden, meist ber das Netzwerk, in Anspruch genommen. Dazu

    sendet ein Client eine Anrage an einen Service. Dieser hrt darauhin die gewnschteAugabe durch und sendet das Ergebnis retour an den Client. Je nach Kommunikationspart-ner knnen dabei die zu verwendenden Protokolle und Datenormate variieren. Letztere giltes bei Bedar zu bersetzen, sodass sie in einer r das Gegenber bearbeitbaren Formvorliegen. All diese Konzepte sind wahrscheinlich so alt wie das Konzept von Computernetz-werken und firmierten vor den Zeiten von SOA zuletzt unter dem BegriffEnterprise Applica-tion Integration(EAI) und Komponentenorientierung. Der bergang zwischen diesen Para-digmen und SOA ist, nchtern betrachtet, flieend, zumal auch die verwendeten Technologiengroteils dieselben sind. SOA unterscheidet sich von seinen Vorgngern vor allem darin,dass der Aspekt der Interoperabilitt, also das Zusammenspiel verschiedener Systeme, str-

    ker im Vordergrund steht. Dies maniestiert sich in den bevorzugt verwendeten offenenProtokollen und Datenormaten, wie zum Beispiel HTTP, XML oder auch SOAP. Daneben

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    26/672

    . Konzeptionelle Ebene

    schlgt sich dieser Aspekt auch in den vorzufindenden Mustern und Best Practices wieder.So wird beispielsweise hufig au servicebergreiende Transaktionen verzichtet, da sichderen interoperable Implementierung in der Regel als sehr herausordernd darstellt. Statt-dessen werden im Fehlerall Kompensationslogiken, welche die ursprnglichen Aktionenrckgngig machen, angestoen. Bezogen au das zuvor betrachtete Beispiel knnte es sich

    dabei um das Stornieren eines Fluges handeln.

    1.1.3Was 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 knnen, handelt, gehtdamit auch ein bestimmtes Mindset einher. Im Gegensatz zum klassischen Ansatz derRemote Procedure Calls (RPC) ist ein Service in sich geschlossen. Das bedeutet, dass dasInnenleben eines Services r den Auruer eine Blackbox darstellt, sodass dieser nicht bertechnische Details Bescheid wissen muss. Aus diesem Grund sind Service-Operationenauch stark Use-Case-orientiert und selten technisch bzw. generisch. Dies hrt auch dazu,dass Service-Operationen mitunter grobgranularer als herkmmliche Methoden sind. Eingutes Beispiel hierr bietet die nacholgend dargestellte Operation BucheFlug.

    public Ticket BucheFlug(Buchung buchung) { }

    Einige dazu passende Negativbeispiele gehen aus Listing 1.1 hervor, zumal sich der Auru-er hier mit technischen Konstrukten des Systems, wie zum BeispielFlugHandlesoder Seat-Handles, beschigen muss. Gute Services wrden hingegen achliche Konstrukte verwen-

    den, z. B. Flge anstattFlugHandles.Diese Operationen knnte es im vorhin betrachteten Positivbeispiel zwar auch geben, aller-dings wren diese hier zum einen nicht ffentlich zugnglich und wrden zum anderen vonder Operation BucheFlugkoordiniert werden. Services mit solchen Koordinierungsmetho-den werden auch als Fassadenbzw. Serviceassadenbezeichnet, da sie dahinter liegendeDetails verbergen. Dabei soll nicht verschwiegen werden, dass die Verwendung von Fassa-den auch schon vor dem Aukommen des Begriffs SOA gngige Praxis im Bereich verteilterGeschsanwendungen war. Der Vorteil dieser Vorgehensweise liegt neben der Tatsache,dass sich der Auruer nicht mit Interna belasten muss, in einer geringeren Netzwerkbelas-tung, da anstatt vieler kleiner Nachrichten wenige oder nur eine grere zu bersenden

    sind. Daneben hrt dieses Muster dazu, dass die von der Fassade gekapselten Details ohneAnpassungen des Clients ausgetauscht werden knnen. Dies erlaubt es, die verwendetenSoware-Systeme einacher an sich ndernde Geschsregeln und Ablue anzupassen,was in weiterer Folge auch die Agilitt des Unternehmens erhht. Hierbei ist auch von loserKopplung die Rede, was im betrachteten Fall bedeutet, dass der Client mglichst wenig berden konsumierten Service wissen muss.

    Listing 1.1Negativbeispiele r Service-Operationen

    public FlightHandle GetFlightHandle(string flugNummer, DateTime datum) { }public SeatHandle CheckFreeSeats(FlightHandle h) { }

    public bool CheckFlightCancelled(FlightHandle h) { }public bool CheckCustomerExists(String customerNumber) { }

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    27/672

    Serviceorientierung

    public CustomerHandle GetCustomerHandle(String customerNumer) { }public CustomerHandle CreateCustomer(Customer c) { }public BookFlight (FlightHandle, CustomerHandle) { }

    Die Kommunikation zwischen Client und Service erolgt durch den Austausch von Nachrich-

    ten. Dies war zwar genau genommen auch schon beim RPC-Ansatz der 80er-Jahre der Fall,

    wird jedoch im Bereich von SOA gerne hervorgehoben. Der Grund hierr liegt darin, dass

    Nachrichten von Zwischenstationen geroutet werden knnen. Ein Nachrichtenrouter knnte

    zum Beispiel entscheiden, zu welchem Service eine Anrage wirklich geroutet werden soll.

    Das Ziel dahinter ist wieder einmal der Aspekt der losen Kopplung, wodurch Services leich-

    ter austauschbar und untersttzte Prozesse einacher anpassbar gestaltet werden.

    1.2Technische Realisierung

    Zur technischen Realisierung von Services steht eine Vielzahl an Technologien zur Ver-gung, darunter Standards wie CORBA, die au binre Protokolle r die Realisierung vonverteilten Objektsystemen setzen, oder Messaging-Systeme, wieMicrosof Message QueuingServices, zur verlsslichen und asynchronen bermittlung von Anragen. Daneben knnenauch Internet-Protokolle, wie FTP oder SMTP, die ursprnglich nicht r die Umsetzung vonServices dieser Art gedacht waren, zum Einsatz kommen. Gerade bei der Kommunikationmit Altsystemen ist man immer wieder angehalten, au solche Protokolle oder gar au dieKommunikation ber das Dateisystem auszuweichen. Fr Neuimplementierungen werden

    (Web-)Services bevorzugt. Der Grund dar liegt in der Tatsache, dass diese au offenenStandards, wie SOAP, XML oder HTTP, basieren und somit in Hinblick au InteroperabilittVorteile bieten, nicht zuletzt deswegen, weil die bertragenen Daten menschenlesbar sind.WCF untersttzt augrund seiner flexiblen Architektur prinzipiell alle mglichen Protokolleund Datenormate, wobei es out o the box Untersttzung r SOAP- und REST-basierte Ser-vices mitbringt. Deswegen wird au diese Anstze in den nchsten Abschnitten nher ein-gegangen. Darber hinaus werden Standards wie WSDL, die hufig gemeinsam mit SOAPzum Einsatz kommen, besprochen.

    1.2.1SOAP

    Bei SOAP handelt es sich um einen XML-basierten Standard zur Kommunikation zwischenSystemen. Im Zuge dessen knnen Nachrichten ausgetauscht oder enternte Prozedurenangestoen werden (Remote Procedure Calls, RPC). Obwohl SOAP meist in Kombination mitHTTP(S) verwendet wird, ist es prinzipiell protokollunabhngig. Beispielsweise wre esdenkbar, SOAP-Nachrichten via SMTP zu bertragen und somit eine asynchrone Kommuni-kation zwischen Systemen zu realisieren. Allerdings ist dies von den meisten SOAP-Imple-mentierungen, wie auch von WCF, nicht vorgesehen. Ursprnglich stand SOAP r SimpleObject Access Protocol. Seit Version 1.2 ist jedoch nur mehr von SOAP die Rede, zumal es

    weder einach noch objektorientiert ist.

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    28/672

    . Technische Realisierung

    Listing 1.2 zeigt den grundstzlichen Aubau einer SOAP-Nachricht. Aus Grnden der ber-sichtlichkeit wurden Verweise au XML-Namensrume enternt. Die Nachricht besteht auseinem Envelope-Element und wird demnach sinnbildlich als (Brie-)Umschlag betrachtet.Dieser Umschlag beinhaltet Metadaten imHeader-Element. Dabei kann es sich um Inorma-tionen ber den Absender oder den Empnger, die anzustoende Prozedur (Service-Opera-

    tion) oder ber Inormationen zur Absicherung der Kommunikation, wie Passwrter oderSicherheits-Tokens, handeln. Die zu bertragende Nachricht findet sich im Element Bodywieder.

    Listing 1.2Vereinachter Aubau einer SOAP-Nachricht

    Ein Beispiel einer mit den Mitteln von SOAP ormulierten Anrage findet sich in Listing 1.3.DerBodybeinhaltet ein Element GetFlights, das au eine Service-Operation mit demselbenNamen verweist. Die innerhalb von GetFlight positionierten Elemente entsprechen denerwarteten Parametern und den ihnen zuzuweisenden Werten.

    Listing 1.3Beispielhae SOAP-Anrage (SOAP-Request)

    Graz Frankfurt 2010-01-20

    Listing 1.4 zeigt eine mgliche SOAP-Antwort, die mit der Anrage in Listing 1.3 korreliert.ImBodybefindet sich das Element GetFlightsReponse, das Inormationen ber die abgerag-

    ten Flge beinhaltet.

    Listing 1.4Beispielhae SOAP-Antwort (SOAP-Response)

    1700[] 1800[] 1900[]

    Lizenziert fr [email protected]. 2013 Carl Hanser Fachbuchverlag. Alle Rechte vorbehalten. Keine unerlaubte Weitergabe oder Vervielfltigung.

    orderid 21347497 transid 21347497_1D

  • 7/23/2019 Verteilte Systeme Und Services Mit .NET 4.5 Konzepte Und Loesungen Fuer WCF 3446435654 WM 21347497

    29/672

    Serviceorientierung

    Alternativ zu regulren Antworten knnen SOAP-Services im Fehlerall auch mit sogenann-tenFaultsantworten. EinFaultbeinhaltet Inormationen ber den augetretenen Fehler undkann als Gegenstck zuExceptionsin .NET gesehen werden.

    1.2.1.1SOAP-Bindings (Nachrichtenormate und Kodierungsstile)

    Fr SOAP-Nachrichten stehen zwei unterschiedliche Nachrichtenormate zur Vergung:RPCundDocument.RPCwar ursprnglich zur Implementierung vonRemote Procedure Callsvia SOAP gedacht.Documentist hingegen flexibler und erlaubt den Austausch von beliebi-gen XML-Nachrichten. Allerdings lassen sich ebenso Remote Procedure Callsabbilden. Indiesem Fall wird in der Anrage ein XML-Dokument mit dem Methodennamen und denjeweiligen Parametern sowie in der Antwort ein XML-Dokument mit dem Rckgabewert derauzuruenden Operation bergeben.

    Neben den beiden Nachrichtenormaten stehen auch noch zwei unterschiedliche Kodie-rungsstile zur Vergung:EncodedundLiteral. Diese bestimmen, wie die in einer Nachricht

    bermittelten Daten mittels XML dargestellt werden. Bei der Verwendung vonEncodedwer-den die Daten gem der SOAP-Spezifikation dargestellt. Dieses Encoding ist auch als Sec-tion 5-Encodingbekannt, da es ursprnglich in Abschnitt 5 der SOAP-Spezifikation definiertwurde. Bei der Verwendung vonLiteralorientiert sich die Darstellung der Daten hingegenalleinig an den Regeln einesXML Schemas(http://www.w3.org/XML/Schema). bertrageneNachrichten knnen somit bei dieser Spielart gegen ein XML Schema gepr werden, umherauszufinden, ob sie korrekt augebaut sind. Da es sich beiXML Schemaum einen etab-lierten Standard handelt, wird die Verwendung von Encoded als obsolet angesehen undsollte deshalb nicht mehr verwendet werden.

    Somit reduzieren sich die praxisrelevanten Kombinationen aus Nachrichtenstil und Kodie-

    rung auRPC/ LiteralundDocument/ Literal. Aus Grnden der Kompatibilitt mit lterenServices muss ab und an auch au RPC/ Encoded zurckgegriffen werden. Document/Encodedhat im Gegensatz dazu keine Bedeutung in der Praxis.

    FrDocument/ Literal stehen wiederum zwei Spielarten zur Vergung:Bareund Wrapped.Bei Wrappedwerden smtliche Parameter eines enternten Methodenaurus von einem ein-zigen Element umklammert, wobei der Name dieses Elements hufig au die auzuruendeProzedur schlieen lsst. Ein Beispiel dazu stellt die zuvor betrachtete SOAP-Anrage inListing 1.3 dar. Hier werden alle bergebenen Parameter im Element GetFlightseingeschlos-sen. Darber hinaus gleicht dies dem Aubau der selben Nachricht beim Einsatz von RPC/Literal. Bei Verwendung vonDocument/ Literal Barewrde der Body stattdessen die einzel-nen Parameter direkt beinhalten.

    1.2.2Web Service Description Language (WSDL)

    Die Web Service Description Language(WSDL) ist eine au XML basierende Sprache zur or-malen Beschreibung von Web Services. Ein WSDL-Dokument definiert unter anderem dievon einem Web Service zur Vergung gestellten Operationen sowie die damit verbundenenNachrichten r Anragen und Antworten. Es verweist au die verwendeten Transportproto-

    kolle