我目前通过WCF服务公开程序的一些功能。但是,WCF服务执行与执行相同操作的应用程序相同的任务大约需要3倍的时间。
该函数在DLL中可用。我已经创建了一个WCF解决方案和一个应用程序解决方案来比较两者的速度。此测试中没有涉及其他代码/功能。
以下是(应用程序和WCF)使用的代码:
public String time(string file)
{
DateTime start = DateTime.Now;
FunctionCall(Params);
return String.Format("Time: {0}", DateTime.Now - start);
}
WCF的配置文件是Visual Studio 2010默认生成的配置文件。
应用程序执行需要约3秒,WCF需要8秒。我知道WCF服务可能会有轻微的开销,所以我通过更改为Web服务进行了相同的测试,但结果是相同的。每次对WCF的调用都会给出相同的3x因子,它不仅是第一个因素。
与Windows应用程序相比,什么会导致WCF服务调用dll的方式有如此大的差异?
感谢。
修改
该服务在IIS 7.5上运行(Windows Server 2008 R2) 该函数仅解析文本文件。
问题不在于WCF如何处理请求,而在于它如何调用该函数。
客户端 - WCF通信
Client Request--> WCF : Fast (~25ms)
WCF call --> Function : Slow (~8s)
WCF Respond --> Client: Fast (~25ms)
Windows应用程序
Application -->Function : Medium(~3s)
为什么FunctionCall
在调用它的WCF时会变慢?它是相同的DLL和相同的代码,不应该以类似的速度运行?
答案 0 :(得分:0)
您应该添加一些有关您的wcf服务的信息。特别是关于InstanceContextMode - PerSession,PerCall或Single。如果您使用PerCall,那么这可能是您错过的秒数。