Mise à jour : novembre 2007
Obtient ou définit le type de contrat de rappel lorsque le contrat est un contrat duplex.
Espace de noms :
System.ServiceModel
Assembly :
System.ServiceModel (dans System.ServiceModel.dll)
Visual Basic (Déclaration)
Public Property CallbackContract As Type
Visual Basic (Utilisation)
Dim instance As ServiceContractAttribute
Dim value As Type
value = instance.CallbackContract
instance.CallbackContract = value
public Type CallbackContract { get; set; }
public:
property Type^ CallbackContract {
Type^ get ();
void set (Type^ value);
}
/** @property */
public Type get_CallbackContract()
/** @property */
public void set_CallbackContract(Type value)
public function get CallbackContract () : Type
public function set CallbackContract (value : Type)
Valeur de propriété
Type :
System..::.TypeType qui indique le contrat de rappel. La valeur par défaut est nullNothingnullptrune référence null (Nothing en Visual Basic).
Spécifiez une interface dans la propriété CallbackContract qui représente le contrat opposé requis dans un échange de messages bidirectionnel (ou duplex). Cela permet aux applications clientes d'écouter les appels d'opération entrants que l'application de service côté serveur peut envoyer indépendamment des activités clientes. Les contrats de rappel qui ont des opérations unidirectionnelles représentent les appels du service que le client peut gérer.
L'exemple de code suivant présente un service qui spécifie un contrat de rappel. Il indique qu'un service de type IDuplexHello doit avoir un correspondant qui implémente un service de type IHelloCallbackContract. De plus, IHelloCallbackContract implémente une méthode de rappel unidirectionnelle, ce qui permet au service d'appeler le client sans attendre une réponse pour prendre en charge un client distribué et piloté par des événements.
using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.Threading;
namespace Microsoft.WCF.Documentation
{
[ServiceContract(
Name = "SampleDuplexHello",
Namespace = "http://microsoft.wcf.documentation",
CallbackContract = typeof(IHelloCallbackContract),
SessionMode = SessionMode.Required
)]
public interface IDuplexHello
{
[OperationContract(IsOneWay = true)]
void Hello(string greeting);
}
public interface IHelloCallbackContract
{
[OperationContract(IsOneWay = true)]
void Reply(string responseToGreeting);
}
public class DuplexHello : IDuplexHello
{
public DuplexHello()
{
Console.WriteLine("Service object created: " + this.GetHashCode().ToString());
}
~DuplexHello()
{
Console.WriteLine("Service object destroyed: " + this.GetHashCode().ToString());
}
public void Hello(string greeting)
{
Console.WriteLine("Caller sent: " + greeting);
Console.WriteLine("Session ID: " + OperationContext.Current.SessionId);
Console.WriteLine("Waiting two seconds before returning call.");
// Put a slight delay to demonstrate asynchronous behavior on client.
Thread.Sleep(2000);
IHelloCallbackContract callerProxy
= OperationContext.Current.GetCallbackChannel<IHelloCallbackContract>();
string response = "Service object " + this.GetHashCode().ToString() + " received: " + greeting;
Console.WriteLine("Sending back: " + response);
callerProxy.Reply(response);
}
}
}
Windows Vista, Windows XP SP2, Windows Server 2003
Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
.NET Framework
Pris en charge dans : 3.5, 3.0
Référence