Windows Communication Foundation-Dienste und WCF Data Services in Visual Studio

Visual Studio 2008 umfasst Tools für die Arbeit mit Windows Communication Foundation (WCF) und WCF Data Services. Dabei handelt es sich um Microsoft-Technologie zum Erstellen verteilter Anwendungen. Dieses Thema enthält eine Einführung in Dienste aus der Visual Studio-Sicht.

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.

Was sind WCF Data Services?

Bei WCF Data Services handelt es sich um Dienste, die direkt mit einer Datenbank interagieren, sodass Sie Daten mithilfe von standardmäßigen HTTP-Verben wie GET, POST, PUT oder DELETE zurückgeben können. WCF Data Services sind normalerweise gut für Anwendungen geeignet, die zum Erstellen, Aktualisieren oder Löschen von Datensätzen in einer Datenbank verwendet werden. Weitere Informationen finden Sie unter ADO.NET Data Services-Framework (möglicherweise in englischer Sprache).

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
[ServiceContract]
public interface IService1
<OperationContract()>
Function GetData(ByVal value As String) As String
[OperationContract]
string GetData(string value);

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:

  Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
      Dim client As New ServiceReference1.Service1Client
      Dim returnString As String

      returnString = client.GetData(TextBox1.Text)
      Label1.Text = returnString
  End Sub
private void button1_Click(System.Object sender, System.EventArgs e)
{
    ServiceReference1.Service1Client client = new
        ServiceReference1.Service1Client();
    string returnString;

    returnString = client.GetData(textBox1.Text);
    label1.Text = 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 Templates.

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 Service Host (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 Test Client (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. In den meisten Fällen muss der Dienst nur instanziiert werden, um ihn verwenden zu können.

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.

Verwandte Themen

Titel

Beschreibung

Exemplarische Vorgehensweise: Erstellen von und Zugreifen auf WCF-Dienste

Stellt ein Schritt-für-Schritt-Beispiel zum Erstellen und Verwenden von WCF-Diensten in Visual Studio bereit.

Exemplarische Vorgehensweise: Erstellen von und Zugreifen auf einen WCF-Datendienst in Visual Studio

Enthält ein Schritt-für-Schritt-Beispiel zum Erstellen und Verwenden von WCF Data Services in Visual Studio.

Using the WCF Development Tools

Erläutert, wie WCF-Dienste in Visual Studio erstellt und getestet werden.

Gewusst wie: Hinzufügen, Aktualisieren oder Entfernen eines Dienstverweises

Beschreibt, wie WCF-Dienste in einem Projekt hinzugefügt, aktualisiert oder entfernt werden.

Gewusst wie: Hinzufügen, Aktualisieren oder Entfernen eines WCF-Datendienstverweises

Erläutert, wie WCF Data Services in Visual Studio verwendet werden und wie auf sie verwiesen wird.

Gewusst wie: Hinzufügen eines Verweises auf einen Webdienst

Beschreibt, wie Sie einem Projekt einen Verweis auf einen XML (ASMX)-Webdienst hinzufügen.

Gewusst wie: Auswählen eines Dienstendpunkts

Beschreibt, wie ein Endpunkt für einen WCF-Dienst ausgewählt wird, der mehrere Endpunkte verfügbar macht.

Gewusst wie: Asynchrones Aufrufen einer Dienstmethode

Beschreibt, wie ein WCF-Dienst asynchron aufgerufen wird.

Gewusst wie: Binden der von einem Dienst zurückgegebenen Daten

Beschreibt, wie die Datenbindung zu einem WCF-Dienst aktiviert wird.

Gewusst wie: Konfigurieren eines Diensts zum Wiederverwenden vorhandener Typen

Beschreibt das Aktivieren bzw. Deaktivieren der Typfreigabe für einen WCF-Dienst.

Problembehandlung bei Dienstverweisen

Beschreibt einige häufig auftretende Fehler bei Dienstverweisen sowie Methoden zur Problembehandlung.

Debugging WCF Services

Beschreibt allgemeine Debugprobleme und -verfahren für WCF-Dienste.

Übersicht über den Windows Communication Foundation-Authentifizierungsdienst

Beschreibt, wie WCF verwendet wird, um einen Rollendienst für eine Website bereitzustellen.

Messaging in the .NET Compact Framework

Erläutert die Unterstützung für die WCF-Messagingebene in .NET Compact Framework.

Exemplarische Vorgehensweise: Erstellen einer N-Tier-Datenanwendung

Enthält schrittweise Anweisungen zum Erzeugen eines typisierten DataSets und zur Aufteilung des TableAdapter-Codes und des DataSet-Codes in mehrere Projekte.

Dialogfeld "Dienstverweis hinzufügen"

Beschreibt die Benutzeroberflächenelemente des Dialogfelds Dienstverweis hinzufügen.

Dialogfeld "Dienstverweis konfigurieren"

Beschreibt die Benutzeroberflächenelemente des Dialogfelds Dienstverweis konfigurieren.

Verweis

System.ServiceModel

System.Data.Services