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

Yng*_*sen 8 c# wcf jquery 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
Run Code Online (Sandbox Code Playgroud)

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

"JSON_Took":"00:00:00.0012939","Set_took":"00:00:00.0000274"
Run Code Online (Sandbox Code Playgroud)

(这些值--JSON_Took和Set_took - 是代码隐藏方法中的计时器.所以不是来自客户端 - 服务器 - 客户端的总时间.这只是为了说明实际代码耗费时间不是问题)

有任何想法吗?

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

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

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

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

Chrome:其他所有通话都以Firefox的速度发出,其余的则以1秒的速度快速启动

IE9:几乎没有任何时间所有呼叫都是一致的(~20ms)

Opera:与IE9差不多(约30ms)

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

Dav*_*ter 3

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

这是一篇讨论 IIS 和 Visual Studio Web Server(又名 Cassini)之间差异的好文章(虽然有点过时)。

很高兴这有帮助!