我们正计划实现我们的新软件应用程序,如下所示。
这个架构看起来是否符合目的?
注意事项:
- 有很多个人电脑
- PC 有一个 WCF 客户端,因为它需要将数据上传到 定期数据库。
- PC 有一个服务器,因为终端服务器上的最终用户需要 能够向电脑询问信息
- 终端服务器是用户的 GUI,因此他们可以远程连接 到特定的 PC 以询问该 PC 的信息
- 我们在下面使用 basicHttpBinding
我们还考虑了什么?
我们已经尝试过 WCF NetPeerTcpBinding(即 P2P),但它不支持 请求-回复操作。
我们已经尝试过 WCF Duplex,但是根据上面要注意的事项部分中列出的要求,无论如何我们最终都会在两端使用客户端和服务器。
最佳答案
抱歉,我基本上不同意您的架构。
WCF 不是为请求-响应通信以外的任何用途而设计或适用的。 它的全双工能力不会使您的服务器端向特定客户端发出通信,除非该客户端已经发出与服务器的连接。 这意味着,为了与您的所有客户端实现享有声望的在线全双工通信 - 您的所有客户端都必须保持到服务器的开放端口。
为了实现在线全双工,每台 PC 拥有双客户端和服务器是向前迈出的一步,因为它将解决每个客户端保持端口打开的问题,但它在安全性方面存在缺点,因为这意味着特定 PC 已打开以接收多个连接请求。如果您不小心,致命的重入可能会发生另一个问题。所以,基本上你会保存“端口”以换取架构 解决方案的可维护性和适用性。
因此,如果您的目标是部署大约 200-300 台 PC,您的架构将适用,但如果您的目标是部署数千台 PC 的更大规模,则它不会适用。
关于c# - 需要 WCF 架构帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15303303/