Implementieren von DienstverträgenImplementing Service Contracts

Ein Dienst ist eine Klasse, die die an einem oder mehreren Endpunkten für den Client bereitstehenden Funktionen verfügbar macht.A service is a class that exposes functionality available to clients at one or more endpoints. Schreiben Sie eine Klasse, die einen Windows Communication Foundation (WCF)-Vertrag implementiert, zum Erstellen eines Diensts.To create a service, write a class that implements a Windows Communication Foundation (WCF) contract. Dazu haben Sie zwei Möglichkeiten:You can do this in one of two ways. Sie können den Vertrag gesondert als Schnittstelle definieren und dann eine Klasse erstellen, die die Schnittstelle implementiert.You can define the contract separately as an interface and then create a class that implements that interface. Alternativ können Sie die Klasse und den Vertrag direkt erstellen, indem Sie das ServiceContractAttribute-Attribut direkt für die Klasse und das OperationContractAttribute-Attribut für die Methoden festlegen, die für die Clients des Dienstes verfügbar sind.Alternatively, you can create the class and contract directly by placing the ServiceContractAttribute attribute on the class itself and the OperationContractAttribute attribute on the methods available to the clients of the service.

Erstellen einer DienstklasseCreating a service class

Im folgende Beispiel implementiert ein Dienst einen IMath-Vertrag, der gesondert definiert wurde.The following is an example of a service that implements an IMath contract that has been defined separately.

// Define the IMath contract.  
[ServiceContract]  
public interface IMath  
{  
    [OperationContract]   
    double Add(double A, double B);  

    [OperationContract]  
    double Multiply (double A, double B);  
}  

// Implement the IMath contract in the MathService class.  
public class MathService : IMath  
{  
    public double Add (double A, double B) { return A + B; }  
    public double Multiply (double A, double B) { return A * B; }  
}  

Ein Dienst kann stattdessen einen Vertrag auch direkt verfügbar machen.Alternatively, a service can expose a contract directly. Im folgende Beispiel definiert und implementiert eine Dienstklasse einen MathService-Vertrag.The following is an example of a service class that defines and implements a MathService contract.

// Define the MathService contract directly on the service class.  
[ServiceContract]  
class MathService  
{  
    [OperationContract]  
    public double Add(double A, double B) { return A + B; }  
    [OperationContract]  
    private double Multiply (double A, double B) { return A * B; }  
}  

Die vorhergehenden Dienste machen hierbei verschiedene Verträge verfügbar, da sich die Vertragsnamen unterscheiden.Note that the preceding services expose different contracts because the contract names are different. Im ersten Fall wird der verfügbar gemachte Vertrag "IMath" genannt und im zweiten Fall lautet der Name des Vertrags MathService".In the first case, the exposed contract is named "IMath" while in the second case the contract is named "MathService".

Sie können auf den Ebenen der Dienst- und Vorgangsimplementierung Verschiedenes festlegen, z. B. die Parallelität und Instanziierung.You can set a few things at the service and operation implementation levels, such as concurrency and instancing. Weitere Informationen finden Sie unter entwerfen und Implementieren von Diensten.For more information, see Designing and Implementing Services.

Nach der Implementierung eines Dienstvertrags müssen Sie einen oder mehrere Endpunkte für den Dienst erstellen.After implementing a service contract, you must create one or more endpoints for the service. Weitere Informationen finden Sie unter Endpunkterstellung.For more information, see Endpoint Creation Overview. Weitere Informationen zur Ausführung eines Diensts finden Sie unter Hostingdienste.For more information about how to run a service, see Hosting Services.

Siehe auchSee Also

Entwerfen und Implementieren von DienstenDesigning and Implementing Services
Vorgehensweise: Erstellen eines Diensts mit einer VertragsklasseHow to: Create a Service with a Contract Class
Vorgehensweise: Erstellen eines Diensts mit einer VertragsschnittstelleHow to: Create a Service with a Contract Interface
Angeben des DienstlaufzeitverhaltensSpecifying Service Run-Time Behavior