考慮一個客戶端/服務器應用程序,其中客戶端和服務器使用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)上使用哪些庫進行編碼/解碼?