我是 WCF 数据服务的新手,所以我一直在玩。经过一些初步测试后,我对测试数据服务的性能感到失望。
我意识到,因为 WCF DS 是基于 HTTP 的,所以协议(protocol)中存在固有的开销,但我的测试仍然比我预期的要慢:
环境:
代码:
测试计划:
结果:
哎哟。这比 EF 慢了大约 20 倍。
由于 WCF 数据服务是 HTTP,因此没有机会重用 HTTP 连接,因此每次迭代都强制客户端重新连接到 Web 服务器。但肯定还有比这更多的事情发生。
EF 本身相当快,并且服务和直接到 EF 客户端测试都重用了相同的 EF 代码/模型。数据服务中的 Xml 序列化和反序列化会产生一些开销,但是那么多!?!过去,我在 Xml 序列化方面取得了不错的成绩。
我将使用 JSON 和 Protocol-Buffer 编码运行一些测试,看看我是否可以获得更好的性能,但我很好奇社区是否有任何加快速度的建议。
我不擅长 IIS,所以也许可以设置一些 IIS 调整(缓存、连接池等)来改善这一点?
最佳答案
考虑改为部署为 Windows 服务? IIS 可能有它运行的 ASAPI 过滤器、重写规则等。即使这些都不是事件的,IIS 管道也很长,有些东西可能会稍微减慢你的速度。
服务应该为您提供一个很好的基线,即请求运行、打包等需要多长时间,而不会降低 IIS 速度
关于wcf - 如何提高 WCF 数据服务性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3916983/