ServiceContractAttribute.CallbackContract Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt den Typ des Rückrufvertrags an oder legt ihn fest, wenn der Vertrag ein Duplexvertrag ist.
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
Eigenschaftswert
Ein Type Wert, der den Rückruf-Vertrag angibt. Der Standardwert lautet null.
Beispiele
Das folgende Codebeispiel zeigt einen Dienst, der einen Rückrufvertrag angibt, der angibt, dass ein Dienst vom Typ IDuplexHello über einen Korrespondenten verfügen muss, der einen Dienst vom Typ implementiert IHelloCallbackContract. Darüber hinaus IHelloCallbackContract implementiert eine unidirektionale Rückrufmethode, sodass der Dienst den Client aufrufen kann, ohne auf eine Antwort zu warten, um einen verteilten ereignisgesteuerten Client zu unterstützen.
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);
}
}
}
Imports System.Collections.Generic
Imports System.ServiceModel
Imports System.Threading
Namespace Microsoft.WCF.Documentation
<ServiceContract(Name:="SampleDuplexHello", Namespace:="http://microsoft.wcf.documentation", _
CallbackContract:=GetType(IHelloCallbackContract), SessionMode:=SessionMode.Required)> _
Public Interface IDuplexHello
<OperationContract(IsOneWay:=True)> _
Sub Hello(ByVal greeting As String)
End Interface
Public Interface IHelloCallbackContract
<OperationContract(IsOneWay := True)> _
Sub Reply(ByVal responseToGreeting As String)
End Interface
Public Class DuplexHello
Implements IDuplexHello
Public Sub New()
Console.WriteLine("Service object created: " & Me.GetHashCode().ToString())
End Sub
Protected Overrides Sub Finalize()
Console.WriteLine("Service object destroyed: " & Me.GetHashCode().ToString())
End Sub
Public Sub Hello(ByVal greeting As String) Implements IDuplexHello.Hello
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)
Dim callerProxy = OperationContext.Current.GetCallbackChannel(Of IHelloCallbackContract)()
Dim response = "Service object " & Me.GetHashCode().ToString() & " received: " & greeting
Console.WriteLine("Sending back: " & response)
callerProxy.Reply(response)
End Sub
End Class
End Namespace
Hinweise
Geben Sie eine Schnittstelle in der CallbackContract Eigenschaft an, die den erforderlichen entgegengesetzten Vertrag in einem Bidirektionale (oder Duplex)-Nachrichtenaustausch darstellt. Dadurch können Clientanwendungen eingehende Vorgangsaufrufe überwachen, die von der serverseitigen Dienstanwendung unabhängig von der Clientaktivität gesendet werden können. Rückrufverträge mit unidirektionale Vorgängen stellen Aufrufe vom Dienst dar, den der Client verarbeiten kann.
Hinweis
Das ServiceContractAttribute Attribut wird für Rückrufverträge ignoriert. Verwenden Sie zum Konfigurieren des Laufzeitverhaltens von Rückrufobjekten die System.ServiceModel.CallbackBehaviorAttribute.