2009-11-03 25 views
5

Bir hizmet sunucusu için tüm bağlı istemciler için bir tür yer tanımlayıcıyı nasıl numaralandırabilirim? Uzun süreli hesaplamalar için dubleks bağlantı kullanıyorum. Servis ana bilgisayarı bir singleton'dur.Bir wcf hizmeti için bağlı istemcilerin bir listesini alma

Arayan istemcinin ipini (.net 3.5) bulabilirim ancak tüm bağlı istemcilerin ipini nasıl alacağından emin değilim.

cevap

1

Bunun için yerleşik bir şey olduğunu sanmıyorum, ancak çağrıyı hizmet impl adresine gönderilmeden ve istemci IP'sine yapışmadan önce RemoteClientEnpointMessageProperty'yi denetleyen bir izleme IServiceBehavior + IDispatchMessageInspector oluşturmak oldukça kolay olurdu. Paylaşılan listeye ekleyin ve çağrı/oturum bittiğinde onu kaldırın.

2

Varsayılan olarak, WCF, "çağrı başına" servislerinin kullanımını, örn. müşteriniz arar, istek işlenir ve sonra istemci hemen kesilir.

WCF kendini çok iyi ödünç vermez ve uzun süredir çalışan bağlantılar için tasarlanmamıştır - bu nedenle (şu anda bağlı olan kullanıcıları sıraya sokamazsınız), çünkü (ya da yalnızca bir kısmı için) bir saniye).

WCF, oturum açtığınız ve uzun bir süredir oturum açtığınız bir Windows etki alanı sunucusu gibi değil.

+0

Üzgünüm Postam açık değildi ama varsayılan hizmet davranışını kullanmıyorum. [ServiceBehavior (InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)] InstanceContexMode.Single ile varsayılan "çağrı başına" modundan daha uzun kullanım ömrüne sahip bir örnek vardır. Uygulandığı şekliyle hizmet, hazır olduklarında sonuçları göndermek için şu anda bir geri arama sözleşmesi kullanmaktadır. İstemci, sunucuyla bağlantıyı önbelleğe alır, böylece birden çok istek için kullanılabilirler. Bağlantılar uzun sürüyor. – Sindhudweep

+0

Tamam - Bunun iyi bir fikir olduğunu sanmıyorum, ancak kurulumunuzun ayrıntılarını bilmiyorum; Ne yazık ki, WCF 3.5'de yönetim ve gözetim için çok fazla destek yok - bu, "Dublin" projesinin bir parçası olacak - IIS4/WAS için bir yönetim eklentisi, .NET 4'ten sonra bir süre yollanacak şekilde planlandı (Mart 2010). –

İlgili konular