Необходимо быстро и часто обмениваться данными между двумя .NET-процессами

Итак, у меня есть следующая установка:

  • Приложение VB6, использующее .NET dll, с одной стороны
  • .NET Service на другом конце

Приложение 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%.

Мы используем контракт дуплексного канала.

5
задан John Saunders 1 August 2011 в 15:51
поделиться