1

我有一个项目正在着手进行:具有自己用 C 语言编写的系统的设备,以及用于管理目的的 Windows 应用程序(发送配置、从设备检索记录的数据、监视设备的状态)。我可以灵活地选择我将使用的技术。现在的要求非常模糊,所以它应该是灵活的。主要的通信协议是 TCP。我们可能会使用 COM 端口作为维护选项,例如当由于某些网络故障导致正常通信失败时。

我正在考虑使用 WCF 服务作为应用程序和设备之间的“代理”。应用程序向服务发送数据,服务处理数据并将 TCP 数据包发送到设备(数据包中的数据可以被设备理解),设备做出反应,将 TCP 数据包发送回 WCF 服务,WCF 服务又将处理后的消息发送给应用程序。使用 WCF 是否有意义?

WCF 可以很容易地从 webapp 访问,所以除了普通的 windows 应用程序之外,我们可以让我们的系统更性感,但它值得吗?你怎么看,请分享你的想法:)

4

1 回答 1

1

据我了解,您正在考虑具有三个元素的系统架构。一个 Windows 应用程序、一组设备,以及一个充当代理或中间人的附加服务,在两者之间进行通信。

第一个问题:管理应用程序无法连接到设备本身是否有原因?用于管理的 Windows 应用程序应该能够像其他应用程序一样轻松地打开设备的套接字。你为什么不呢?我想问这个问题的另一种方式是,将代理(第三个元素)引入架构的理由是什么? 你想介绍一些异步吗?是规模问题吗?也许设备的数量如此之多,以至于您希望使用单独的应用程序来管理与所有设备的通信,而不是直接从具有 UI 的应用程序连接。是网络拓扑的问题吗?在考虑在代理中使用什么技术之前,首先要确定是什么促使您在架构中包含代理。

假设第三个元素有充分的理由,那么您可以考虑 WCF 是否适合该元素的通信技术的问题。当然,在 2 个基于 Windows 的应用程序之间,WCF 将运行良好。如果它们在同一台机器上,您可以使用命名管道绑定并获得非常好的本地通信性能。如果这两个应用程序分布在不同的 Windows 机器上,您可以使用 TCP 再次获得非常好的网络通信性能。

您还需要考虑代理和设备之间的连接。WCF 可以与非 WCF 系统互连。您必须在 WCF 端编写一些扩展,才能与现有系统互连。但这是可能的,我想说的是 WCF 的一个近乎主流的用例。有关该主题的更多信息,请参阅此 Q。

于 2009-06-03T12:32:14.493 回答