2010-09-06 4 views
3

Извинения, если это было предложено раньше, но я искал и не могу найти ответУслуги WCF - Создайте несколько экземпляров при запуске?

У нас есть службы WCF, которая обеспечивает до 100 экземпляров - как есть 10000 клиентов, но звонки очень быстро ,

Единственные служебные издержки, которые мы заметили, - это первый вызов экземпляра ... например. при первом вызове любого из экземпляров (или после повторной переработки) происходит заметная задержка по сравнению с любыми другими вызовами.

Есть ли способ «запустить» 100 экземпляров при запуске IIS? Таким образом, удаление этих накладных расходов?

Есть ли способ узнать, сколько экземпляров в настоящее время «активны/инстинктивно» на службе?

Большое спасибо, Dave.

ответ

2

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

Возможно, вы можете передать экземпляр класса сервиса службе ServiceHost при запуске сервера, если вы используете собственный хостинг.

Если вы размещаете в IIS, вам понадобится CustomHostFactory. Существует довольно хорошая статья о том, как это сделать здесь. http://msdn.microsoft.com/en-us/library/bb332338.aspx.

С точки зрения отслеживания экземпляров, вы можете просто увеличить или уменьшить счетчик ссылок в классе обслуживания.

1

Если вы размещаете на IIS 7.5, обязательно обязательно ознакомьтесь с Application Warmup Module.

+0

Вау - какой классный модуль! Отличная находка. –

0

Вы не можете запустить 100 экземпляров при запуске приложения. Это возможно, только если у вас есть singleton service = один экземпляр для всех запросов. Ваш сценарий использует для каждого вызова, поэтому экземпляр создается каждый раз, когда клиент вызывает службу и удаляется после обработки вызова.

Для разморозки вашего приложения используйте модуль Encrico. Если вы не используете IIS 7.5, у вас есть другой вариант. Создайте настраиваемое консольное приложение для отправки вашей службы. Запланируйте это приложение в Планировщике Windows.

Чтобы отслеживать количество запущенных экземпляров, вы можете использовать счетчики производительности. Я не уверен, что WCF предоставляет такой счетчик из коробки, но вы всегда можете создать свой собственный счетчик и работать с ним в пользовательском классе ServiceHost.

Смежные вопросы