我有一个项目以我的方式进行:具有用C语言编写的系统的设备,以及用于管理目的的Windows应用程序(发送配置,从设备检索记录的数据,监视设备的状态)。我可以灵活地选择我将使用的技术。现在的要求非常模糊,所以它应该是灵活的。主要通信协议是TCP。例如,当正常通信因某些网络故障而失败时,我们可能会使用COM端口作为维护选项。
我正在考虑将WCF服务用作应用程序和设备之间的“代理”。 App将数据发送到服务,服务处理数据并将TCP数据包发送到设备(数据包中的数据可由设备理解),设备将TCP数据包发送回WCF服务,WCF服务又将处理后的消息发送给应用程序。这种WCF的使用是否有意义?
可以从webapp轻松访问WCF,因此除了普通的Windows应用程序外,我们可以使我们的系统更加性感,但它是否值得?您如何看待,请分享您的想法:)
答案 0 :(得分:1)
据我了解,您正在考虑具有三个元素的系统架构。一个Windows应用程序,一组设备,然后是一个额外的服务,它将充当代理或中间人,在两者之间进行代理通信。
第一个问题:管理应用程序无法连接到设备本身有什么原因吗?用于管理的Windows应用程序应该能够打开设备的套接字,就像其他应用程序一样容易。你为什么不呢?我想另一种问这个问题的方法是,将代理(第三个元素)引入架构的理由是什么?你想引入一些异步吗?这是一个规模问题 - 也许设备的数量太大,你想要一个单独的应用程序来管理所有这些设备的通信,而不是直接从应用程序与UI连接。这是网络拓扑的问题吗?在考虑在代理中使用什么技术之前,首先要确定哪些内容迫使您在架构中包含代理。
假设第三个元素有充分的理由,那么您可以考虑WCF是否适合该元素的通信技术。当然,在两个基于Windows的应用程序之间,WCF将运行良好。如果它们在同一台机器上,您可以使用命名管道绑定,并为本地通信获得非常好的性能。如果这两个应用程序分布在不同的Windows计算机上,则可以使用TCP再次在网络通信上获得非常好的性能。
您还需要考虑代理与设备之间的连接。 WCF可以与非WCF系统互连。您必须在WCF端编写一些扩展,以与现有系统互连。但这是可能的,我会说WCF的近乎主流的用例。见this Q for more on that topic。