2011-11-01 16 views
8

Yani WCF4, WCF servisine istemci bağlantı havuzunu çağırıyor mu? Örneğin, istemci ve servis olarak ASP .NET uygulamasına sahibiz (ayrı makinelerde).WCF4 (.NET Framework 4) istemci bağlantı havuzunu destekliyor mu?

ServceClient client2 = new ServiceClient(); 
// Another one processing... 

Yani bağlantı havuzundan alınan bağlantıyı istemci2 olacaktır:

ServiceClient client = new ServiceClient(); 
// Here some work with service goes... 

biz kod anither parça çağırmak başka bir hizmeti var Sağlar ki: Sonra bir yerde kodunda biz böyle bir şey var?

+0

Aklınızda ne tür bir havuz var. Müşteri havuzlarını kendiniz oluşturmanız ve mantığı uygulamanız gerekir. Yani soru biraz kafa karıştırıcı. Bkz. Http://blogs.msdn.com/b/wenlong/archive/2007/11/14/a-sample-for-wcf-client-proxy-pooling.aspx. – sprinter252

+0

@ sprinter252 'WCf sürücüsü' tarafından uygulanan 'yerel havuz' anlamına gelir. Benzer şey ADO bağlantı havuzu. – kseen

+1

Öyleyse cevap, sanırım hizmetinizde tanımlanan [ObjectPooling (MinPoolSize = 0, MaxPoolSize = 5)] - özniteliğine bağlı olmalıdır. – sprinter252

cevap

2

Bunu neden yaptın? WCF, ConcurrencyMode.Multiple ile bir İstemci üzerinde birden fazla Talep kabul edebilir. Bu yüzden

WCF ServiceContract bu davranış için üç önemli Öznitelikler,

InstanceContextMode vardır .. İki Müşteriler başlatmak için çok mantıklı olmaz

  • PerSession (Oturum başına Bir örnek oluşturur Service)
  • Tek (Her İstemci için Tek Örnek oluşturur)
  • PerCall (Servis başına bir Örnek oluşturur)

ConcurrencyMode

  • Çoklu (Müşteri birden aynı anda arama yapabilirsiniz -> Multithreaded)
  • Tek (Müşteri bir arama yapmak ve diğer diğer çağrı bitmiş kadar beklemek zorunda olabilir)
  • Reentrant (İstemci aynı anda birden çok çağrı yapabilir, tam olarak bilmiyorum ama sanki bir çağrı başka bir wcf servisi kullanıyorsa sanki başka bir çağrı diğer wcf servis çağrısı tamamlanana kadar işlenebilir sanırım) zaman arasındaki kilidi serbest bırakır wcf hizmeti çağrısı yapılır ve tepki)

SessionMode

    ) bir Oturumu kullanabilirsiniz ancak gerekmez
  • İzin (Müşteri
  • NotAllowed (Müşteri bir Oturumu kullanamazsınız)
  • Gerekli ben İstemci Çünkü (InstanceContextMode.PerSession kullanmak

çoğu zaman (Müşteri Oturumu kullanmak zorunda) 1, İstemci 2), ConcurrencyMode.Multiple ve SessionMode.Required Hizmetlerinde bulunan Değişkenlere erişemez.

Ayrıca kaç Örnek başlatılabileceğini, kaç Eşzamanlı Arama yapılabileceğini ve kaç Oturumun kullanılabileceğini de belirtebilirsiniz.

+0

Cevabınızı biçimlendirmek için daha fazla zaman harcamalısınız. Az sayıda kötü formatlanmış cevaplar okuyun (ve bu nedenle daha az upvotes alacaksınız) – jgauffin

+0

Cevabınız bu soruyla nasıl bağlantılı? Oturum, örnek bağlam modu ve eşzamanlılık modu, aktarım bağlantısını yeniden kullanmakla alakası yoktur - bu nedenle bağlantı havuzu oluşturma nedenidir. Bağlantı havuzundan bahsettiğiniz her şeyde bile, performansı geliştirmek için başlık altında kullanılabilir. –

+0

Cevabım onun Örneği ile ilgili, çünkü iki müşteri açıyordu. Bu yüzden onun için yararlı olacağını düşündüm. – RaphaelH

İlgili konular