2010-01-12 114 views
1

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

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

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


我已经试过http://www.codeproject.com/KB/WCF/WCFWPFChat.aspx 本教程中使用NetTcpBinding的和端点本地主机

我更改端点本地主机基于名称的网址,转发在我的路由器端口到我的开发PC,打开同一个端口在Windows防火墙。

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

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

看来,tcp绑定可以让客户端程序连接到Windows防火墙的服务器打开。但回调连接丢失。

和wsDualHttpBinding可以保持回调连接。但如果Windows防火墙无法连接到服务器。

有没有办法保持netTcpBinding回调连接在wsDualHttpBinding?

回答

4

这听起来像你有两个问题 - 双工连接和安全。如果你确实需要一个双工连接(例如服务器发起的回调),除非你对两端的防火墙有非常好的控制权,否则这两种方法都不能很好地在互联网上工作(客户端仍然需要公开一个可公开访问的HTTP端点供服务器回叫)。最好的方法是在.NET 4.0中使用新的relay services-这允许通过防火墙模拟服务器启动的连接。

编辑:这是现在所谓的AppFabric的,并且是Windows Azure基础设施

在安全方面,你可以随时使用邮件安全通过服务总线的一部分,但我没有看到一个原因传输安全也是一个问题。

0

要回答user248724,

客户端程序可以在不同的机器上的每个 cients程序, 但回调连接聊天将一个minute.after一分钟之后失去 。

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