WCF服务大Linq响应

时间:2011-10-11 10:04:28

标签: c# wcf linq

我正在使用WCF返回使用Linq从SQL Server返回的复杂对象列表。

我想返回一个包含大约16个属性和2个引用到其他复杂类型的对象列表(每个属性大约有8个属性)。

我在fiddler中看到每个返回的对象(序列化为XML时)大约为5KB,当我尝试返回完整列表(900个项目)时,它大约为3MB !!!

这是正常的吗?有没有其他方法可以将数据序列化为轻量级格式?

提前致谢!!

2 个答案:

答案 0 :(得分:4)

查看NetTcpBinding如果您可以这样做,与XML序列化相比,这将大大减少网络流量

答案 1 :(得分:3)

XML非常冗长,这个大小并不让我感到惊讶(考虑到你的列表的大小 - 如果你问我,900项太多了)。

如果您需要“打包”您的数据,我建议您将对象序列化为JSON,因为这样可以消除大量冗长。有一个内置的JSON Serialization mechanism,所以你应该能够非常快速地开始。我遇到的唯一问题是DateTime字段,它们有时会因内置的JSON Serializer而出错,但是有一些解决方法。

然而,这也意味着必须在两端完成一些工作。在Serverside中,您需要将实体转换为某种传输实体,或者DTO,如果愿意的话。在客户端,您无法立即使用它们,但需要先对数据进行反序列化,然后从那里重新构建数据模型。

您希望在已发送的对象中打包“DTO信息”,以便您的客户端知道对其接收的数据包的期望。比如,哪种类型已被序列化,等等。