2016-04-05 68 views
1

我有一个wcf服务主机(控制台应用程序)和客户端通过netTCPBinding。 在我的要求中,主持人经常出现并且频繁出现。我的客户端应该处理主机并检查主机是否每隔1分钟运行一次。当我尝试理解并实施时,我遇到了很多解决方案。 1. WS-发现 2.服务器的IsAlive 3平法等 4.投票WCF客户端检查WCF主机是否启动并运行?

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(); 
       } 
    } 

上面这段代码的好办法吗,如果没有,请建议。

我想继续从客户端进行轮询,这是我可以采用的最佳方法。 谢谢

回答

0

现有的代码泄漏危险的连接。您需要实现WCF配置模式(由于WCF团队发生API设计错误,这不是正常模式)。

打开连接并不一定会测试可用性。我不知道你的装订在打开时会做什么。我怀疑基于HTTP的绑定什么也不做。我不认为有可能要求底层的HttpWebRequest基础设施在不发出请求的情况下打开连接。

做到这一点的最好方法是实施测试方法(例如void Ping() { })。使用短暂的超时并处理资源。

未节流环路也很危险。这基本上是拒绝服务攻击。