クライアントとサーバーが tcp 接続を使用してメッセージを交換するクライアント/サーバー アプリケーションを考えてみましょう。メッセージには、テキスト、ビデオ、画像など、さまざまな種類があります。メッセージは、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) google protobuf と apache thrift はコードを複雑にし、サーバー側にパフォーマンス オーバーヘッドをもたらします 2) json はバイナリ データにはあまり適していないようです 3) Erlang term() は単純で、erlang サーバー側では自然であり、オーバーヘッドが少ないと思いますprotobuf や倹約よりも
サーバーは、データを送信する前に term_to_binary() でエンコードし、受信したデータを binary_to_term() でデコードするだけです。クライアント側はライブラリを使用して、データを送信する前にバイナリ erlang 用語にエンコードし、受信したデータをデコードします。
私の質問は次のとおりです。
1) このアプリケーション シナリオでバイナリ データ形式として erlang term() を使用するのは適切な設計ですか? 2) モバイル クライアント (Android および iOS) でのエンコード/デコードに使用するライブラリは?