在将自定义绑定与 httpTransport 一起使用时,我需要知道默认实例上下文模式。
我知道这个问题以前有人问过:
什么是默认实例上下文模式?
并且指出这取决于配置:
http://suntsu.ch/serendipity/index.php?/archives/191-What-is-the-default-for-WCF-if-InstanceContextMode-is-not-set-explicit.html
就我而言,我们将自定义绑定与 http 传输一起使用:
<customBinding>
<binding name="customBinding" closeTimeout="00:03:00" openTimeout="00:03:00" receiveTimeout="00:03:00" sendTimeout="00:03:00">
<binaryMessageEncoding compressionFormat="GZip">
<readerQuotas maxStringContentLength="2147483647" maxDepth="32" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binaryMessageEncoding>
<httpTransport maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
</customBinding>
我想我们的实例上下文模式是在这种情况下每次调用的,但我不确定......你能评论一下吗?
我终于自己找到了答案。它是每个调用。我对服务进行了负载测试,并通过 perfmon 观察了服务实例计数器。该服务托管在具有 2 个处理器的服务器上。应用负载后,我看到实例数最初持续增加,然后停留在 32 (16*2)。我使用的是默认限制设置,这是Juval Lowy在"编程WCF"一书中写的:
对于每个调用服务,实例数实际上是相同的 作为并发呼叫数
最大并发呼叫数的默认值为:
默认值是处理器(或内核)计数的 16 倍。
我想这证明我的配置(与 httpTransport 的自定义绑定)使服务在每次调用模式下运行。