2009-06-24 2 views
12

У меня есть установка контейнера инъекций зависимостей в моем приложении, и я думаю, что создание контейнера каждый раз, когда приходит запрос службы WCF, будет неэффективным.Каков жизненный цикл службы WCF (http) WCF?

Может ли кто-нибудь объяснить мне, для службы WCF, работающей с http/IIS, каков жизненный цикл службы? Если я смогу это выяснить, я смогу принять обоснованное решение о том, где контейнер должен храниться, создаваться, уничтожаться и т. Д.

ответ

23

Если ваш InstanceContextMode является PerCall, класс обслуживания будет создан с нуля для каждого входящего запроса, а затем удаляется, когда это будет сделано.

Если ваш InstanceContextMode является PerSession, класс обслуживания будет создаваться и использоваться для обслуживания одного конкретного клиента на время сессии (или до тех пор, «InactivityTimeout» не встречается, или произошла ошибка).

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

Итак, у вас оно есть! Конечно, режим параллелизма (для PerSession и Single услуг) также входит в игру, чтобы сделать вещи просто немного более «интересным»

+0

Ницца! Спасибо, именно ответ, который я хотел. –

+2

Чтобы установить это, вы добавляете атрибут ServiceBehaviorAttribute в свой класс обслуживания. Это мое, которое хорошо сочетается с ninject: [ServiceBehavior (InstanceContextMode = InstanceContextMode.PerCall)] – Twisted

0

Это зависит от вашего сервисаBehavour. В частности this и this.

1

Как вы говорите, что вы пытаетесь интегрировать WCF службы экземпляра с контейнером инъекции зависимостей, Я просто хотел бы сказать, что у меня был очень положительный опыт, используя Castle WCF Integration Facility, чтобы сделать именно это.

Специфично для контейнера для инъекций зависимостей Castle Windsor, но с открытым исходным кодом вы можете заглянуть внутрь и понять некоторые из предлагаемых проблем и решений.

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