Implémentation de contrats de serviceImplementing Service Contracts

Un service est une classe qui expose les fonctionnalités disponibles aux clients à un ou plusieurs points de terminaison.A service is a class that exposes functionality available to clients at one or more endpoints. Pour créer un service, écrivez une classe qui implémente un contrat Windows Communication Foundation (WCF).To create a service, write a class that implements a Windows Communication Foundation (WCF) contract. Vous pouvez le faire de deux façons.You can do this in one of two ways. Vous pouvez définir séparément le contrat comme une interface, puis créer une classe qui implémente cette interface.You can define the contract separately as an interface and then create a class that implements that interface. Vous pouvez également créer la classe et le contrat directement en plaçant l'attribut ServiceContractAttribute sur la classe elle-même et l'attribut OperationContractAttribute sur les méthodes qui sont à la disposition des clients du service.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.

Création d'une classe de serviceCreating a service class

Voici l'exemple d'un service qui implémente un contrat IMath défini séparément.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; }  
}  

Un service peut également exposer directement un contrat.Alternatively, a service can expose a contract directly. Voici l'exemple d'une classe de service qui définit et implémente un contrat MathService.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; }  
}  

Notez que les services précédents exposent des contrats différents parce que les noms des contrats sont différents.Note that the preceding services expose different contracts because the contract names are different. Dans le premier cas, le contrat exposé est nommé « IMath » alors que dans le second cas, le contrat est nommé « MathService ».In the first case, the exposed contract is named "IMath" while in the second case the contract is named "MathService".

Vous pouvez définir quelques éléments au niveau de l'implémentation du service et des opérations, tels que l'accès concurrentiel et l'instanciation.You can set a few things at the service and operation implementation levels, such as concurrency and instancing. Pour plus d’informations, consultez conception et implémentation de services.For more information, see Designing and Implementing Services.

Après avoir implémenté un contrat de service, vous devez créer un ou plusieurs points de terminaison pour le service.After implementing a service contract, you must create one or more endpoints for the service. Pour plus d’informations, consultez vue d’ensemble de la création d’un point de terminaison.For more information, see Endpoint Creation Overview. Pour plus d’informations sur l’exécution d’un service, consultez services d’hébergement.For more information about how to run a service, see Hosting Services.

Voir aussiSee also