我正在考虑将共享(读取静态)WCF 代理客户端用于高吞吐量应用程序。我相信这样做可以提高性能,但我还没有对此进行基准测试。
这个想法有一些严重的缺陷吗?
根据我的研究,我可以看到存在处理故障状态的问题,尚不清楚该状态对其他待处理请求的影响是什么。
有没有人有从故障状态恢复 WCF 代理的经验?
提前致谢!
一旦通道处于故障状态,它将保持这种状态。所以是的,我认为静态客户端会有问题。我也是以这种方式开始的,但最终为每次通话创建并打开了一个新频道。似乎没有太多的性能权衡。
作为参考,我在来自另一台四核机器的四核机器上执行大约 30-60 个请求,每个请求每秒大约 5K-30K。到目前为止,WCF 一直保持得很好。
我刚刚发现在执行 [OperationContract(IsOneWay = true)] 的单向操作调用时,在代理上调用 Close() 会阻塞。这也会改变流程。