OperationContractAttribute.IsOneWay Ö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.
İşlemin yanıt iletisi döndürdüğünü belirten bir değer alır veya ayarlar.
public:
property bool IsOneWay { bool get(); void set(bool value); };
public bool IsOneWay { get; set; }
member this.IsOneWay : bool with get, set
Public Property IsOneWay As Boolean
Özellik Değeri
true
Bu yöntem bir istek iletisi alır ve yanıt iletisi döndürmezse; aksi takdirde , false
. Varsayılan değer: false
.
Örnekler
Aşağıdaki örnek, üç işlemi belirten bir hizmet sözleşmesi uygulayan bir hizmettir. Yöntemlerden ikisi, dönüş değeri ne olursa olsun çağırana temel alınan yanıt iletilerini döndüren iki yönlü işlemler uygular. Üçüncü yöntem, bir çağrı (temel alınan gelen ileti) alan ancak temel alınan yanıt iletisi döndüren bir işlem uygular.
[ServiceContract]
public class OneAndTwoWay
{
// The client waits until a response message appears.
[OperationContract]
public int MethodOne (int x, out int y)
{
y = 34;
return 0;
}
// The client waits until an empty response message appears.
[OperationContract]
public void MethodTwo (int x)
{
return;
}
// The client returns as soon as an outbound message
// is queued for dispatch to the service; no response
// message is generated or sent.
[OperationContract(IsOneWay=true)]
public void MethodThree (int x)
{
return;
}
}
Açıklamalar
IsOneWay bir işlemin yanıt iletisi döndürmediğini belirtmek için özelliğini kullanın. Bu tür bir işlem, özellikle iki yönlü iletişimde bildirimler veya olay stili iletişim için kullanışlıdır. Temel alınan yanıt iletisini beklemeden, tek yönlü işlemleri çağıranların istek iletisini işlemedeki bir hatayı algılamanın doğrudan bir yolu yoktur. (Güvenilir kanallar ve tek yönlü işlemler kullanan hizmet uygulamaları, kanal düzeyinde ileti teslim hatasını algılayabilir. Ayrıntılar için bkz . Güvenilir Oturumlara Genel Bakış.)
İstemci ve sunucunun birbirleriyle bağımsız olarak iletişim kurabildiği çift yönlü (veya iki yönlü) hizmet odaklı uygulamalarda, bir istemci kanalı, hizmetin istemciye istemciye olay olarak davranabileceği tek yönlü çağrılar gerçekleştirebileceğini belirtmek için yöntemini kullanarak özelliğini kullanabilir IsOneWay . Hizmet herhangi bir yanıt iletisi beklemediğinden dönüş çağrısı veya ileti oluşturulmaz.
IsOneWay Özellik olarak ayarlanırsa false
(varsayılan), döndüren void
yöntemler bile yanıt iletisiyle sonuçlanır. Bu durumda altyapı, çağırana yöntemin döndürdüğünü göstermek için boş bir ileti oluşturur ve gönderir. (Bu yaklaşımın kullanılması altyapının SOAP hatalarını istemciye geri göndermesini sağlar.) true
ayarıIsOneWay, yanıt iletisinin oluşturulmasını ve gönderilmesini iptal etmenin tek yoludur.
Tek yönlü yöntemler bir değer döndürmemeli veya veya out
parametrelerine sahip ref
olmamalıdır; aksi takdirde bir System.InvalidOperationException özel durum oluşturulur.
İşlemin tek yönlü bir işlem olduğunu belirtmek, yalnızca yanıt iletisi olmadığı anlamına gelir. Bağlantı kurulamıyorsa veya giden ileti çok büyükse veya hizmet gelen bilgileri yeterince hızlı okuyamıyorsa engellemek mümkündür. bir istemci engelleyici olmayan bir çağrı gerektiriyorsa, işlemleri oluşturun AsyncPattern . Daha fazla bilgi için bkz. Tek Yönlü Hizmetler ve WCF İstemcisi Kullanarak Hizmetlere Erişme.