2016-07-31 34 views
2

幾個月前,我選擇.NET庫來實現ZeroMQ通信,我很困惑這個事實,即在zeromq.org處建議的庫很少。NetMQ vs clrzmq

同時我學到了一些東西,所以我會在這裏分享。有人可能會覺得這很有幫助。所以讓我問自己:

NetMQ和clrzmq有什麼區別?

(雖然我會回答這個自己,如果任何人有關於這個問題的一些經驗 - 備選答案是歡迎!)

回答

6

兩者之間的主要區別是在方法:

  • CLRZMQ是綁定項目,實際上在後臺使用libzmq庫(這是一個.NET包裝的libzmq庫);
  • NetMQ是ZeroMQ的.NET本地端口,這意味着它不包裝現有的libzmq,但是將它重寫爲純C#中的

要使用哪一個?那麼,沒有簡單的答案。在選擇時請注意以下幾點:

  • 說到可移植性 - NetMQ贏得勝利,特別是由於NetMQ的.NET Core版本。使用NetMQ進行部署也更容易 - 不需要擔心任何本地庫(x64/x86等)。另一方面,NetMQ實際上重寫所有內容的事實對我來說有點可怕 - 總是存在某些東西不能從原始代碼精確鏡像的風險,並且可能會導致與其他ZeroMQ節點不兼容。也有人質疑NetMQ將如何從原始庫實現新功能。
  • 表演。目前我不知道哪個圖書館在演出中獲勝,但這是選擇時要考慮的事情。 libzmq應該比任何託管代碼快得多,但是在CLRZMQ和libzmq之間的通信必須發生,所以我真的無法預測哪個庫會在速度上獲勝。

更新:NetMQ的另一個重要優勢是支持 - 您將在一兩天內得到答案,有時在幾小時內得到答案。

更新2:NetMQ中的輪詢器實現問題(描述爲here)在我的情況下證明是NetMQ的瓶頸問題。由於這個問題,我已經將我的項目遷移到了CLRZMQ(我可能會改變主意......)然而,在談論輪詢時,CLRZMQ文檔中有一個問題應該注意,它的描述here

0

根據多倫Somech:

http://somdoron.com/2013/03/introducing-netmq/

作爲2014 C#結合(CLRZMQ)不再保持和NetMQ爲ZeroMQ和.Net的默認選擇。

看來:

https://github.com/zeromq/clrzmq4

取代了原來的CLRZMQ項目。

我正在使用NetMQ並期待爲該項目做出貢獻。

P.S.我爲NetMQ和本機ZeroMQ構建了相同的Pub-Sub方案,但未發現任何性能差異。好,Doron!

相關問題