2014-03-28 59 views
0

考慮一個客戶端/服務器應用程序,其中客戶端和服務器使用tcp連接來交換消息。消息可以有多種類型:文本,視頻,圖片等。消息以Erlang的形式傳輸。使用二進制erlang術語通過網絡發送結構化數據?

例如

client -->   {{username, "Romeo"}, {password, "secret"}}   --> server 
client <--      {authresult, 'PASS'}      <-- server 
client -->   {{toUser, "Juliet"}, {msg, {text, "hello!"}}}   --> server 
client --> {{toTopic, "ErlangCafe"}, {msg, {text, "i love gen_server}}} --> server 
client --> {{toUser, "Francisco"}, {msg, {jpg, <<binary data>>}}}  --> server 

原因,我的二進制數據格式思維Erlang項的:

1)谷歌的protobuf和Apache節儉的代碼複雜化,並帶來性能開銷到服務器端 2)JSON看起來不是很好的二進制數據 3)Erlang項()是簡單和自然的使用Erlang服務器端,我認爲它在發送之前帶來的不僅僅是protobuf的節儉開銷更少,則

服務器只是編碼通過term_to_binary數據()並通過binary_to_term()解碼接收到的數據。客戶端在發送和解碼接收到的數據之前使用庫將數據編碼爲二進制erlang項。

我的問題是:

1)是否有良好的設計使用Erlang項()的二進制數據格式,在這種應用場景? 2)在移動客戶端(Android和iOS)上使用哪些庫進行編碼/解碼?

回答