wcf - MaxConcurrentCalls和MaxConcurrentSessions属性之间的区别

时间:2011-10-11 13:30:07

标签: c# .net wcf

阅读http://msdn.microsoft.com/en-us/library/system.servicemodel.description.servicethrottlingbehavior.maxconcurrentsessions.aspx

http://msdn.microsoft.com/en-us/library/system.servicemodel.description.servicethrottlingbehavior.maxconcurrentcalls.aspx

我的结论是:

MaxConcurrentSessions 是每个客户端的排队会话数(默认值为10) MaxConcurrentCalls 是服务上的活动连接数(默认值为16),即任何一次访问该服务的所有客户端,这意味着如果2个客户端每次执行10次调用,则4将需要等待队列进行处理。

问题:

  1. 我的结论是否正确?
  2. MaxConnections 如何与这些互动?
  3. MaxConnections 优先于 MaxConcurrentX 设置吗?
  4. (注意:我使用的是.NET 3.5)

1 个答案:

答案 0 :(得分:8)

MaxConcurrentCalls 与当前正在执行的服务上的调用次数有关。

无论服务是否正在为连接执行任何操作,

MaxConnections 都与服务上的打开连接总数有关。

例如,如果客户端打开与服务的连接,调用方法,并等待方法返回,它将计入 MaxConcurrentCalls 。一旦服务返回对客户端方法调用的响应,即使您没有关闭客户端代理,它也不会计入 MaxConcurrentCalls ....假设您没有关闭客户端代理,连接将计入服务上的 MaxConnections ,因为您仍然打开了连接,但它当前没有在服务上执行任何操作,因此它不会计算 MaxConcurrentCalls