代码之家  ›  专栏  ›  技术社区  ›  SqlRyan

用另一个应用程序的状态更新.net客户端应用程序的最佳方法

  •  1
  • SqlRyan  · 技术社区  · 16 年前

    我有一个一直运行的Windows服务,每15分钟执行一次操作。我还有一个客户端WinForms应用程序,它显示有关服务正在做什么的一些信息。我希望表单应用程序用最新的状态来更新自己,但是我不确定是否每秒轮询一次是一个很好的操作。

    • 当它启动时,我的Windows服务打开一个名为pipe的WCF来接收查询(从我的客户端窗体)

    这是最好的办法吗?如果我的服务在管道启动时打开管道,它是否始终保持打开状态(直到我关闭管道或服务停止)?除了轮询服务之外,也许还有一些方法可以让服务通知任何正在监视的应用程序某些事件,比如启动和停止处理?这样,我就可以少投票了,因为我大概已经知道一些重大事件了,而且只会对进展进行投票。

    我遗漏了什么?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Matt Davis    16 年前

    如果可能的话,我会避开投票。最好采用基于事件的机制,这样可以减少开销,并在必要时提供及时的状态更新。

    你已经领先了。对于基于.NET的应用程序来说,WCF无疑是一种发展方向。由于表单和服务在同一个系统上,因此命名管道绑定也是要使用的绑定。现在,您所需要的只是让您的服务发布事件,包括定期的状态更新,以便您的窗体在打开时可以侦听这些事件。

    我发现最简单的方法就是使用 Juval Lowy Publish-Subscribe Framework . 这个框架的精妙之处在于它将发布者和订阅者分离开来。发布者发布事件,而不管订阅者是否存在。如果存在订户,则转发事件供其使用。根据你的描述,我认为这对你很有用。