WCF调用Web服务花费了很长时间

WCF调用Web服务花费了很长时间,wcf,web-services,proxy,Wcf,Web Services,Proxy,我有一个wcf服务(wcf_a),它调用另一个wcf服务(wcf_B)(目前我使用我的凭据在本地计算机上托管wcf_B–作为windows服务),wcf_B在内部调用IIS上托管的Web服务(WS01)。我已经创建了一个测试客户端,并调用WCF_a->WCF_B->WS01。在调用(WS01)之前,我启动一个计时器,当webservice调用返回并且结果被分配给一个变量时,我停止计时器,流程如下所示 WCF_B 第一次调用webservice函数时,我发现在步骤(2)和步骤(5)之间需要很长时间

我有一个wcf服务(wcf_a),它调用另一个wcf服务(wcf_B)(目前我使用我的凭据在本地计算机上托管wcf_B–作为windows服务),wcf_B在内部调用IIS上托管的Web服务(WS01)。我已经创建了一个测试客户端,并调用WCF_a->WCF_B->WS01。在调用(WS01)之前,我启动一个计时器,当webservice调用返回并且结果被分配给一个变量时,我停止计时器,流程如下所示 WCF_B

第一次调用webservice函数时,我发现在步骤(2)和步骤(5)之间需要很长时间

我最初的想法是,创建代理需要很长时间,运行Fiddler时,我发现对Web服务的调用已经完成,并立即返回预期结果

之后,我不确定会发生什么,整个过程似乎在等待。(执行步骤(5)几乎需要2.5分钟

一旦调用完成,如果我回过头来,用不同的参数对Web服务进行相同的调用,步骤(5)将在大约1.1秒(所用时间)内完成。我不确定这里发生了什么。几乎可以看出,在步骤(3)中,对结果变量的赋值花费了很多时间,但不确定为什么只在第一次发生这种情况

我还创建了一个测试客户端,并直接调用WCF_B(使用WCF提供的WCFHost托管),虽然调用不会花费很长时间,但与前一个案例相比,第一次调用需要9.8秒,之后大约1秒,调用似乎在分配期间等待

有什么关于识别发生了什么的指示吗


感谢您的帮助

我的第一个猜测是,由于.NET基础设施本身的原因,第一次调用的速度较慢。您的WCF由C#ou VB.NET编译器编译成一种中间语言。在运行时,此代码被编译成本机代码,由系统执行。这被称为即时编译,并且只发生一次在应用程序中第一次执行每个方法时

因此,除非您能够重现您在第二次、第三次或第n次调用服务时描述的行为,否则我认为可以安全地假设这只是预期的行为

  • 您还可以使用探查器来跟踪需要很长时间才能执行的内容
  • 如果希望WCF是问题的根源,请在WCF客户端上启用活动跟踪,并查看是否可以在跟踪的活动列表中发现延迟
  • 1)  Debug.WriteLine(“Call to webservice”)
    2)  Starttimer
    3)  Var result = WS01.Function(xxxx)
    4)  Stop timer
    5)  Debug.Writeline (timetaken)
    6)  Debug.WriteLine(“Call from webservice came back”)