2

我正在尝试找出处理此设计的最佳方法......这是我正在尝试做的一些背景:

我有一个简单的数字 I/O 控制器,可以通过以太网将数据发送到我的计算机。我有一个程序可以通过以太网接收这些数据。我想要一个单独的前端应用程序,在 GUI 中呈现这些数据。我试图找出连接通过以太网获取 I/O 数据的程序以及将其显示为前端的程序的最佳方式。每当计算机启动并在后台不断轮询 I/O 时,该接口都应该运行。

我已经阅读了有关 Windows Communication Foundation (WCF) 的信息,这似乎是一个不错的方法。由于 Windows 服务会悄悄地轮询 I/O,并且任何连接到 WCF 接口的客户端都可以在 GUI 中呈现这些数据。

我对这一切都错了吗?这似乎是做事的好方法吗?我的前端客户端将如何从 WCF 服务中获取数据?

先感谢您。

4

1 回答 1

4

这正是我所做的方式 - 在 Windows 服务中托管 WCF 服务。Windows服务是进程;WCF 服务是完成工作的地方。

就我而言,我的基于 WCF 的 CollectionService 大部分时间都处于待机状态。我使用 WCF 来启动和停止收集器,因为 WCF 编程模型使这很容易。但是,为了将数据从收集器获取到 UI,我使用 TCP 套接字,而不是 WCF。我知道 WCF 具有流模式,但是 (1) 我从未使用过它,并且 (2) 我相信以这种方式使用 WCF 会产生一些开销。套接字对我来说只是一个舒适的后备,但我认为 WCF 可以工作。

如果您刚刚开始,您可以参考这两个答案来使用 C# 启动和运行您的 Windows 服务。从那里,您只需要分别在 Windows 服务的和回调中创建ServiceHost和关闭它。OnStart()OnStop()

如果您是 WCF 新手,请查看这个 SO question。

学习 WCF 最新内容的好书/教程

还有一件事。在您的工作过程中,您可能会发现您希望 WCF 服务在某些事情发生时向您的 UI 提供事件。例如,您可以提供一个事件,定期通知 UI 已接收的字节数。为此,我强烈推荐 WCF 大神之一 Juval Lowy 的这篇文章。

关于单向调用、回调和事件您需要了解的内容

他的 Publish-Subscribe Framework 可以在他的网站IDesign.net上免费获得,以及其他几个工作的 WCF 示例。

希望这可以帮助。

于 2011-03-12T05:12:22.633 回答