Share via


Einführung in Windows Communication Foundation-Dienste in Visual Studio

Aktualisiert: November 2007

Visual Studio 2008 umfasst Tools für die Arbeit mit Windows Communication Foundation (WCF), der Microsoft-Technologie zum Erstellen verteilter Anwendungen. In diesem Thema wird WCF aus der Perspektive von Visual Studio eingeführt.

Was ist WCF?

Windows Communication Foundation (WCF) ist ein einheitliches Framework zum Erstellen verteilter Anwendungen, die sicher, zuverlässig, transaktiv und interoperabel sind. In früheren Versionen von Visual Studio konnten verschiedene Technologien für das Kommunizieren zwischen Anwendungen verwendet werden.

Wenn Informationen für die gemeinsame Nutzung bereitgestellt werden sollten, auf die von einer beliebigen Plattform zugegriffen werden konnte, wurde ein Webdienst (auch als ASMX-Webdienst bezeichnet) verwendet. Wenn lediglich Daten zwischen einem Client und einem Server verschoben werden sollten, der unter dem Betriebssystem Windows ausgeführt wurde, wurde .NET Remoting verwendet. Wenn transaktive Kommunikation benötigt wurde, wurden Enterprise-Dienste (DCOM) verwendet, und bei Verwendung eines Warteschlangenmodells wurde Message Queuing (auch MSMQ) eingesetzt.

WCF bündelt die Funktionalität all dieser Technologien in einem einheitlichen Programmiermodell. Dadurch wird die Entwicklung verteilter Anwendungen vereinfacht.

WCF-Programmiermodell

Das WCF-Programmiermodell basiert auf der Kommunikation zwischen zwei Entitäten: einem WCF-Dienst und einem WCF-Client. Das Programmiermodell ist im System.ServiceModel-Namespace in .NET Framework gekapselt.

WCF-Dienst

Ein WCF-Dienst basiert auf einer Schnittstelle, durch die ein Vertrag zwischen dem Dienst und dem Client definiert wird. Sie ist mit einem ServiceContractAttribute-Attribut markiert, wie im folgenden Code dargestellt:

<ServiceContract()> _
Public Interface IService1
    <OperationContract()> _
    Function GetData(ByVal Value As String) As String
End Interface

Sie definieren von einem WCF-Dienst verfügbar gemachte Funktionen oder Methoden, indem Sie sie mit einem OperationContractAttribute-Attribut markieren. Außerdem können Sie serialisierte Daten verfügbar machen, indem Sie einen zusammengesetzten Typ mit einem DataContractAttribute-Attribut markieren. Dadurch wird die Datenbindung in einem Client ermöglicht.

Nachdem eine Schnittstelle und die zugehörigen Methoden definiert wurden, werden sie in einer Klasse gekapselt, durch die die Schnittstelle implementiert wird. Eine einzelne WCF-Dienstklasse kann mehrere Dienstverträge implementieren.

Ein WCF-Dienst wird verfügbar gemacht, damit er von einem so genannten Endpunkt verwendet werden kann. Der Endpunkt stellt die einzige Möglichkeit zur Kommunikation mit dem Dienst dar. Es ist nicht möglich, über einen direkten Verweis auf den Dienst zuzugreifen, wie dies bei anderen Klassen der Fall ist.

Ein Endpunkt besteht aus einer Adresse, einer Bindung und einem Vertrag. Durch die Adresse wird festgelegt, wo sich ein Dienst befindet: unter einer URL, einer FTP-Adresse, einem Netzwerkpfad oder lokalen Pfad. Eine Bindung legt fest, wie Sie mit dem Dienst kommunizieren. WCF-Bindungen bieten ein vielseitiges Modell zum Angeben eines Protokolls wie HTTP oder FTP, eines Sicherheitsmechanismus wie der Windows-Authentifizierung bzw. von Benutzernamen und Kennwörtern und vielem mehr. Ein Vertrag umfasst die Vorgänge, die von der WCF-Dienstklasse verfügbar gemacht werden.

Für einen einzelnen WCF-Dienst können mehrere Endpunkte verfügbar gemacht werden. Dies ermöglicht es verschiedenen Clients, auf unterschiedliche Weise mit demselben Dienst zu kommunizieren. Beispielsweise kann ein Dienst für Bankgeschäfte einen Endpunkt für Bankangestellte und einen weiteren für externe Kunden bereitstellen, wobei jede Gruppe eine andere Adresse, Bindung und/oder einen anderen Vertrag verwendet.

WCF-Client

Ein WCF-Client besteht aus einem Proxy, durch den eine Anwendung mit einem WCF-Dienst kommunizieren kann, und einem Endpunkt, der einem für den Dienst definierten Endpunkt entspricht. Der Proxy wird auf Clientseite in der Datei app.config generiert und enthält Informationen über die vom Service verfügbar gemachten Typen und Methoden. Bei Diensten, die mehrere Endpunkte verfügbar machen, kann der Client den am besten geeigneten Dienst auswählen, beispielsweise für die Kommunikation über HTTP und die Verwendung der Windows-Authentifizierung.

Nachdem ein WCF-Client erstellt wurde, können Sie im Code auf den Dienst wie auf jedes andere Objekt verweisen. Um z. B. die oben veranschaulichte GetData-Methode aufzurufen, würden Sie mit dem folgenden Beispiel vergleichbaren Code schreiben:

