最大出站连接数

时间:2014-01-23 19:44:19

标签: c# wcf web-services service-model

我在.NET 4.0上用c#编写了一个需要发出多个Web服务请求的应用程序。 Web服务请求的性质各不相同,但主要是请求信息。

涉及的类型是System.ServiceModel.ClientBase

的衍生物

连接是在代码中设置的,并使用BasicHttpBindingEndpointAddressCustomBinding等类型来命名。

如何确定可以对ClientBase的衍生产生的最大并发请求数?

我无法找到任何与MaxConnections相关的属性,但我确实遇到了NetTcpBinding.MaxConnectionsConnectionManagementElement.MaxConnection之类的内容,但这些内容似乎都与我的杠杆API兼容。要么我错过了如何使用它们,这是不可用的,或者我不知道在哪里看。

2 个答案:

答案 0 :(得分:2)

WCF是核心网络概念的抽象。对于HTTP绑定,它属于ServicePoint配置,它确定了HTTP并发连接限制之类的内容。

您想要ServicePointManager.DefaultConnectionLimit用于HTTP:

http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit.aspx

您也可以通过配置文件执行此操作:

http://msdn.microsoft.com/en-us/library/fb6y0fyc.aspx

答案 1 :(得分:-1)

这将位于服务主机的.config文件的绑定配置部分。根据所使用的绑定,您可以设置maxConcurrentCalls和maxConcurrentSessions之类的东西,WCF通常会对它们施加默认限制。

现实生活中的例子:

<system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="ServiceBehaviorBasicHttp">
          <serviceThrottling maxConcurrentCalls="1000" maxConcurrentSessions="1000" maxConcurrentInstances="1000"/>
                    <serviceMetadata />
                </behavior>
</system.serviceModel>

或者在代码背后,像这样:

ServiceHost host = new ServiceHost(typeof(MyService));
ServiceThrottlingBehavior throttleBehavior = new ServiceThrottlingBehavior
{
    MaxConcurrentCalls = 40,
    MaxConcurrentInstances = 20,
    MaxConcurrentSessions = 20,
};
host.Description.Behaviors.Add(throttleBehavior);
host.Open();

从这里采取:WCF: How do I add a ServiceThrottlingBehavior to a WCF Service?