【发布时间】:2009-03-08 17:30:12
【问题描述】:
我和我的一个朋友又发生了争执。
考虑需要设计一个基于 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 之类的东西,我们也可以在传递给处理程序之前将它们去掉,这样仍然可以节省流量
这个协议非常简单,不应该被其他人使用。
你怎么想?
【问题讨论】:
-
带宽差异不大,尤其是如果您在此之上进行压缩。只是想我会提到。
-
是的,它不是——但为什么我们需要添加它...基本上什么都没有?
标签: actionscript-3 erlang network-programming network-protocols