我在 Silverlight 应用程序中对同步 WCF 调用的性能测量表明,我可以在 localhost 连接上每秒进行 7 次调用,这非常慢。这可以加快速度,还是正常的?
这是我的测试代码:
const UInt32 nrCalls = 100;
ICalculator calculator = new CalculatorClient(); // took over from the MSDN calculator example
for (double i = 0; i < nrCalls; ++i)
{
var call = calculator.BeginSubtract(i + 1, 1, null, null);
call.AsyncWaitHandle.WaitOne();
double result = calculator.EndSubtract(call);
}
评论:
更新:我已经将客户端从 Silverlight 移植到 .NET,这解决了性能问题。在该测试中,同步调用以 140 次调用/秒(而不是 7 次调用/秒)进行,异步调用以 200 次调用/秒(而不是 16 次调用/秒)进行。显然,缓慢是 Silverlight 平台固有的。我必须学会忍受它。
最佳答案
不是很多。您会遇到进行 100 个 http 调用的问题,这需要时间。你这位女士不要每次都生成一个新客户来搞砸它......所以,对不起。
一般来说,这是一个不好的例子(或者:一个很好的例子,表现出不好的做法)。服务应该始终是粗粒度的,以避免调用开销。通常,服务应该在其所做的事情上具有一定的“权重”。
例如,计算器可以接受一组运算,因此可以一次发送所有 100 个计算。
在设计自己的界面时请记住这一点。
关于wcf - 可以做些什么来加快同步 WCF 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2407418/