2012-03-11 56 views
1

我讀過各種書籍/文章,有些綁定,例如netTcpBindingnetMsmqBinding無法在互聯網上實現,因爲他們用於通信的端口被大多數防火牆阻止。這從Juval Lovy編程WCF服務的第518頁:各種WCF綁定使用什麼特定端口進行通信?

MSMQ綁定旨在用於Intranet。它不能 默認通過防火牆。

但在同一時間,我看到很多文章/圍繞教程做到這些,與在互聯網上netTcpBindingnetMsmqBinding通信實現服務。我甚至最近建立了一個WCF服務netMsmqBinding,並且從最初的測試(儘管我們尚未在生產環境中測試該服務),但似乎在互聯網上運行得非常好,儘管經過許多挫敗嘗試和無數次調整。無論如何,我的問題是,是否有人能夠告訴我不同​​類型的綁定使用的端口號,以及是否可以安全地假設這些端口在防火牆上默認打開。也有人建議,通過互聯網使用netTcpBinding,我試圖託管另一個服務,將通過互聯網客戶端調用,我希望有100多個客戶端在特定時間使用服務,因此性能對我至關重要(這就是爲什麼我熱衷於netTcpBinding通過互聯網的想法,而不是wsHttpBinding)。

回答

3

netTcpBinding的默認值是TCP/808。

有一個Microsoft Howto描述MSMQ在各種情況下使用的端口。

任何受防火牆保護的服務都需要在防火牆中打開正確的端口。只要端口是開放的,任何東西都可以在互聯網上運行。

這樣說,有一些永遠不應該打開防火牆的端口。對於通用RPC端口(139,445)的Windows環境,允許訪問Windows文件共享,RPC和遠程註冊。如果您打開這些服務,則無法將訪問權限限制爲僅有一項服務,任何可以訪問這些端口的人都可以訪問所有核心Windows服務。

1

不幸的是,通用TCP沒有默認端口,所以你不應該期望任何防火牆默認打開。唯一的默認端口用於衆所周知的基於TCP的協議(例如,用於SQL Server,HTTP/S等)。如果您可以確保您的客戶端和服務器擁有正確的端口,則您應該能夠通過互聯網可靠地工作。如果您無法控制服務器或客戶端,則可能會遇到此方法的問題。

如果性能是您正在尋找的,那麼您可以考慮FastInfoset components from Noemax。他們可以通過壓縮和更快的編碼顯着加速HTTP WCF服務。他們還與非WCF客戶端提供合理的互操作性。我發現在我的情況下,我們能夠接近TCP性能。