Итак, у меня есть следующая установка:
Приложение 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%.
Мы используем контракт дуплексного канала.