1

我目前正在编写一些用于移动设备 iphone 应用程序等消费的服务。所以对我来说非常重要的是从我的 http 服务返回到设备的有效负载,我需要它尽可能小。所以我为此选择了json。

但是,我遇到了另一种平均尺寸减少 25% 的类型 - BSON

有没有人使用过这个,使用它而不是 JSON 有优缺点吗?从 http 服务返回的数据大多是具有许多复杂类型属性的简单对象,或者可能是对象列表。

还是我应该查看另一种可能会进一步减少有效负载的数据类型?

4

1 回答 1

5

我用 JSON 和 BSON 在 Android 3.2 上做了一些性能测试。我使用的框架是 gson 和 bson4jackson。服务器是使用 Jersey 构建的 Java REST API。在该场景中,我将客户端上的 Java 对象编组为 JSON/BSON,通过 HTTP 将其发送到服务器,对其进行解组,如果解组过程成功,则以 200 OK 响应。

结果是,BSON 在较大的文件(约 120 kb 或更多)上更快,在小文件上 JSON 显然更快。

原因是 BSON 用一些额外的数据扩展了数据格式以加速解析,这导致文件更大,特别是对于小文档。

我在 iOS 上尝试了同样的方法,但我找不到(工作的)BSON 框架来解码 BSON。BSONKit 在 iOS 上为某些元素抛出错误。如果有人知道另一个工作框架,如果你能告诉我,我会很高兴。

顺便说一句:使用 JSON 的打包率也更好,最大约为 135 kb。恕我直言,如果你只需要处理大文件,你应该只使用 BSON,因为 120 kb 或更多对于移动设备和服务器之间的常规请求来说是一个非常大的大小。

于 2012-09-03T12:54:06.727 回答