C# WCF[互联网场景]。最快的传输方式\序列化(反)数据

C# WCF[互联网场景]。最快的传输方式\序列化(反)数据,c#,wcf,optimization,C#,Wcf,Optimization,我的wcf由IIS托管并使用basicHttpBinding。 我的常用数据是数据集,我应该序列化并传输到客户端。 我不害怕MB,但我想把它以最好的性能提交给客户 据我所知,我应该使用MTOM编码。对吧? 还想知道传输对象的类型: 数据集,字节[],Gzip流(通过IIS或手动) 我认为我的情况相当普遍。想听听你的快速设计吗。我认为最快的方法是通过DTO(而不是数据表)使用protobuf net。Protobuf net只需更改配置文件就可以插入WCF,并且具有我所知的任何通用序列化程序中最小

我的wcf由IIS托管并使用basicHttpBinding。 我的常用数据是数据集,我应该序列化并传输到客户端。 我不害怕MB,但我想把它以最好的性能提交给客户

据我所知,我应该使用MTOM编码。对吧?

还想知道传输对象的类型: 数据集,字节[],Gzip流(通过IIS或手动)

我认为我的情况相当普遍。想听听你的快速设计吗。

我认为最快的方法是通过DTO(而不是数据表)使用protobuf net。Protobuf net只需更改配置文件就可以插入WCF,并且具有我所知的任何通用序列化程序中最小的输出和最快的处理速度。我可能有偏见(我写了那个版本),但它是免费的,所以值得一试

但是没有数据表


是的,MTOM在传递二进制文件(protobuf是)时很有帮助,但在传递XML时却没有帮助(因此,使用标准DataTable的MTOM是毫无意义的)

最佳性能??不要使用数据集-它们有很大的开销。。。。使用直接的对象列表来代替…(如果您愿意,我可以提供一个关于比较WCF序列化程序性能的SO问题作为支持证据)Marc,非常感谢。是的,你能帮我把这个链接给我吗。我也想问问。若我想将db查询的结果传递给客户机,我应该将查询的结果放入DTO中,并使用(二进制protobuf)传递给客户机。好啊但若我并没有任何用于将db结果映射到域并映射到dto的ORM,那个么我的db查询结果就是xml字符串。我应该如何传递给客户端这个(没有对象集合)?@andrew re the other:如果你想要最好的性能,客户端必须提前知道它期望的是什么。在许多情况下,您可以在客户端和服务器之间共享DTO