我有一個WCF服務,可以通過基於jQuery的Web應用程序在互聯網中使用,也可以通過本地Intranet中的WPF應用程序使用。WCF服務TCP/Ip vs Http協議,用於Internet與Intranet服務消費
我應該選擇http還是TCP協議或者我應該使用http協議的Internet協議和TCP協議的Intranet的兩個類似的服務。
我有一個WCF服務,可以通過基於jQuery的Web應用程序在互聯網中使用,也可以通過本地Intranet中的WPF應用程序使用。WCF服務TCP/Ip vs Http協議,用於Internet與Intranet服務消費
我應該選擇http還是TCP協議或者我應該使用http協議的Internet協議和TCP協議的Intranet的兩個類似的服務。
我不是WCF的專家,但我在這裏的兩分錢:
在WCF綁定只能配置的問題,這意味着你的WPF客戶端爲WCF終點的web.config和app.config中。
你只需要一個服務,最終多個綁定/端點服務器的web.config
客戶端應用程序將使用兩個端點的一個和客戶端綁定/協議的需要,而無需任何您連接有兩項服務或做出任何具體的改變。
在內聯網netTCPbinding
可能是最快的選擇,因爲它傳輸二進制數據,因特網httpBinding
應該工作得很好;請注意,您也可以在Intranet中使用httpBinding
而不會出現問題,並且它可能會比netTcp綁定的速度慢得多或完全等效,這一切都需要根據您的使用傳輸器類型/內容來證明。
我會建議使用HTTP,它將適用於互聯網以及內聯網。 此外,爲了在兩個服務上公開服務,您不需要創建2個服務,只需在配置中創建適當的綁定,然後相同的服務就會暴露在兩個協議上。
老實說,我建議做這兩個,這也是我所做的。我認爲公開服務'x'並且能夠根據消費者需求通過'y'或'z'連接是很好的。
當我第一次決定這樣做時,我認爲爲相同服務公開多個綁定類型將是微不足道的。畢竟WCF是關於選項的,所以爲什麼不公開一些你想要的選項,對吧?棘手的部分是你不能擁有(2)具有不同綁定(比如說HTTP和netTCP)的不同服務都使用同一個服務合約。嘗試託管這樣的服務時會出現錯誤。
我想出了一個簡單的抽象,使用額外的接口來允許這件事。現在,您將擁有(2)單獨的合同來執行,每個綁定類型1個,但底下仍然只有一個不重要的代碼庫。看看我寫的一篇文章,用代碼示例解釋了這一點:
Exposing Multiple Binding Types For The Same Service Class In WCF