2

将 Breeze.js 用于客户端,将 BreezeController 用于服务器,它生成的有效负载大小对我来说似乎效率低下。例如,当通过以下方式对 3 个属性进行简单的分页投影时:

.select("Property1, Property2, Property3")

每条记录的类型如下:

"$type":"_IB_eTB9_dNYb7IWzNREO3W5Uer5DOQ8[[System.String, mscorlib],[System.String, mscorlib],[System.String, mscorlib]]

显然,我在投影中包含的属性越多,这将越长,在许多情况下,“定义”类型明显长于实际数据,并且每一行都重复。

我是在担心什么,还是有什么办法可以减少这种情况?

4

2 回答 2

3

为了回答我自己的问题,我想说我不应该担心这个(它可能也适用于更一般的“网络元数据”问题)

假设我们打开 gzip 压缩,我的测试表明所有无关的元数据对最终压缩有效载荷的大小影响很小,我想这并不奇怪。

于 2013-03-25T02:43:53.967 回答
1

这是一个有趣的问题。当您请求投影(使用 select 语句进行查询)而不是实体时,这确实是一个更大的问题,因为至少对于 .NET 服务器而言,匿名类型的 json 序列化有点难看。查看没有选择的查询的结果,您会发现有效负载更加合理。

也就是说,我们应该可以修改默认的 json.net 格式化程序以简化匿名类型信息的序列化,特别是因为一旦客户端意识到它与任何“已知”不匹配,我们基本上无论如何都会在客户端忽略它类型。如果您对此感兴趣,请将其添加到Breeze User Voice中。我们确实关注这些功能请求。

于 2013-03-25T03:25:19.273 回答