在WCF中,绑定设置的maxConnections和ServiceBehaviors服务限制设置(maxConcurrentCalls,maxConcurrentInstances,maxConcurrentSessions)之间有什么区别?
我正在尝试设置我的WCF服务,但不确定它们如何协同限制连接。
我正在尝试设置我的WCF服务,但不确定它们如何协同限制连接。
有两件事情需要考虑:
serviceThrottling
行为是一个服务端设置,用于确定服务器支持的并发调用、实例和会话数量。这与任何绑定或服务端点无关 - 它是针对整个服务的设置。这允许你调整特定服务可以处理多少并发请求(和/或会话),这取决于诸如服务器“功率”、RAM、CPU 等众多因素。这些值默认情况下保持相当低,以避免服务器被大量请求(不正确或恶意的)“超载”,从而导致其变得无响应。
maxConnections
设置针对 netTcpBinding
(及其“堂兄弟”如 netNamedPipe
和各种 Azure 取向的 net***Relay
绑定)和连接池有关。与 ADO.NET 数据库连接一样,与服务器的 TCP/IP 连接可以进行池化和重用,以减少销毁和重新创建它们的开销。这主要是客户端设置(虽然它也会影响服务器端),而且再次强调:它是特定于 netTcpBinding
(及其“堂兄弟”;都基于 TCP/IP)的,不存在于其他任何绑定中。
请参见:有关 MaxConnections 的更多详细信息,了解该设置的深入解析和洞见。