我可以推薦你使用Thrift並通過它們建立通信。
節儉爲您所需的語言(Java和JRuby)提供了生成器,並提供良好和快速的通信。
更新: Thrift是在Facebook開發的RPC(遠程過程調用)框架。詳細你可以在Wiki中閱讀。
在一些詞來節省您的時間,它是什麼以及如何使用它:
你來描述數據結構和.thrift文件(文件)服務接口。並從這個文件生成一個或幾個語言所需的所有源文件(全部需要序列化)(您需要)。比你可以簡單地創建幾行服務器和客戶端
在客戶端使用它會看起來像你只是使用簡單的類。
隨着節儉,你可以使用什麼協議和運輸使用。 在大多數情況下,通過Blocked或Not-blocked transport使用Binary或Compact協議。因此,網絡通信將以快速序列化的方式輕而快速。
SOAP(基於HTTP上的XML)包,其數量較大,並且不適合發送二進制數據,但不僅限於此。另外XML序列化非常慢。所以使用SOAP你會收到很大的開銷。此外,你需要用肥皂寫(或使用第三方)lib來呼叫服務器(小型網絡層),節儉已經爲你做好了。
SMTP和基本上JMS不適合實時和問答通信。 我的意思是,如果您只需要將某些消息放入隊列中,某人有時會給出該消息並對其進行處理,那麼您可以(也應該)使用JMS或任何其他MQ服務(Thrift可以這樣做,但MQ體系結構對此更好問題)。 但是,如果您需要實時查詢應答呼叫,則應使用RPC,因爲它可以是HTTP(REST,SOAP),二進制(Thrift,ProtoBuf,JDBC等)或任何其他協議。 Thrift(和ProtoBuf)提供了生成客戶端和服務器的框架,因此它將您從低級別問題中封裝出來。
P.S: 我在過去的https://github.com/imysak/using-thrift(通過Thrift Java服務器+ Java客戶端或node.js客戶端進行通信)中做了一些示例,可能對某人有用。但是你可以找到更簡單更好的例子。
你能不能,請說明一點什麼'Thrift'是,可以將其與'soap'或不便進行比較? – ted 2013-02-13 16:38:50
@ted,更新我的回答,我希望它幫你。 – iMysak 2013-02-14 00:19:29