Procédure : créer un contrat de demande-réponse

Un contrat demande-réponse spécifie une méthode qui retourne une réponse. La réponse doit être envoyée et corrélée à la demande selon les termes de ce contrat. Même si la méthode ne retourne aucune réponse (void dans C# ou un Sub dans Visual Basic), l'infrastructure crée et envoie un message vide à l'appelant. Pour empêcher l'envoi d'un message de réponse vide, utilisez un contrat unidirectionnel pour l'opération.

Pour créer un contrat demande-réponse

  1. Créez une interface dans le langage de programmation de votre choix.

  2. Appliquez l'attribut ServiceContractAttribute à l'interface.

  3. Appliquez l'attribut OperationContractAttribute à chaque méthode que les clients peuvent appeler.

  4. facultatif. Affectez à la propriété IsOneWay la valeur true pour empêcher l'envoi d'un message de réponse vide. Par défaut, toutes les opérations sont des contrats demande-réponse.

Exemple

L'exemple suivant définit un contrat pour un service de calculatrice qui fournit des méthodes Add et Subtract. La méthode Multiply ne fait pas partie du contrat car elle n'est pas marquée par la classe OperationContractAttribute et n'est pas, par conséquent, accessible aux clients.

using System.ServiceModel;

[ServiceContract]
public interface ICalculator
{
    [OperationContract]
    // It would be equivalent to write explicitly:
    // [OperationContract(IsOneWay=false)]
    int Add(int a, int b);

    [OperationContract]
    int Subtract(int a, int b);

    int Multiply(int a, int b)
}
  • Pour plus d’informations sur la spécification des contrats d’opération, consultez la classe OperationContractAttribute et la propriété IsOneWay.

  • Appliquer les attributs ServiceContractAttribute et OperationContractAttribute entraîne la génération automatique de définitions de contrat de service dans un document WSDL (Web Services Description Language) une fois le service déployé. Le document est téléchargé en ajoutant ?wsdl à l'adresse de base HTTP du service. Par exemple, http://microsoft/CalculatorService?wsdl

Voir aussi