Nasıl yapılır: Tek Yönlü Sözleşme Oluşturma
Bu konu başlığında, tek yönlü sözleşme kullanan yöntemler oluşturmaya yönelik temel adımlar gösterilmektedir. Bu tür yöntemler bir istemciden Windows Communication Foundation (WCF) hizmetinde işlemleri çağırır, ancak yanıt beklemez. Bu tür bir sözleşme, örneğin birçok aboneye bildirim yayımlamak için kullanılabilir. İstemcilerin ve sunucuların birbirleriyle bağımsız olarak iletişim kurmasına olanak tanıyan çift yönlü (iki yönlü) bir sözleşme oluştururken tek yönlü sözleşmeler de kullanabilirsiniz. Bu, özellikle sunucunun istemciye olay olarak davranabileceği tek yönlü çağrılar yapmasına izin verebilir. Tek yönlü yöntemleri belirtme hakkında ayrıntılı bilgi için özelliğine IsOneWay ve sınıfına OperationContractAttribute bakın.
Çift yönlü sözleşme için istemci uygulaması oluşturma hakkında daha fazla bilgi için bkz. Nasıl yapılır: Tek Yönlü ve İstek-Yanıt Sözleşmeleriyle Access Hizmetleri. Çalışan bir örnek için bkz . Tek Yönlü örnek.
Tek yönlü sözleşme oluşturmak için
sınıfını hizmetin uygulayacağı yöntemleri tanımlayan arabirime uygulayarak ServiceContractAttribute hizmet sözleşmesini oluşturun.
Bir istemcinin arabiriminde sınıfını uygulayarak OperationContractAttribute hangi yöntemleri çağırabileceğini belirtin.
Çıkışı olmayan (dönüş değeri olmayan ve çıkış veya başvuru parametresi olmayan) işlemleri, özelliğini
true
olarak ayarlayarak IsOneWay tek yönlü olarak belirleyin. özelliğifalse
varsayılan olarak olduğundan sınıfını taşıyan işlemlerin OperationContractAttribute varsayılan olarak bir istek-yanıt sözleşmesini IsOneWay karşıladığını unutmayın. Bu nedenle, yöntemi için tek yönlü bir sözleşme istiyorsanız, öznitelik özelliğinintrue
değerini açıkça belirtmeniz gerekir.
Örnek
Aşağıdaki kod örneği, birkaç tek yönlü yöntem içeren bir hizmet sözleşmesi tanımlar. Tüm yöntemlerin tek yönlü sözleşmeleri vardır. Bu sözleşmeler, Equals
varsayılan olarak istek-yanıt olarak adlandırılır ve bir sonuç döndürür.
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples", SessionMode=SessionMode.Required)]
public interface ICalculatorSession
{
[OperationContract(IsOneWay=true)]
void Clear();
[OperationContract(IsOneWay = true)]
void AddTo(double n);
[OperationContract(IsOneWay = true)]
void SubtractFrom(double n);
[OperationContract(IsOneWay = true)]
void MultiplyBy(double n);
[OperationContract(IsOneWay = true)]
void DivideBy(double n);
[OperationContract]
double Equals();
}
<ServiceContract(Namespace:="http://Microsoft.ServiceModel.Samples", SessionMode:=SessionMode.Required)> _
Public Interface ICalculatorSession
<OperationContract(IsOneWay:=True)> _
Sub Clear()
<OperationContract(IsOneWay:=True)> _
Sub AddTo(ByVal n As Double)
<OperationContract(IsOneWay:=True)> _
Sub SubtractFrom(ByVal n As Double)
<OperationContract(IsOneWay:=True)> _
Sub MultiplyBy(ByVal n As Double)
<OperationContract(IsOneWay:=True)> _
Sub DivideBy(ByVal n As Double)
<OperationContract()> _
Function Equal() As Double
End Interface