Службы WCF - создать несколько экземпляров при запуске? - PullRequest
3 голосов
/ 06 сентября 2010

Извиняюсь, если раньше об этом спрашивали, но я искал и не могу найти ответ

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

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

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

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

Большое спасибо, Дэйв.

Ответы [ 3 ]

2 голосов
/ 06 сентября 2010

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

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

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

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

1 голос
/ 06 сентября 2010

Если вы размещаете на IIS 7.5 , вам обязательно стоит проверить модуль разогрева приложений .

0 голосов
/ 06 сентября 2010

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

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

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

...