Dim client As New ServiceReference.Service1Client
Dim returnString As String

returnString = client.GetData("Hello")
MsgBox(returnString)

WCF-Tools in Visual Studio

Visual Studio 2008 bietet Tools, die Sie beim Erstellen sowohl von WCF-Diensten als auch von WCF-Clients unterstützen. Eine exemplarische Vorgehensweise zur Veranschaulichung der Tools finden Sie unter Exemplarische Vorgehensweise: Erstellen von und Zugreifen auf WCF-Dienste.

Erstellen und Testen von WCF-Diensten

Sie können die WCF-Vorlagen in Visual Studio als Grundlage verwenden, um schnell einen eigenen Dienst zu erstellen. Anschließend können Sie den Dienst mithilfe des automatischen Hosts des WCF-Diensts und WCF-Testclients debuggen und testen. Zusammen bieten diese Tools einen schnellen, zweckmäßigen Debug- und Testzyklus und vermeiden, dass in einer frühen Phase ein Commit für ein Hostmodell ausgeführt werden muss.

WCF-Vorlagen

Visual Studio-WCF-Vorlagen stellen eine grundlegende Klassenstruktur zur Dienstentwicklung bereit. Im Dialogfeld Neues Projekt hinzufügen stehen mehrere WCF-Vorlagen zur Verfügung. Dazu gehören WCF-Dienstbibliotheksprojekte, WCF-Dienstwebwebsites und WCF-Dienstelementvorlagen.

Wenn Sie eine Vorlage auswählen, werden Dateien für einen Dienstvertrag, eine Dienstimplementierung und eine Dienstkonfiguration hinzugefügt. Alle erforderlichen Attribute wurden bereits hinzugefügt, wodurch ein einfacher Dienst vom Typ "Hello World" erstellt wurde und Sie keinerlei Code schreiben mussten. Natürlich würden Sie zur Bereitstellung von Funktionen und Methoden für einen echten Dienst weiteren Code hinzufügen, die Vorlage stellt jedoch die grundlegende Basis bereit.

Weitere Informationen über WCF-Vorlagen finden Sie unter WCF Visual Studio-Vorlagen.

WCF-Diensthost

Wenn Sie den Visual Studio Debugger (durch Drücken von F5) für ein WCF-Dienstprojekt starten, wird das Tool für den WCF-Diensthost automatisch gestartet, um den Dienst lokal zu hosten. Der WCF-Diensthost listet die Dienste in einem WCF-Dienstprojekt auf, lädt die Projektkonfiguration und instanziiert einen Host für jeden gefundenen Dienst.

Mithilfe des WCF-Diensthosts können Sie einen WCF-Dienst testen, ohne dass zusätzlicher Code geschrieben oder während der Entwicklung ein Commit für einen bestimmten Host ausgeführt werden muss.

Weitere Informationen über den WCF-Diensthost finden Sie unter WCF-Diensthost (WcfSvcHost.exe).

WCF-Testclient

Mit dem WCF-Testclienttool können Sie Testparameter eingeben, diese Eingabe an einen WCF-Dienst senden und die vom Dienst zurückgesendete Antwort anzeigen. In Kombination mit dem WCF-Diensthost bietet das Tool eine benutzerfreundliche Lösung zum Testen von Diensten.

Wenn Sie F5 drücken, um ein WCF-Dienstprojekt zu debuggen, wird der WCF-Testclient geöffnet und eine Liste der in der Konfigurationsdatei definierten Dienstendpunkte angezeigt. Sie können die Parameter testen und den Dienst starten und dieses Verfahren wiederholen, um Dienste kontinuierlich zu testen und zu überprüfen.

Weitere Informationen über den WCF-Testclient finden Sie unter WCF-Testclient (WcfTestClient.exe).

Zugreifen auf WCF-Dienste in Visual Studio

Visual Studio 2008 vereinfacht das Erstellen von WCF-Clients, indem automatisch ein Proxy und ein Endpunkt für Dienste generiert wird, die Sie über das Dialogfeld Dienstverweis hinzufügen hinzufügen. Alle erforderlichen Konfigurationsinformationen werden der Datei app.config hinzugefügt. Ihre Aufgabe besteht meist nur darin, den Dienst zu instanziieren, um ihn zu verwenden.

Im Dialogfeld Dienstverweis hinzufügen können Sie die Adresse eines Dienstes eingeben oder einen in der Projektmappe definierten Dienst suchen. Das Dialogfeld gibt eine Liste von Diensten sowie von Vorgängen zurück, die von diesen Diensten bereitgestellt werden. Außerdem können Sie den Namespace definieren, durch den Sie im Code auf die Dienste verweisen.

Das Dialogfeld Dienstverweis konfigurieren ermöglicht es Ihnen, die Konfiguration für einen Dienst anzupassen. Sie können die Adresse eines Diensts ändern, Zugriffsebene, asynchrones Verhalten und Meldungsvertragstypen festlegen und die Wiederverwendung von Typen konfigurieren.

Weitere Informationen über die Verwendung von WCF-Diensten finden Sie unter Verwenden von WCF-Diensten in Visual Studio.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Erstellen von und Zugreifen auf WCF-Dienste

Weitere Ressourcen

Verwenden von WCF-Diensten in Visual Studio

Verwenden der WCF-Entwicklungstools

Windows Communication Foundation-Dienste und ADO.NET Data Services