2012-09-10 69 views

回答

9

2個綁定根本不同。

  • NetTcpBinding可以作爲MS專有格式(通常二進制)在概念上類似RPC被認爲是(例如可以用來代替.NET Remoting)。它是同步的,即客戶端和服務器必須同時在線,並且客戶端立即收到響應(幾乎)。

  • MSMQ是微軟提出的面向消息的中間件解決方案,它圍繞着異步隊列 - 例如,如果目標服務器在客戶端發送消息時處於脫機狀態,則消息將在客戶端上排隊,直到服務器恢復聯機狀態。每個隊列都是單向的,儘管通過從服務器到客戶端的第二個隊列可以實現雙向通信。發送WCF MSMQ消息需要在客戶端上安裝MSMQ服務。隊列中的消息可以有一個傳遞'超時',否則將被放置在適用的死信隊列中。

現實世界的例子:

  • 我會用NetTcpBinding二進制序列高性能,微軟WCF客戶端和服務器之間,例如同步通信需求上傳文件,媒體等在那裏Xml不會是有用的(否則,我會用wsHttpBinding同步Xml/SOAP消息)
  • 我會用MSMQBinding與DTC啓用,以確保可靠的消息傳遞2個或多個系統之間(如金融),與端點中的.Net是中的至少一個,以及「compatable」服務器(不一定WCF,例如BizTalk,或其它EAI集線器或ESB總線具有適配器MSMQ,例如MSMQ and MQSeries之間存在橋)。消息通常採用Xml格式。

TL; DR

這是否使用這項服務意味着即使服務未運行還是客戶

是。如果MSMQ在本地運行,客戶端將立即返回成功響應(表示消息已排隊)。但這並不意味着該消息已被服務器成功接收。

+1

好的答案,我已經在很多複雜的系統中廣泛使用過WCF,並且只是想添加我的兩分錢。 1.避免默認WCF,除非是特定的用例,它提供了REST風格的Web服務中缺少的東西; WCF頭痛的9/10倍不值得。 2. NetTcpBinding無疑是我個人經驗中最好的(也是最快的 - 排除命名管道)綁定選項。然而,海報解釋說,它沒有任何內置冗餘。 –

+0

同意 - 已經4年了,xml現在大部分都是由JSON服務重新修復的,而WebApi現在已經將WCF移植到了RESTful世界。 – StuartLC