Как ускорить запуск клиента WCF? - PullRequest
3 голосов
/ 05 сентября 2011

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

svcutil.exe /t:xmlSerializer <assemblyPath>

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

1 Ответ

0 голосов
/ 05 сентября 2011

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

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

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

...