creasoft - einführung windows communication foundation
TRANSCRIPT
Software: Planen. Entwickeln. Testen.
Start
Kurzvorstellung
WCF
Windows Communication Foundation(Indigo)
Software: Planen. Entwickeln. Testen.
Agenda
• Historische Entwicklung der Kommunikation• Verteilte Anwendungen • Was ist WCF?• WCF Architektur• Wie funktioniert WCF?• Demo1• Wie verwende ich WCF?• Demo2 ... 5• .NET Remoting vs. WCF, Migration, Performance• Zukunft von WCF
Software: Planen. Entwickeln. Testen.
Historische Entwicklung der Applikations-Kommunikation
Software: Planen. Entwickeln. Testen.
Historische Entwicklung der Applikations-Architektur
Software: Planen. Entwickeln. Testen.
Historische Entwicklung der Anwendungen
Software: Planen. Entwickeln. Testen.
Anforderungen verteilter Anwendungen
• Implementiere Geschäftlogik soll auch von anderen Anwendungen verwendet werden können.
• Verschiedenartige Kommunikations-anforderungen (Interoperabilität, Security, Leistung)
Software: Planen. Entwickeln. Testen.
Was ist WCF?
• Kommunikationsplattform für verteilte Anwendungen• Vereinheitlichung verschiedener
Kommunikationstechnologien (XML-Webservices, Remoting, MSMQ, COM+, NamedPipes)
• Funktionsunterstützung für Authentifizierung, Verschlüsselung, Transaktionen und Zuverlässigkeit
• Serviceorientierte Architektur, geringe Kopplung, Protokollunabhängig
• Erweiterbar
Software: Planen. Entwickeln. Testen.
WCF Unified Framework
• ASMX (WebService) plattformübergreifend
• Remotingeng gekoppelte .NET to .NET Anwendungen
• Enterprise ServicesCOM+, verteilte Transaktionen
• WSE (WebService Extensions)WS-* Spezifikationen (Security, Transaction, …)
• MessagingMSMQ (garantierte Datenlieferung, Entkoppelung Arbeitslast), Named Pipes
Software: Planen. Entwickeln. Testen.
WCF-Kommunikation
• Dienstorientiert• WCF-Client und WCF-Dienst
interagieren über SOAP• Für hohe Leistungen kann eine
optimierte Binärversion von SOAP konfiguriert werden-> Durchsatz + 25%
• WCF ist eine der schnellsten verteilten Anwendungs-plattformen
Software: Planen. Entwickeln. Testen.
WCF im .NET Framework
• Erste Funktionalität für Fernaufrufe in .Net 1.0 (Remoting und XML-WebServices)
• Vollständig und Vereinheitlicht seit .NET 3.0
Software: Planen. Entwickeln. Testen.
WCF-Architektur
• 4 Hauptebenen der Architektur von WCF
Software: Planen. Entwickeln. Testen.
Vertrags-Ebene
• Definiert die verschiedenen Aspekte des Nachrichtensystems
• Datenvertrag-> beschreibt die Nachrichtenparameter
• Nachrichtenvertrag-> beschreibt bestimmte Nachrichtenteile (SOAP)
• Dienstvertrag-> beschreibt die Methodensignaturen des Dienstes
• Richtlinien-> z.B. Sicherheitsanforderungen
• Bindungen-> verwendeten Transport (HTTP, TCP) und Protokoll
Software: Planen. Entwickeln. Testen.
Dienstlaufzeit-Ebene
• Steuert das Verhalten während der Laufzeit
• Einschränkungsverhalten-> steuert wie viele Nachrichten verarbeitet werden
• Fehlerverhalten-> steuert wie bei internen Dienstfehler reagiert wird
• Metadatenverhalten-> steuert was öffentlich verfügbar gemacht wird
• Instanzverhalten-> steuert mit wie vielen Instanzen des Dienstes verarbeitet wird
• Transaktionsverhalten-> steuert Rollback von durchgeführten Vorgängen im Falle eines Fehlers
Software: Planen. Entwickeln. Testen.
Messaging-Ebene
• Besteht aus Kanälen• Es gibt 2 Arten von Kanälen• Transportkanäle
-> lesen und schrieben Nachrichten aus den Netzwerk (teilweise mit Encoder)
• Protokollkanäle-> implementieren Nachrichtenverarbeitungs-protokolle. Erfolgt häufig durch lesen oder schreiben zusätzlicher Headers (WS-Security, WS-Reliability)
Software: Planen. Entwickeln. Testen.
Aktivierungs- und Hosting Ebene
• WCF-Dienste können verschieden gehostet werden:– EXE (Selbsthostung)– IIS– WindowsService– WAS (ermöglicht
automatischen Start des Dienstes)
Software: Planen. Entwickeln. Testen.
WCF-Systemanforderungen
• Standardmässig auf Vista installiert• Kann auch auf XP Professional SP2 und
Server2003 installiert werden
Software: Planen. Entwickeln. Testen.
Wie funktioniert WCF?
• Endpunkte• ABC• Verhalten
Software: Planen. Entwickeln. Testen.
WCF-Endpunkte
• Endpunkte– Einen pro Client– Einen oder mehrere pro Service– Beinhalten jeweils die Eigenschaften ABC
Client Service
EndpointEndpoint
Endpoint
Endpoint
Software: Planen. Entwickeln. Testen.
WCF-ABC
• Address -> Wo? URL mit Pfad und Port• Binding -> Wie? Kanal und Protokoll• Contract -> Was? Methoden und Daten
Client ServiceCBA
CBA
CBA
ABC
Address Binding Contract
Software: Planen. Entwickeln. Testen.
WCF-Verhalten
• Das Laufzeitverhalten (Behaviour) des Services ist genau steuerbar– Instanzierung– Parallelität (Concurrency)– Drosselung– Transaction– Security– …
Client ServiceCBA
CBA
CBA
ABC
Behaviour
BV
Software: Planen. Entwickeln. Testen.
Demo 1
WCFTestClient
Endpoints
Software: Planen. Entwickeln. Testen.
Wie verwende ich WCF?
Software: Planen. Entwickeln. Testen.
1. Contract definieren
Software: Planen. Entwickeln. Testen.
2. Service implementieren
Software: Planen. Entwickeln. Testen.
3. Endpunkte definieren
Software: Planen. Entwickeln. Testen.
4. Service hosten
Software: Planen. Entwickeln. Testen.
5. Proxy erzeugen
Software: Planen. Entwickeln. Testen.
6. Endpunkt wählen
Software: Planen. Entwickeln. Testen.
Demo 2
WCF Service und Client erstellen
Software: Planen. Entwickeln. Testen.
Demo 3
WCF-Instancing
Software: Planen. Entwickeln. Testen.
Demo 4
WCF-Throttling
Software: Planen. Entwickeln. Testen.
Demo 5
WCF-Transacted (MSMQ)
Software: Planen. Entwickeln. Testen.
Koexistenz .NET Remoting und WCF
• .NET Remoting und WCF können parallel verwendet (side-by-side)
• Paralleler Einsatz sogar innerhalb derselben Applikation oder derselben AppDomain.
• Man kann sogar serverseitige Objekte erzeugen, welche von .NET Remoting und WCF verwendet werden.
Software: Planen. Entwickeln. Testen.
Migration .NET Remoting nach WCF
• Ist für die meisten Applikationen ein einfaches Vorgehen in 3 Schritten:– Interface Contracts mit [ServiceContract] und
[OperationContract] markieren– Datenstrukturen mit [DataContract] und
[DataMember] markieren– Evtl. Activation Model von Client Activated
Objects (CAO) auf Server Activated Objects (SAO) umstellen
Software: Planen. Entwickeln. Testen.
Performancevergleich .NET Remoting vs. WCF
• Client and Server are both placed on a single machine
Server• The service in general:
- contains one method that takes one argument and returns DataSet (the DataSet contains as many rows as method argument says)- DataSet contains 4 columns - ID (long), Name (string), Description (string) and CreatedOn (DateTime)
• The .Net Remoting version of the service:- it's a wellknown server activated object with SingleCall activation mode- the channel is TCP with binary serialization
• The WCF version of the service:- it uses netTcpBinding
Client• Invokes each of the service (WCF and Remoting) 100
times on a single thread (sequential invocation in a loop)
• Passes to the service number of rows to generate in the DataSet (1, 100 and 200)
• I measured creation of the service proxy, method invocation and proxy close (with WCF service)
Software: Planen. Entwickeln. Testen.
Zukunft von WCF
• Microsoft entwickelt leistungsfähigen Applikationsserver für verteilte .NET Anwendungen– Windows Server Codename DUBLIN– .NET Framework 4.0
• WCF und WF sind zentrale Konzepte davon• Verfügbar: In den nächsten Jahren
Software: Planen. Entwickeln. Testen.
EndeDanke für die Aufmerksamkeit!