2010-10-31 37 views
1

我開發我正在評估爲通信層的幾個選項的客戶機/服務器應用程序。作爲此通信框架的一部分,我正在考慮使用谷歌協議緩衝區(PB)來表示傳輸數據,而不是重新發明我自己的二進制結構。協議緩衝區和實際的交通選擇 - 插座或中間件

現在來談談實際的傳輸,我想知道是否應該使用普通套接字發送/接收這些二進制消息或使用某種形式的中間件。使用中間件與套接字相比有一些明顯的優勢。我關心的幾個包括:溝通模式 - 發佈/訂閱,請求/響應和故障轉移。

另一方面,與中間件方法相比,使用套接字具有開銷低的優點,並且可以提供更好的性能。

也可以考慮使用協議緩衝區(谷歌協議緩衝區wiki上的第三方附件)提供的RPC庫在客戶端和服務器之間進行通信。儘管它從低級套接字中抽象出來,但它仍然不支持中間件功能。

目前,我的客戶端是一個Adobe Flex GUI和兩個服務器端進程(一個Java和另一個C++)。在未來,客戶端和服務器端可能還會有其他語言開發的其他服務,如.NET

專家們對這些選擇以及體驗的感受如何,而不會影響性能。開發人員還有其他替代方案嗎?

感謝 DECE

回答

3

除非它是一個學習鍛鍊,你絕對,肯定,必須使用一些中間件。有很多的選擇:AMQP,ZeroMQ,XMPP,彗星/貝葉。

對於您的情況,您可能需要基於Web的東西,所以XMPP over HTTP可能是一個不錯的選擇。不過,我偏愛彗星(儘管我發現貝葉因爲我的需要太複雜了)。

0

哪個平臺?

如果Windows那麼我有一個免費,簡單,高性能,基於IO完成的可插拔服務器平臺,名爲WASP,可從here獲得。

簡單地寫一個或兩個DLL,插上電源,它們和你正在使用的網絡來完成。

我目前沒有基於協議緩衝區的插件示例,但它在我要做的事情列表中...