1

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

看了一些WCF的文档,发现netTcpBinding适合内网应用,因为SSL只有2点。如果是互联网应用程序,连接不能是点 2 点,对吗?那么使用 netTcpBinding 进行传输安全的 SSL 不适合吗?

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


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

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

客户端程序可以和不同机器上的每个cients程序聊天,但是一分钟后回调连接会丢失。

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

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

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

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

4

2 回答 2

4

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

如果您确实需要双工连接(例如,服务器发起的回调),除非您对两端的防火墙有非常好的控制(客户端仍然必须公开一个可公开访问的 HTTP 端点),否则这些都不会在 Internet 上很好地工作供服务器回调)。最好的方法是在 .NET 4.0 中使用新的中继服务——这允许通过防火墙模拟服务器发起的连接。

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

在安全方面,您始终可以在服务总线上使用消息安全性,但我也看不出传输安全性会成为问题的原因。

于 2010-01-12T21:42:52.383 回答
0

要回答 user248724,

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

您需要让客户端或服务器至少每分钟互相 ping 一次,以保持连接套接字处于活动状态。

于 2010-11-05T17:04:21.007 回答