WCF + SSL wsDualHttpBinding或netTcpBinding

时间:2010-01-12 09:08:21

标签: wcf nettcpbinding wsdualhttpbinding

我需要创建一个自托管的WCF服务。 我需要通过Internet在客户端和服务器之间建立安全的双工连接。

我阅读了WCF的一些文档,发现netTcpBinding适用于Intranet应用程序,因为SSL只是点2点。如果是互联网应用程序,连接不能是第2点,我是否正确?所以使用netTcpBinding的传输安全性SSL不合适吗?

那么我应该使用什么组合来创建安全的双工互联网应用程序? 非常感谢你。


我试过http://www.codeproject.com/KB/WCF/WCFWPFChat.aspx 本教程使用netTcpBinding和endpoint localhost

我将端点localhost更改为基于名称的url,将路由器中的端口转发到我的开发PC,在Windows防火墙上打开相同的端口。

客户端程序可以与不同机器中的每个客户端程序聊天,但一分钟后回调连接将丢失。

我还尝试将绑定更改为wsDualHttpBinding,客户端程序可以与同一台计算机中的每个客户端聊天,并将回调连接保留在reliableSession inactivityTimeout设置中。但是另一台机器上的另一个客户端程序无法加入服务器,如果我关闭该机器上的Windows防火墙,则客户端程序可以连接。

似乎tcp绑定可以让客户端程序连接到带有Windows防火墙的服务器。但是回调连接丢失了。

并且wsDualHttpBinding可以保持回调连接。但如果Windows防火墙打开,则无法连接到服务器。

有没有办法像wsDualHttpBinding一样保留netTcpBinding回调连接?

2 个答案:

答案 0 :(得分:4)

听起来你有两个问题 - 双工连接和安全性。

如果您真的需要双工连接(例如,服务器启动的回调),除非您对两端的防火墙都有非常好的控制(客户端仍然必须公开公开),否则这些都不能在互联网上很好地工作服务器要回调的可访问HTTP端点)。最好的方法是在.NET 4.0中使用新的relay services - 这允许通过防火墙模拟服务器启动的连接。

编辑:现在称为AppFabric,它是Windows Azure基础架构的一部分

在安全方面,您始终可以通过服务总线使用邮件安全性,但我也没有看到传输安全性成为问题的原因。

答案 1 :(得分:0)

回答user248724,

  

客户端程序可以与每个人聊天   客户程序在不同的机器上,   但回调连接将丢失   一分钟后。一分钟后。

您需要至少每分钟让客户端或服务器相互ping通以保持连接套接字的活动。