2010-01-12 100 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對方以保持連接套接字活動。