ServiceContractAttribute.CallbackContract Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee haalt u het type callbackcontract op of stelt u het in wanneer het contract een duplexcontract is.
public:
property Type ^ CallbackContract { Type ^ get(); void set(Type ^ value); };
public Type CallbackContract { get; set; }
member this.CallbackContract : Type with get, set
Public Property CallbackContract As Type
Waarde van eigenschap
Een Type die het callback-contract aangeeft. De standaardwaarde is null.
Voorbeelden
In het volgende codevoorbeeld ziet u een service die een callback-contract aangeeft, wat aangeeft dat een service van het type IDuplexHello een correspondent moet hebben waarmee een service van het type IHelloCallbackContractwordt geïmplementeerd. Daarnaast IHelloCallbackContract wordt een eenmalige callback-methode geïmplementeerd, waardoor de service de client kan aanroepen zonder te wachten op een antwoord om een gedistribueerde, gebeurtenisgestuurde client te ondersteunen.
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);
}
}
}
Opmerkingen
Geef een interface op in de CallbackContract eigenschap die het vereiste tegenovergestelde contract vertegenwoordigt in een tweerichtingsberichtuitwisseling (of duplex). Hierdoor kunnen clienttoepassingen luisteren naar binnenkomende bewerkingsaanroepen die de servicetoepassing aan de serverzijde onafhankelijk van clientactiviteit kan verzenden. Callback-contracten met eenrichtingsbewerkingen vertegenwoordigen aanroepen van de service die de client kan verwerken.
Note
Het ServiceContractAttribute kenmerk wordt genegeerd voor callback-contracten. Als u runtimegedrag van callback-objecten wilt configureren, gebruikt u het System.ServiceModel.CallbackBehaviorAttribute.