Замок Виндзор - создание и утилизация контейнера в услугах WCF

Я планирую реализовать Castle Windsor в слое WCF, который является проектом ASP.Net. Когда я просмотрел документацию Castle Windsor, мне сказали, что нам нужно создать контейнер только один раз и утилизировать его после использования. Таким образом, я поражен этим моментом в моем сценарии, где мне нужно создать контейнер в WCF. Сначала я подумал о том, чтобы поместить это в Application_start в global.asax.vb и расположить его в Application_End, но application_end будет вызываться при перезагрузке пула приложений или перезапуске iis и т. Д.

Второе, что пришло мне в голову, это Session_start и Session_end. Снова конец сессии будет работать только для типа Inproc. Также он может быть вызван только после определенного количества простоя.

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

Не могли бы вы, пожалуйста, предложить, какой путь для этого самый лучший.

Заранее спасибо

1 ответ

Решение

Обычно вы настраиваете свой контейнер IOC только один раз за время жизни приложения, и делаете это в Application_Start() кажется вполне разумным. Переконфигурирование его для каждого нового сеанса или для каждого запроса скорее всего просто выполняет ненужную работу; Кроме того, я подозреваю, что это может повредить производительность.

Я не вижу ничего плохого в Application_Start() / Application_End() подход. Если вы боитесь, что это может привести к утечке ресурсов или что-то в этом роде, тогда эти опасения неоправданны.

Другие вопросы по тегам