После нескольких часов безумного тестирования я смог сократить время первого запуска веб-сервиса до минимума с двух хостов в одном классе IP (ниже 300 мс) ....
Сначала я испытывал начальную задержку в 2-3 секунды при первом вызове веб-службы, а затем любой последующий вызов из того же процесса был очень быстрым.
Ключ к пониманию задержки в моем случае заключался в том, как клиент обрабатывает WEB-ПРОКСИ !!
Это моя новая привязка в файле app.config:
<basicHttpBinding>
<binding name="CreateContextSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="01:00:00" sendTimeout="01:00:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="16777216" maxBufferPoolSize="524288" maxReceivedMessageSize="16777216"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="false">
<readerQuotas maxDepth="32" maxStringContentLength="1048576" maxArrayLength="16384"
maxBytesPerRead="65536" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
Первое выполнение веб-вызова, которое я предполагаю, будет намного медленнее, потому что транспортный канал должен обнаружить конфигурацию прокси при инициализации, чтобы прозрачно подключиться к Интернету. Обычно это не требуется в среде интрасети, поэтому я изменил эти параметры привязки, чтобы избежать использования прокси-сервера по умолчанию (автоматически обнаруживается из настроек проводника):
bypassProxyOnLocal = "ложь"
useDefaultWebProxy = "ложь"
Время соединения при первом вызове теперь значительно уменьшено.
Надеюсь, это поможет.