初学者Windows服务/ WCF和前端GUI实现问题

时间:2011-03-12 00:16:38

标签: wcf windows-services wcfserviceclient

我正在试图找出接近这个设计的最佳方式......以下是我正在尝试做的一些背景:

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

我读过有关Windows Communication Foundation(WCF)的内容,这似乎是一种很好的方法。由于Windows服务会静静地轮询I / O,并且连接到WCF接口的任何客户端都可以在GUI中显示此数据。

我是否认为这一切都错了?这看起来像是做事的好方法吗?我的前端客户端如何从WCF服务中获取数据?

提前谢谢。

1 个答案:

答案 0 :(得分:4)

这正是我完成它的方式 - 在Windows服务中托管WCF服务。 Windows服务就是这个过程; WCF服务是完成工作的地方。

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

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

如果您不熟悉WCF,请查看此SO问题。

Good and easy books/tutorials to learn WCF latest stuff

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

What You Need To Know About One-Way Calls, Callbacks, And Events

他的发布 - 订阅框架可以在他的网站IDesign.net免费获得,以及其他一些有效的WCF示例。

希望这有帮助。