2010-10-04 81 views
8

我想用服務器數據更新客戶端數據,反之亦然。目前我使用的BasicHttpBinding比wsHttpBinding快。 我requirnment是才達到:BasichttpBinding vs WCF的WSHttpBinding

  • 快速的數據通信
  • 安全通信

兩個結合是適合在這種情況下basicHttpBinding的和的wsHttpBinding。 那麼我應該使用哪種綁定?和BasicHttp和wsHttp綁定有什麼區別?

回答

16

如果您需要安全,請使用wsHttpBinding。它實現了所有各種安全功能,如消息或傳輸安全性,作爲Windows憑據提供的客戶端憑證,用戶名/密碼或證書。它支持可靠的消息傳遞以及更多 - 完整的WS *標準。

BasicHttpBinding就是這樣 - 非常非常基本。它或多或少是ASMX網絡服務 - 幾乎沒有設置,沒有安全性(除了通過HTTPS路由)。

如果您需要快速,請使用netTcpBinding - 但這不適用於互聯網連接。如果這不起作用,請使用basicHttpBinding - 它比wsHttpBinding更快,更精簡,開銷更少。

所以你回到了經典的權衡:你可以有快速或安全 - 選擇一個。沒有什麼「魔法」的方式同時存在 - 安全性會增加開銷並因此減慢速度。什麼對你更重要:安全通信或快速通信?

+1

安全對我來說更重要。我們是否可以用basicHttpBinding來實現ssl或者只有wsHttpbinding是安全的東西。如果我們可以在basicHttpBinding中使用ssl,那麼basicHttp和wsHttp Bindings會有什麼顯着的性能差異。 – 2010-10-05 05:12:42

+0

是否可以實現沒有SSL或https://的WSHttpBinding? – 2013-10-07 14:54:56

+0

@MuraliMurugesan:可能很晚,但對於其他人閱讀:是的,這是可能的 - 只需使用安全模式:'消息'。 Message Security提供了端到端的獨立於傳輸的安全性。 – 2014-04-02 14:34:46

6

wsHTttpBinding實現了Web服務通信的WS-Security標準,但是,如果您使用basicHttpBinding,我相信HTTPS將爲您提供足夠的安全性。

您還應該記住wsHttpBinding會限制您的互操作性,因爲wsHttpBinding只與支持WS- *(SOAP 1.2)的客戶端兼容。

在我看來,我會堅持basicHttpBinding,除非有特定的WS- *標準功能,你需要。在WS-Security方面,它帶來的功能就是消息級加密(HTTPS提供的傳輸級加密之外)。對我來說,傳輸加密可以確保您的消息在通過有線傳輸時被加密,但消息級別加密的唯一好處是不需要使用傳輸級別安全性的開銷,而只是希望在消息的特定區域實現輕量級加密。

這裏的WS規範列表從維基百科爲您的信息:

http://en.wikipedia.org/wiki/List_of_Web_service_specifications

+0

當通信不知道通過點對點的安全通道時,傳輸安全性可能是有益的。當客戶端向服務發送消息並且消息通過中介路由時,傳輸安全並不總能得到保證,並且消息級安全性成爲有用的選擇。 – BitMask777 2011-07-26 18:56:15

2

通常我們推薦一種快速安全的傳輸(如SSL)安全。這是因爲任何類型的消息級別的安全性在加密/簽名中都是CPU密集型的。

所以,你可以使用基本的http綁定和傳輸安全性在大多數情況下沒有太多的折衷perf。

如果你沒有使用任何更豐富的WS *協議或會話等,那麼你可以堅持基本的http綁定。