Замок Виндзор - создание и утилизация контейнера в услугах 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()
подход. Если вы боитесь, что это может привести к утечке ресурсов или что-то в этом роде, тогда эти опасения неоправданны.