我和我的一个朋友还有另一个争论。
考虑需要设计一个简单的基于 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 处于不同的“责任”层一样,该协议应该使用“详细信息”子对象以保持数据分离。
他的另一个论点是处理匹配事件的处理程序不应该知道任何有关“路由”信息(例如 event_id)的信息。
我的论点是:
- 为了向处理程序隐藏这些信息,我们正在增加每条消息的长度(以及网络流量,这对于与大量消息交换的系统可能很重要)
处理程序确实需要知道“路由”信息,例如,才能正确回答它们:
this.replyTo(event['event_id'], reply); // or... this.replyTo(event, reply);
即使我们需要从处理程序中隐藏 event_id 和类似的东西,我们也可以在传递给处理程序之前将它们去掉,这样仍然可以节省流量
该协议非常简单,不应该被其他任何人使用。
你怎么看?