C# wcf-MaxConcurrentCalls和MaxConcurrentSessions属性之间的差异

C# wcf-MaxConcurrentCalls和MaxConcurrentSessions属性之间的差异,c#,.net,wcf,C#,.net,Wcf,读后 及 我的结论是: MaxConcurrentSessions是每个客户端排队的会话数(默认值为10) MaxConcurrentCalls是服务上的活动连接数(默认值为16),即所有客户端在任何时间访问该服务,这意味着如果两个客户端各进行10次呼叫,则4个客户端必须在队列中等待处理 问题: 我的结论正确吗 MaxConnections如何与这些连接交互 MaxConnections是否优先于MaxConcurrentX设置 (注意:我使用的是.NET 3.5)MaxConcurrentC

读后

我的结论是:

MaxConcurrentSessions是每个客户端排队的会话数(默认值为10) MaxConcurrentCalls是服务上的活动连接数(默认值为16),即所有客户端在任何时间访问该服务,这意味着如果两个客户端各进行10次呼叫,则4个客户端必须在队列中等待处理

问题:

  • 我的结论正确吗
  • MaxConnections如何与这些连接交互
  • MaxConnections是否优先于MaxConcurrentX设置

  • (注意:我使用的是.NET 3.5)

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

    MaxConnections与服务上打开的连接总数有关,无论服务是否正在为连接执行任何操作


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

    。如果我有每呼叫服务实例模式,我可以忽略MaxConcurrentSessions吗?不,我不会忽略MaxConcurrentSessions。根据您的绑定和配置,可以为每个连接自动创建会话。例如,默认情况下,wsHttpBinding将导致为每个连接创建会话。换句话说,每次在客户端代理上调用Open()时,都会创建一个会话。在关闭客户端代理之前,会话不会被销毁。