Gewusst wie: Definieren eines Windows Communication Foundation-DienstvertragsHow to: Define a Windows Communication Foundation Service Contract

Dies ist die erste von sechs Aufgaben, die zum Erstellen einer grundlegenden Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Anwendung erforderlich sind.This is the first of six tasks required to create a basic Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) application. Einen Überblick über alle sechs Aufgaben finden Sie unter der Lernprogramm für erste Schritte Thema.For an overview of all six of the tasks, see the Getting Started Tutorial topic.

Beim Erstellen eines grundlegenden WCFWCF-Diensts besteht die erste Aufgabe im Definieren eines Dienstvertrags.When creating a WCFWCF service, the first task is to define a service contract. Der Dienstvertrag gibt an, welche Vorgänge der Dienst unterstützt.The service contract specifies what operations the service supports. Ein Vorgang ähnelt einer Webdienstmethode.An operation can be thought of as a Web service method. Verträge werden durch Definieren einer C++-, einer C#- oder einer Visual Basic (VB)-Schnittstelle erstellt.Contracts are created by defining a C++, C#, or Visual Basic (VB) interface. Jede Methode in der Schnittstelle entspricht einem bestimmten Dienstvorgang.Each method in the interface corresponds to a specific service operation. Auf jede Schnittstelle muss das ServiceContractAttribute angewendet werden, und auf jeden Vorgang muss das OperationContractAttribute angewendet werden.Each interface must have the ServiceContractAttribute applied to it and each operation must have the OperationContractAttribute attribute applied to it. Wenn eine Methode in einer Schnittstelle, die über das ServiceContractAttribute-Attribut verfügt, nicht das OperationContractAttribute-Attribut aufweist, wird diese Methode vom Dienst nicht verfügbar gemacht.If a method within an interface that has the ServiceContractAttribute attribute does not have the OperationContractAttribute attribute, that method is not exposed by the service.

Der für diese Aufgabe verwendete Code wird in dem Beispiel im Anschluss an das Verfahren bereitgestellt.The code used for this task is provided in the example following the procedure.

So definieren Sie einen DienstvertragTo define a service contract

  1. Open Visual Studio 2012Visual Studio 2012 als Administrator, indem Sie mit der rechten Maustaste des Programms in der starten Menü- und Auswählen von als Administrator ausführen.Open Visual Studio 2012Visual Studio 2012 as an administrator by right-clicking the program in the Start menu and selecting Run as administrator.

  2. Erstellen Sie einen WCF-Dienstbibliotheksprojekt, indem Sie auf die Datei Menü- und Auswählen von neu, Projekt.Create a WCF Service Library project by clicking the File menu and selecting New, Project. In der neues Projekt erweitern Sie im Dialogfeld auf der linken Seite des Dialogfelds Visual C#- für ein C#-Projekt oder andere Sprachen und dann Visual Basic für ein Visual Basic-Projekt.In the New Project dialog, on the left-hand side of the dialog expand Visual C# for a C# project or Other Languages and then Visual Basic for a Visual Basic project. Wählen Sie unter der ausgewählten Sprache WCF und eine Liste der Projektvorlagen im mittleren Abschnitt des Dialogfelds angezeigt.Under the language selected select WCF and a list of project templates will be displayed on the center section of the dialog. Wählen Sie WCF-Dienstbibliothek, und geben GettingStartedLib in der Namen Textfeld und GettingStarted in der Projektmappenname Textfeld unten auf der das Dialogfeld ".Select WCF Service Library, and type GettingStartedLib in the Name textbox and GettingStarted in the Solution name textbox at the bottom of the dialog.

  3. Visual Studio erstellt das Projekt, das 3 Dateien enthält: IService1.cs (oder IService1.vb),Service1.cs (oder Service1.vb) und App.config. Die Datei IService1 enthält einen Standarddienstvertrag.Visual Studio will create the project which contains 3 files: IService1.cs (or IService1.vb), Service1.cs (or Service1.vb), and App.config. The IService1 file contains a default service contract. Die Datei Service1 enthält eine Standardimplementierung des Dienstvertrags.The Service1 file contains a default implementation of the service contract. Die Datei App.config enthält die Konfiguration, die erforderlich ist, um den Standarddienst mit dem Visual Studio-WCF-Diensthost zu laden.The App.config file contains configuration needed to load the default service with the Visual Studio WCF Service Host. Weitere Informationen zum WCF-Diensthost-Tool finden Sie unter WCF-Diensthost (WcfSvcHost.exe)For more information about the WCF Service Host tool, see WCF Service Host (WcfSvcHost.exe)

  4. Öffnen Sie die Datei IService1.cs oder IService1.vb, und löschen Sie den Code in der Namespacedeklaration, wobei Sie die Namespacedeklaration beibehalten.Open the IService1.cs or IService1.vb file and delete the code within the namespace declaration leaving the namespace declaration. Definieren Sie in der Namespacedeklaration eine neue Schnittstelle mit dem Namen ICalculator, wie im Code unten dargestellt.Inside the namespace declaration define a new interface called ICalculator as shown in the code below.

    // IService.cs  
    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Runtime.Serialization;  
    using System.ServiceModel;  
    using System.Text;  
    
    namespace GettingStartedLib  
    {  
            [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]  
            public interface ICalculator  
            {  
                [OperationContract]  
                double Add(double n1, double n2);  
                [OperationContract]  
                double Subtract(double n1, double n2);  
                [OperationContract]  
                double Multiply(double n1, double n2);  
                [OperationContract]  
                double Divide(double n1, double n2);  
            }  
    }  
    
    ‘IService.vb  
    Imports System  
    Imports System.ServiceModel  
    
    Namespace GettingStartedLib  
    
        <ServiceContract(Namespace:="http://Microsoft.ServiceModel.Samples")> _  
        Public Interface ICalculator  
    
            <OperationContract()> _  
            Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double  
            <OperationContract()> _  
            Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double  
            <OperationContract()> _  
            Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double  
            <OperationContract()> _  
            Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double  
        End Interface  
    End Namespace  
    

    Dieser Vertrag definiert einen Onlinerechner.This contract defines an online calculator. Beachten Sie, dass die ICalculator-Schnittstelle mit dem ServiceContractAttribute-Attribut markiert ist.Notice the ICalculator interface is marked with the ServiceContractAttribute attribute. Dieses Attribut definiert einen Namespace, anhand dessen der Vertragsname eindeutig angegeben wird.This attribute defines a namespace that is used to disambiguate the contract name. Jeder Rechnervorgang wird mit dem OperationContractAttribute-Attribut markiert.Each calculator operation is marked with the OperationContractAttribute attribute.

    Hinweis

    Wenn eine Schnittstelle, ein Member oder eine Klasse mithilfe von Attributen mit Anmerkungen versehen wird, können Sie auf die Angabe „Attribute“ im Namen des Attributs verzichten.When using attributes to annotate an interface, member, or class, you can drop the "Attribute" part from the attribute name. Deshalb wird ServiceContractAttribute in C# zu [ServiceContract] oder in Visual Basic zu <ServiceContract>.So ServiceContractAttribute becomes [ServiceContract] in C#, or <ServiceContract> in Visual Basic.

Siehe auchSee Also

ServiceContractAttribute
OperationContractAttribute
Vorgehensweise: Implementieren eines WCF-DienstvertragsHow to: Implement a Service Contract
Erste SchritteGetting Started
Selbst gehostete DiensteSelf-Host