C# WCF服务大Linq响应

C# WCF服务大Linq响应,c#,wcf,linq,C#,Wcf,Linq,我使用WCF返回一个复杂对象列表,这些对象是使用Linq从SQL Server返回的 我想返回一个对象列表,其中包含大约16个属性和2个对其他复杂类型的引用(每个属性大约有8个) 我在fiddler中看到,返回的每个对象(序列化为XML时)大约为5KB,而当我尝试返回完整列表(900项)时,大约为3MB 这正常吗?是否有其他方法将数据序列化为轻量级格式 提前谢谢 看看这对您来说是否可行,与XML序列化相比,这将大大减少网络流量XML非常冗长,而且这个大小并不让我感到惊讶(考虑到列表的大小,如果您

我使用WCF返回一个复杂对象列表,这些对象是使用Linq从SQL Server返回的

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

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

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


提前谢谢

看看这对您来说是否可行,与XML序列化相比,这将大大减少网络流量

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

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

然而,这也意味着双方都必须做一些工作。在服务器端,您需要将您的实体转换为某种类型的传输实体,如果愿意的话。在客户端,您无法立即处理这些数据,但需要首先对数据进行反序列化,然后从中重新构建数据模型


您希望在发送的对象中打包一个“DTO信息”,以便您的客户机知道它所接收的数据包的预期内容。例如,哪种类型已序列化,等等。

序列化数据的方法有很多种,例如CSV、JSON,但这取决于您需要向服务消费者提供什么?你能缩小你的产品清单吗?900条记录似乎很多。是的,我认为我可以在结果中添加页面,但我需要在一个页面中加载一个完整的数据网格(8-)可能只有我一个人,但我可以想几次,一次使用100多行网格是一个好主意……这听起来可能不是很有用,但在这种情况下,客户通常不知道他们想要什么。他们可能没有考虑过分页等问题,可能会很高兴得到一种不同的/更高性能的机制。我同意Paddy的观点。此外,如果他们坚持要一大步完成所有的900件物品,他们就必须忍受这需要一些时间。这并不是说你可以在任何时候做任何你想做的事情。不幸的是,这台计算机并不是这样工作的:-(至少你现在有足够的理由与你的客户进行进一步的讨论,并提出替代方案。NetTcpBinding会让我像往常一样使用这些服务吗??(我的意思是,客户端应该创建所有类的副本…)@zapico:将绑定更改为Net TCP不会对服务产生任何影响。您只需更改服务器和客户端的配置文件即可使用此绑定,一切都会正常工作!您无需重新引用服务或重新生成任何代理类。