Как ускорить запуск клиента WCF?

Я реализовал простой автономный сервис WCF с привязкой basicHttpBinding. Я создал клиента и сгенерировал код-заглушку клиента, используя Add Service Reference. При первом вызове службы клиенту требуется не менее 15 секунд, прежде чем сервер увидит запрос. После прочтения этого кажется, что это происходит из-за JIT-генерации кода сериализации. Я попытался предварительно сгенерировать код, как описано здесь, используя

svcutil.exe /t:xmlSerializer <assemblyPath>

на моем исполняемом клиентском exe, но коде, но получил следующую ошибку: ни один сервисный контракт в сборке не работает с XmlSerializerOperationBehavior,

1 ответ

Прежде всего, вы должны отметить, что если вы используете предварительно скомпилированный код, вы потеряете производительность, так как предварительно скомпилированный код не использует какой-либо платформы, он просто компилирует "нормальный" код.

С другой стороны, JIT действительно получает некоторое снижение производительности при первой компиляции (для создания прокси-класса), но он действительно лучше работает при дальнейших запросах.

Поэтому я предлагаю вам проверить код инициализации для вашей службы и клиента - возможно, вы можете оптимизировать его (15 секунд означает, что вы создаете большое количество объектов из различных сборок).

Попробуйте использовать ленивые классы

Другие вопросы по тегам