所以我有以下设置:
VB6应用程序使用一个小型接口dll与我们的新基础架构(服务等)进行通信,并且几乎无法在功能上进行更改。我们选择使用带有这样的绑定的WCF
<system.serviceModel>
<client>
<endpoint address="net.tcp://localhost:8001/HostCommunicator" binding="netTcpBinding" bindingConfiguration="NETTcpBinding" contract="IHostCommunicationContract"/>
</client>
<bindings>
<netTcpBinding>
<binding name="NETTcpBinding" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" receiveTimeout="00:10:00" sendTimeout="00:10:00">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
<startup>
沟通。
对于单个请求,这种方法运行良好且快速,但VB6应用程序的一种模式是一种批处理模式,它为每个处理的文件发送单独的请求。每秒大约有1-4个请求。
这可以正常工作,直到完成了许多请求。在我当前的机器和软件版本上,这是50个请求。如果我启动VB6应用程序,它会再次发出50个请求。在限制之后,应用程序将以99%的CPU使用率挂起。
我们正在使用双工渠道合同。
答案 0 :(得分:5)
你记得关闭你的联系吗?看起来你没有关闭连接,只为每个请求打开新的连接?