Taal

ServiceContractAttribute.CallbackContract Eigenschap

Definitie

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.

Van toepassing op