Partager via


Procédure : créer un contrat unidirectionnel

Cette rubrique décrit les étapes de base pour créer des méthodes qui utilisent un contrat unidirectionnel. De telles méthodes appellent des opérations sur un service Windows Communication Foundation (WCF) à partir d'un client mais n'attendent pas de réponse. Ce type de contrat peut être utilisé, par exemple, pour publier des notifications destinées à de nombreux abonnés. Vous pouvez également utiliser des contrats unidirectionnels lors de la création d'un contrat duplex (bidirectionnel), qui autorise des clients et des serveurs à communiquer l'un l'autre indépendamment, afin qu'ils puissent initialiser des appels. Notamment, cela peut permettre au serveur d'effectuer des appels unidirectionnels au client, que le client peut traiter en tant qu'événements. Pour plus d'informations à propos de la spécification de méthodes unidirectionnelles, consultez la propriété IsOneWay et la classe OperationContractAttribute.

Pour plus d’informations sur la création d’une application cliente pour un contrat duplex, consultez Guide pratique : accéder aux services ayant des contrats unidirectionnels et demande-réponse. Pour obtenir un exemple fonctionnel, consultez l’exemple Unidirectionnel.

Pour créer un contrat unidirectionnel

  1. Créez le contrat de service en appliquant la classe ServiceContractAttribute à l'interface qui définit les méthodes que le service doit implémenter.

  2. Indiquez les méthodes qu'un client peut appeler dans l'interface en appliquant la classe OperationContractAttribute.

  3. Désignez des opérations qui ne doivent avoir aucune sortie (aucune valeur de retour et aucun paramètre ref ou de sortie) en tant qu'unidirectionnelles en affectant à la propriété IsOneWay la valeur true. Notez que les opérations qui retiennent la classe OperationContractAttribute satisfont un contrat de demande-réponse par défaut parce que la propriété IsOneWay est par défaut false. Vous devez donc spécifier explicitement la valeur true pour la propriété d'attribut si vous souhaitez un contrat unidirectionnel pour la méthode.

Exemple

L'exemple de code suivant définit un contrat pour un service qui inclut plusieurs méthodes unidirectionnelles. Toutes les méthodes ont des contrats unidirectionnels sauf Equals, qui a comme valeur par défaut la demande-réponse et retourne un résultat.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples", SessionMode=SessionMode.Required)]
public interface ICalculatorSession
{
    [OperationContract(IsOneWay=true)]
    void Clear();
    [OperationContract(IsOneWay = true)]
    void AddTo(double n);
    [OperationContract(IsOneWay = true)]
    void SubtractFrom(double n);
    [OperationContract(IsOneWay = true)]
    void MultiplyBy(double n);
    [OperationContract(IsOneWay = true)]
    void DivideBy(double n);
    [OperationContract]
    double Equals();
}
<ServiceContract(Namespace:="http://Microsoft.ServiceModel.Samples", SessionMode:=SessionMode.Required)> _
Public Interface ICalculatorSession

    <OperationContract(IsOneWay:=True)> _
    Sub Clear()
    <OperationContract(IsOneWay:=True)> _
    Sub AddTo(ByVal n As Double)
    <OperationContract(IsOneWay:=True)> _
    Sub SubtractFrom(ByVal n As Double)
    <OperationContract(IsOneWay:=True)> _
    Sub MultiplyBy(ByVal n As Double)
    <OperationContract(IsOneWay:=True)> _
    Sub DivideBy(ByVal n As Double)
    <OperationContract()> _
    Function Equal() As Double
End Interface

Voir aussi