2016-04-05 23 views
1

Bir wcf servis ana bilgisayarım (konsol uygulaması) ve netTCPBinding üzerinden istemci var. İhtiyacım olan ana makinem aşağı iniyor ve sık sık geliyor. İstemci ana makineyi ele almalı ve her 1 dakikada bir ana bilgisayar kontrolünü kontrol etmeli. Birçok çözümle karşılaştığımı anlamaya ve uygulamaya çalışıyorum. önermek lütfen değilse sunucuda 1. WS-Discovery 2. Isalive 3. Ping yöntemi vb 4. yoklamaWCF İstemci WCF Ana Bilgisayarının çalışıp çalışmadığını kontrol ediyor mu?

private static bool IsConnectionUp() 
     { 
      _logClient = new LogClient(); 

       try 
       { 
        _logClient.Open(); 
        return true; 
       } 
       catch (FaultException exception) 
       { 
        if (_logClient.State == CommunicationState.Faulted) 
        { 

         _logClient = new LogClient(); 
        } 
        return false; 
       } 


     } 

    Main() 
    { 
    while (IsConnectionUp()!=true) 
       { 
        IsConnectionUp(); 
       } 
    } 

kod iyi bir şekilde yukarıdaki parça yapmak.

İstemciden ana bilgisayar için sürekli olarak anket yapmak istiyorum. Bu, kabul edebileceğim en iyi yöntemdir. Teşekkürler

cevap

0

Mevcut kod, tehlikeli olan bağlantıları sızdırıyor. WCF atma şablonunu uygulamanız gerekir (WCF ekibi tarafından bir API tasarım hatası nedeniyle normal model değildir).

Bağlantı açmak, mutlaka kullanılabilirliği sınamamaktadır. Açarken bağlamanızın ne olduğunu bilmiyorum. HTTP tabanlı bağlamanın hiç bir şey yapmadığından şüpheleniyorum. Altta yatan HttpWebRequest altyapısının bir istekte bulunmadan bağlantı açmasını istemek mümkün değil.

Bunu yapmanın en iyi yolu, bir test yöntemi uygulamaktır (ör. void Ping() { }). Kısa bir zaman aşımı kullanın ve kaynakları atın.

Korumasız döngü de tehlikelidir. Bu temel olarak hizmet reddi saldırısıdır.

İlgili konular