我需要允许多个客户端(winforms 应用程序)通过互联网(在远程位置)连接到服务器,并启动双工通信,有时会发送大量流量。
目前,我们正在使用带有 WCF 的 netTcpBinding 上的双工通信,使用我们自己的证书在传输层上进行保护。虽然这可行,但我担心一些事情:
- 设置起来很痛苦 - 我们为每个客户端创建一个证书以在服务器上识别它,并且需要在客户端机器和服务器上为每个客户端注册证书
- 因为我们在某个端口上使用 tcp,所以我们依赖于在客户端打开该部分,以便它可以通过 tcp 启动通信。一些客户位置不喜欢这样。
- 我们需要能够保证理想的交付
作为替代方案,我想知道是否使用 wsDualHttpBinding,使用单个 SSL 证书来保护它,并让每个客户端发送某种标识符来标识自己。这会解决防火墙问题吗?它在 http 而不是 tcp 上的性能是否足够?据我所知,如果您使用 http(因为 http 不支持双向通信),WCF 将创建 2 个通道而不是一个通道 - 所以这听起来可能会导致一些性能问题..
我的问题是,这个解决方案是否更好,或者是否有其他解决方案(例如 NServiceBus)可以使这更容易并解决这些问题?
编辑
从那以后,我了解到 wsDualHttpBinding 不是我的选择,因为:This binding requires that the client has a public URI that provides a callback endpoint for the service
. 这对我来说是不可能的。