对Async WCF的每次其他调用都很慢

时间:2011-02-15 10:07:29

标签: c# jquery wcf asynchronous

我正在使用Rick Strahl撰写本文中的代码示例:http://www.west-wind.com/weblog/posts/324917.aspx来对WCF服务进行异步调用,这非常有用。

我的问题是: 第一次调用WCF服务需要20ms左右,而下一次需要大约1秒20ms(完全相同并接收完全相同的数据)。如果我重复这个过程,结果总是一样的。每隔一次通话比第一次通话时间长一秒。

我已尝试在我的服务上设置InstanceContextMode:

  [ServiceBehavior(IncludeExceptionDetailInFaults = true, InstanceContextMode = InstanceContextMode.PerSession)]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public abstract class AjaxPostBack : IAjaxPostBack

我还在服务中调用的方法中设置了计时器,每次结果都是相同的(当然有些ms差异,但没什么重要的)

"JSON_Took":"00:00:00.0012939","Set_took":"00:00:00.0000274"

(这些值--JSON_Took& Set_took - 是方法背后的定时器。所以不是来自客户端 - 服务器 - 客户端的总时间。这只是为了说明实际代码不是耗时的问题)

有什么想法吗?

如果您需要更多信息,请与我们联系。

---- 有趣的更新 ----

我下载了IE9 RC和Firefox(我一直在Chrome中测试) 我的结果来自不同的浏览器:

Firefox :所有通话在大约1秒20ms到1s 30ms内保持一致

Chrome :其他所有来电都以Firefox的速度触发,其余的则以1秒的速度快速启动

IE9 :所有通话几乎没有任何时间(~20ms)

Opera :与IE9(~30ms)几乎相同

这是一个webkit问题吗? (我使用$ .ajax来调用WCF)

1 个答案:

答案 0 :(得分:3)

我不会依赖来自devserver的时间。如果将服务部署到IIS(甚至IIS Express)会发生什么? VS2010 DevServer在定时方面不如服务器可靠,也不是生产性能的良好指标。

Here's a good article(尽管略显过时)讨论了IIS与Visual Studio Web服务器(又名卡西尼)之间的差异。

很高兴这有帮助!