c# - 需要 WCF 架构帮助

标签 c# wcf architecture wcf-binding wcf-security

我们正计划实现我们的新软件应用程序,如下所示。

这个架构看起来是否符合目的?

注意事项:

  • 有很多个人电脑
  • PC 有一个 WCF 客户端,因为它需要将数据上传到 定期数据库。
  • PC 有一个服务器,因为终端服务器上的最终用户需要 能够向电脑询问信息
  • 终端服务器是用户的 GUI,因此他们可以远程连接 到特定的 PC 以询问该 PC 的信息
  • 我们在下面使用 basicHttpBinding

我们还考虑了什么?

  • 我们已经尝试过 WCF NetPeerTcpBinding(即 P2P),但它不支持 请求-回复操作。

  • 我们已经尝试过 WCF Duplex,但是根据上面要注意的事项部分中列出的要求,无论如何我们最终都会在两端使用客户端和服务器。

enter image description here

最佳答案

抱歉,我基本上不同意您的架构。

  • WCF 不是为请求-响应通信以外的任何用途而设计或适用的。 它的全双工能力不会使您的服务器端向特定客户端发出通信,除非该客户端已经发出与服务器的连接。 这意味着,为了与您的所有客户端实现享有声望的在线全双工通信 - 您的所有客户端都必须保持到服务器的开放端口。

  • 为了实现在线全双工,每台 PC 拥有双客户端和服务器是向前迈出的一步,因为它将解决每个客户端保持端口打开的问题,但它在安全性方面存在缺点,因为这意味着特定 PC 已打开以接收多个连接请求。如果您不小心,致命的重入可能会发生另一个问题。所以,基本上你会保存“端口”以换取架构 解决方案的可维护性和适用性。

因此,如果您的目标是部署大约 200-300 台 PC,您的架构将适用,但如果您的目标是部署数千台 PC 的更大规模,则它不会适用。

关于c# - 需要 WCF 架构帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15303303/

相关文章:

c# - 如何检测图像中的不规则边界?

c# - 以编程方式控制 xml 元素的顺序

architecture - 服务层的服务可以互相通信吗?

c - 在 c 中的 2 个不同软件模块之间共享变量

c# - 我将如何反转这个看起来简单的算法?

C# WPF 矩形填充绑定(bind)

c# - 是否可以使 GattCharacteristic ValueChange 事件发生在多个设备上?

javascript - 向 JavaScript 发送通知

c# - WCF 和 Delphi - 我应该使用 bytes[] 还是字符串?

c# - 具有多个实体的存储库创建 DTO