2012-11-18 12 views
12

2008'de .NET 3.5'de (şimdi .NET 4.0 altında yeniden derlenmiş) bulunan sağlam bir WCF istemcimiz var, net WCF hizmetimiz net.tcp bağlaması üzerinden konuşuyor. Sağlam istemcimiz, şu anda hizmete senkronize çağrı yaptığımız bir hizmet proxy'si oluşturmak için ChannelFactory <IOurServiceInterface>() işlevini kullanır. Her çağrıdan sonuç alıyoruz; Tek yönlü aramalarımız yok.Görev Async Kalıbı ve WCF's ChannelFactory <TChannel> nasıl uygulanır?

.NET 4.5/C# 5'e geçiş yapıyoruz ve istemciyi async/await/TAP kullanarak eşzamansız hale getirmek istiyoruz. Bunu, temiz kod ve iyi çalışma süresi performansı ile sonuçlanacak şekilde en iyi nasıl yapabilirsiniz?

(Bu konuyla ilgili MS belgelerine baktım, ancak her zaman svcutil çalıştırmayı konuşuyor. Svcutil kullanmıyoruz, doğrudan ChannelFactory kullanıyoruz. Ayrıca: Bir fabrikanın altında bir eşzamansız olarak arama yapmak için MS belgeleri. NET 4.5 değiştirilmemiştir .NET 3.0 gündür. ChannelFactory yeni asenkroniye benimsemiş değil görünüyor.)

cevap

6

Sen varolan APM sarabilirsiniz (TAP hazır Task s içine Begin*/End*) bitiş noktaları TaskFactory.FromAsync kullanarak.

Async WCF Today and Tomorrow post sayfamı, VSAP öncesi VS2012 svcutil ile nasıl kullanacağınızı gösterir.

+0

Teşekkürler Stephen. Cevabınıza göre bilgi aradıktan sonra ve yazıyı okuduktan sonra, bunun en iyi şekilde yapılabileceğini düşünüyorum. Bu gün ve kanalda ChannelFactory'nin hala APM modelini kullanmanızı beklediğine şaşırdım. –

3

this'u gördünüz mü? Task<TResponse> dönen [OperationContract] bir örnek yaptım.

+0

Teşekkürler; Bunu kontrol edeceğim. –

İlgili konular