私は友人と別の口論をしています。
当事者間である種のイベント (メッセージ) を送信するために基本的に使用される単純な JSON ベースのプロトコルを設計する必要があると考えてください。
言って、何か
{ event_id: 1, chat_message: "Hello" }
{ event_id: 2, group_id: 3, presence: "online" }
...
私はこのプロトコルを上記のように維持することを提案しますが、私の友人は次のようなことを提案しています:
{ event_id: 1, details: { chat_message: "Hello" } }
{ event_id: 2, group_id: 3, details: { presence: "online" } }
...
彼の主張は、TCP と HTTP が「責任」の異なる層にあるように、このプロトコルはデータを分離しておくために「詳細」サブオブジェクトを使用する必要があるというものです。
彼が持っているもう 1 つの議論は、一致したイベントを処理するハンドラーは、"ルーティング" 情報 (event_id など) について何も認識してはならないというものです。
私の主張は次のとおりです。
- この情報をハンドラーから隠すために、各メッセージ (およびネットワーク トラフィック。これは、大量のメッセージを交換するシステムにとって重要な場合があります) の長さを増やしています。
ハンドラーは、適切に応答するために、実際には「ルーティング」情報を知る必要があります。
this.replyTo(event['event_id'], reply); // or... this.replyTo(event, reply);
event_id などをハンドラーから隠す必要がある場合でも、ハンドラーに渡す前にそれらを取り除くだけで、トラフィックを節約できます。
このプロトコルは非常に単純で、他の人が使用することは想定されていません。
どう思いますか?