第一次调用Web服务很慢;紧凑的框架赢得应用程序消费

时间:2009-09-08 20:55:04

标签: web-services compact-framework

我在IIS 7.0上运行.net 2.0 Web服务。

我从紧凑的框架编写应用程序(CF 2.0)中使用此服务。 第一个呼叫需要13秒,所有后续呼叫都超快(1秒以内)。没有数据被缓存。

任何想法如何解决这个问题?

4 个答案:

答案 0 :(得分:5)

CF应用程序下的第一个调用是在创建设备上的所有代理对象时。因此,即使服务器上的对象等已经旋转,每个设备的第一个呼叫将比任何后续呼叫慢得多。

此常见的解决方法是让您的服务公开一些存根方法(如果您愿意,它可以完全没有任何操作),并且当您的应用程序启动时,会生成一个调用此存根的工作线程。这将在后台为您创建服务代理对象,这样当您的应用程序实际调用该服务时,一切就绪。

答案 1 :(得分:3)

第一个调用是加载.NET运行时和JIT正在调用的Web方法。许多部署这类服务的商店并不是第一次真正关心,但是当他们这样做时,他们会有一些东西调用它作为部署的一部分,以便第一次完成。另一种方法是NGEN它。

答案 2 :(得分:0)

它是IIS启动后第一次调用它,还是服务器启动了?
第一次调用IIS总是比较慢。我们曾经通过在重启或IISRESET上制作一个虚拟调用的脚本来解决它,以吸收第一个调用惩罚。

答案 3 :(得分:0)

同样是第一次调用app时,会打开sql-connections。如果存在网络问题,则可能需要更长时间。 在应用程序空闲一段时间后,连接可能会自动关闭。