Подтвердить что ты не робот

Каков жизненный цикл службы WCF (http) WCF?

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

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

4b9b3361

Ответ 1

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

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

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

Итак, вот оно! Конечно, режим concurrency (для сервисов PerSession и Single) также войдет в игру, чтобы сделать вещи чуть более "интересными"

Ответ 2

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

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

Ответ 3

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