使用WCF端点通过HTTP传输SQL表格数据的最快方法是什么?
现在我用ESQL查询Entity Framework,然后将DataTable结果序列化为byte []并将其发送过来,然后在另一端反序列化,这看起来很慢。现在,对于15000多行,序列化数据的大小约为4000字节。我也尝试过OData服务,但这也很慢。
与JSON相比,我认为这是最快的 - 一个只包含1048个SQL行的JSON文件将近20万字节。数据大小与通过HTTP传输的速度之间是否存在直接关联? (看起来很直观,但我并不积极)。
最快的格式是什么?我正在考虑使用SQLDataReader到JSON并发送JSON,我认为应该表现不错,但我不确定。这仅用于数据同步目的。
感谢。
修改的 做了一些跟踪,看起来我的一些初步测量是错误的。请参阅下面的相应方法,以毫秒为单位。
2011年7月11日星期一下午6:42:23 : :函数'反序列化'持续时间。经历:481毫秒
2011年7月11日星期一下午6:42:23 : :函数'HttpRequest'持续时间。经历时间:4776毫秒
2011年7月11日星期一下午6:42:22 : :DataTable长度(字节)= 13047247字节
上面引用的DataTable包含~7000行,看起来很陡,对吧?
答案 0 :(得分:1)
SqlDataReader是从数据库中获取数据的最快方法,是的。您将遇到的麻烦是,您需要在通过HTTP发送之前完整地汇总结果。您不能只是在从数据库中读取结果时对流进行流式处理。 JSON是表示数据的一种相当紧凑的方式,但由于您不得不一遍又一遍地重复列名,因此使用简单的纯文本制表符分隔值文件会更好。设置Content-type = text / plain并从SqlDataReader获取数据时擦除数据中的任何选项卡。您可能还需要考虑对结果进行压缩 - 具体取决于网络速度与Web服务器处理能力的对比。
- 编辑 -
正如Sean正确指出的那样,纯文本选项不是WCF解决方案。