将Breeze.js用于客户端,将BreezeController用于服务器,它生成的有效负载大小对我来说似乎效率低下。例如,通过以下方式对3个属性进行简单的分页投影时:
.select("Property1, Property2, Property3")
每条记录的类型如下:
"$type":"_IB_eTB9_dNYb7IWzNREO3W5Uer5DOQ8[[System.String, mscorlib],[System.String, mscorlib],[System.String, mscorlib]]
显然,我在投影中包含的属性越多,所用的时间就越长,在很多情况下,“定义”类型明显长于实际数据,并且每行重复一次。
我是否担心什么,或者有没有办法减少这种情况?
答案 0 :(得分:3)
要回答我自己的问题,我会说我不应该担心这个问题(它可能也适用于更为一般的“线上元数据”问题)
假设我们打开gzip压缩,我的测试显示所有无关的元数据与最终压缩有效负载的大小差别很小,我想这并不奇怪。
答案 1 :(得分:1)
这是一个有趣的问题。当您请求投影(使用select语句的查询)而不是实体时,这确实是一个问题,因为至少对于.NET服务器,匿名类型的json序列化有点难看。在没有选择的情况下查看查询的结果,您将看到有效负载更合理。
也就是说,我们应该可以修改默认的json.net格式化程序来简化匿名类型信息的序列化,特别是因为一旦客户端意识到它与任何一个不匹配,我们基本上都会在客户端上忽略它“已知”类型。如果您对此感兴趣,请将其添加到Breeze User Voice。我们注意这些功能请求。