代码之家  ›  专栏  ›  技术社区  ›  Pablo Retyk

如何检查net.tcp WCF服务的可用性

  •  15
  • Pablo Retyk  · 技术社区  · 17 年前

    我的WCF服务器需要定期上下运行,客户机有时会使用服务器,但如果服务器停机,客户机就忽略它。 所以每次我需要使用服务器服务时,我都会检查连接状态,如果它没有打开,我就会打开它。 问题是,如果我试图在服务器关闭时打开,会出现影响性能的延迟。 我的问题是,有没有办法做一些 myClient.CanOpen() ? 因此,我知道是否有任何点可以打开与服务器的连接。

    5 回复  |  直到 17 年前
        1
  •  24
  •   DanielV    10 年前

    有一个WS-Discovery的实现,它允许您监听服务的启动/关闭公告。这也是一种非常方便的服务地址解析形式,因为它利用UDP多播消息查找服务,而不是在客户端配置一个设置地址。 WS-Discovery for WCF

    还有一个由Microsoft员工执行的实现: WS-Discovery Sample Implementation

    Using WS-Discovery in WCF 4.0

    另一件事,你可能会考虑,特别是如果你的消息在很大程度上是单向的,是一个协议,它工作在本地断开,比如MSMQ。我不知道您的应用程序设计是什么样子的,但是MSMQ允许客户端发送消息,而不管服务的状态如何,并且服务将在其恢复时收到消息。这样,您的客户就不必在通信之前太多地试图确认服务已启动。。。它只会开火然后忘记。

    希望这有帮助。

        2
  •  3
  •   Tormod    17 年前

    如果在具有用户界面的应用程序中执行同步调用时希望服务器超时,则应该在另一个线程中执行。我怀疑性能下降是由于异常开销造成的。 在CPU负载、gui可用性或挂钟时间方面,您的性能会受到影响吗?

    您可以进行调查,看看是否可以在TCP上创建自定义绑定,但超时速度更快。

    我假设您知道“IsOneWay=true”比请求更快->响应,因为您无论如何都不会期望得到响应,但是您不会得到确认或返回值。

        3
  •  1
  •   Jon    17 年前

    如果您在本地网络中,则可能会广播一个信号,表示新服务器已启动。客户端需要监听广播信号并做出相应的响应。

        4
  •  1
  •   Dave_B    12 年前

    这是我正在使用的,它就像一个符咒。顺便说一句,ServiceController类位于名称空间“System.ServiceProcess”中。

    try
    {
        ServiceController sc = new ServiceController("Service Name", "Computer's IP Address");
        Console.WriteLine("The service status is currently set to {0}",
            sc.Status.ToString());
    
        if ((sc.Status.Equals(ServiceControllerStatus.Stopped)) ||
            (sc.Status.Equals(ServiceControllerStatus.StopPending)))
        {
            Console.WriteLine("Service is Stopped, Ending the application...");
            Console.Read();
            EndApplication();
        }
        else
        {
            Console.WriteLine("Service is Started...");
        }
    }
    catch (Exception)
    {
        Console.WriteLine("Error Occurred trying to access the Server service...");
        Console.Read();
        EndApplication();
    }
    
        5
  •  1
  •   DanielV    10 年前

    有一个很好的博客帖子 WCF: Availability of the WCF services

    推荐文章