Mat*_*rts 2 c# wcf duplex nservicebus
我需要允许多个客户端(winforms应用程序)通过Internet(远程位置)连接到服务器,并启动双工通信,有时会发送大量流量.
目前,我们通过netTcpBinding与WCF使用双工通信,使用我们自己的证书在传输层上进行保护.虽然这有效,但我关注的是一些事情:
作为替代方案,我想知道使用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.这对我来说是不可能的.
让我分别解决每个问题:
为什么不使用TransportWithMessageCredential并使用用户名和密码 - 这意味着您只需要在客户端管理用户名和密码,您的客户端证书问题就会消失
使用NetTcpBinding,服务器需要为入站流量打开端口 - 客户端只需要允许客户端连接到该端口,它们不需要允许特定端口上的入站连接.它们是否存在允许出站连接到自定义端口的问题?
NetTcpBinding使用Tcp,假设您没有在交付时保证交付;在拓扑中有一个SOAP中介.您是否在尝试保证交货或处理?
WSDualHttpBinding将强制您的客户端为入站连接打开一个端口,因此几乎肯定不会被接受.我写了一篇关于双面打印的博客文章,可能有助于澄清问题
您还可以查看针对此类场景设计的SignalR,虽然专为Web应用程序设计,但也有.NET客户端