【问题标题】:WCF architecture help needed需要 WCF 架构帮助
【发布时间】:2013-02-24 13:07:33
【问题描述】:

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

这种架构看起来是否适合目的?

注意事项:

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

我们还考虑了什么?

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

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

【问题讨论】:

  • 我不同意您在“我们所考虑的内容”中的第二点。上周我使用 TCP 而不是 HTTP 测试了 WCF 双工,它完美地工作而无需打开server->client 通道。我实际上通过互联网、防火墙和 NAT 进行了测试并使其正常工作。
  • 只是用几句话确认:您想从客户端->服务器应用程序发送数据以上传数据。您还希望服务器也定期要求客户端上传数据吗?
  • @user1438082:创建带双工的客户端并在服务上下文下运行它应该没问题。在启动时,它可以建立允许通过/接收的连接。您还可以放置故障保险(连接断开/没有互联网等),然后将客户端 UI 绑定到本地服务。这也使您免于创建各种查找表,因为一旦订阅,服务器就已经知道要与之通信的潜在客户。
  • 我会使用双工通信msdn.microsoft.com/en-us/library/ms731184.aspx 而不是双方的客户端/服务器...您是否尝试使用注册回调/发布订阅模式而不是在系统代理上运行的服务器? msdn.microsoft.com/en-us/magazine/cc163537.aspx
  • 整个设置是否在单独的网络上运行,终端服务器是唯一的入口点?应用服务器向代理PC询问什么样的信息?

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


【解决方案1】:

好吧,我很抱歉,但我基本上不同意你的架构。

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

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

因此,如果您的目标是部署大约 200-300 台 PC,那么您的架构将成立,但如果您的目标是部署数千台 PC,它将无法成立。

【讨论】:

  • 在内网环境中大约有 300 台电脑。因此我认为你同意我们的架构?
  • 是的,在 Intranet 环境中 300 台电脑可以正常使用。
  • 对于需要扩展到 5000 台电脑的系统,您有什么建议?
  • 我建议使用 IOCP(输入输出完成端口)和应用程序级协议的 tcp/ip 服务器。不是 http 请求-响应,意味着不是基于 WCF 的服务器。
猜你喜欢
  • 2019-12-16
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
  • 2011-09-21
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多