Comment : 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 le sujet suivant la création d'une application cliente pour un contrat duplex, consultez Comment : accéder aux services WCF avec des contrats unidirectionnels et demande-réponse. Pour obtenir un exemple fonctionnel, consultez One-Way.
Pour créer un contrat unidirectionnel
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.
Indiquez les méthodes qu'un client peut appeler dans l'interface en appliquant la classe OperationContractAttribute.
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)> _
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
[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();
}
Voir aussi
Tâches
Comment : définir un contrat de service Windows Communication Foundation
Session
Comment : créer un contrat duplex
Référence
ServiceContractAttribute
OperationContractAttribute