使用Web API 2的Breeze Json序列化

时间:2014-07-23 17:34:40

标签: c# json asp.net-web-api breeze

我是Breeze的新手,并且在客户端开发Breeze项目,在服务器端开发ASP.NET Web API 2。我使用了Breeze网站上列出的所有最佳实践(http://www.breezejs.com/documentation/web-api-controller)。

但我遇到的一个问题是,为什么每个数据节点在序列化项目时都会列出对象的.NET类型。每当我得到一个包含大量记录的列表时,我可能会看到大多数数据是$ type实体,列出了完整的类命名空间和程序集名称。对每个数据节点重复这个$ type实体,该代码重复为100次。

似乎更合乎逻辑并且节省了breeze调用的有效负载,以执行与服务器端的Xml序列化中的命名空间类似的操作。可能在标题中列出完整的类签名,而对象只有标题中完整定义的快捷方式。如:

部首:

$typeFull: {
key: 'ABC',
namespace: 'ABCCompany.Data.Client.ViewModels.Customers'

数据:

$ id:1, $ typeKey:' abc',

以下是返回breeze的当前数据的示例:

[
{
$id: "1",
$type: "Assembly.Root, ABCCompany.Data.Client.ViewModels.Customers",
CustomerId: 1,
Name: "ABC Company",
LongDescription: "Describe me! Describe me! Describe me! Describe me! Describe me! Describe me! Describe me! Describe me! Describe me!  Describe me! Describe me! Describe me! Describe me! Describe me! Describe me! Describe me! Describe me!",
Phone: "800-555-1212",
PrimaryContactName: "Bugs Bunny",
AddressId: 1,
Address: {
$id: "2",
$type: "Assembly.Location, ABCCompany.Data.Client.ViewModels.Customers.Addresses",
AddressLine1: "2600 Red Box Blvd",
AddressLine2: null,
City: "Anaheim",
StateId: 35,
Zip: "44122",
CountryCode: "US",

1 个答案:

答案 0 :(得分:0)

我没有参加微风开发团队,所以我无法为他们回答,但这是我的2美分:

实际上,冗余信息并不重要,因为数据将被gzip压缩。以下是如何确保json被压缩(假设你正在使用IIS):

http://benfoster.io/blog/aspnet-web-api-compression