ServiceContractAttribute.CallbackContract Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Sözleşme çift yönlü bir sözleşme olduğunda geri çağırma sözleşmesinin türünü alır veya ayarlar.
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
Özellik Değeri
Type Geri çağırma sözleşmesini gösteren bir. Varsayılan değer: null
.
Örnekler
Aşağıdaki kod örneği, türündeki bir hizmetin IDuplexHello
türünde bir hizmet uygulayan bir karşılık gelene sahip olması gerektiğini belirten bir geri çağırma sözleşmesi belirten bir hizmeti IHelloCallbackContract
gösterir. Ayrıca, dağıtılmış, IHelloCallbackContract
olay odaklı bir istemciyi desteklemek için yanıt beklemeden hizmetin istemciyi çağırmasını sağlayan tek yönlü bir geri çağırma yöntemi uygular.
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
Açıklamalar
özelliğinde CallbackContract , iki yönlü (veya çift yönlü) ileti değişiminde gerekli karşıt sözleşmeyi temsil eden bir arabirim belirtin. Bu, istemci uygulamalarının sunucu tarafı hizmet uygulamasının istemci etkinliğinden bağımsız olarak gönderebileceği gelen işlem çağrılarını dinlemesini sağlar. Tek yönlü işlemleri olan geri çağırma sözleşmeleri, istemcinin işleyebileceği hizmet çağrılarını temsil edebilir.
Not
Geri ServiceContractAttribute çağırma sözleşmelerinde özniteliği yoksayılır. Geri çağırma nesnelerinin çalışma zamanı davranışını yapılandırmak için kullanın System.ServiceModel.CallbackBehaviorAttribute.