Зачем использовать ISessionManager из средства CastleWindsor NHibernate?
Я новичок как в NHibernate, так и в Castle Windsor, но текущее приложение, над которым я работаю, использует встроенный в Castle Windsor инструмент уровня интеграции 2, то есть использует ISessionManager.
Я сравнил то, что мне нужно сделать, чтобы вручную сохранить мои данные и использовать ISessionManager, и я на самом деле не пишу меньше кода. Мой вопрос: зачем мне нужен ISessionManager? Какие преимущества это предлагает мне? Каковы недостатки использования ISessionManager?
1 ответ
Ну, во-первых, вам не нужно управлять сессиями самостоятельно. В веб-среде вы обычно хотите охватить ваш сеанс pr-запроса. Менеджер сеансов гарантирует, что первый вызывающий "OpenSession" начинает новый сеанс, в то время как вложенные вызовы получают тот же сеанс при вызове "OpenSession". Вы можете сделать то же самое самостоятельно, запустив / закрыв сеансы в модуле http или используя шаблон AOP, заметьте, что выполнение этого подразумевает, что вы работаете с одной базой данных, а обработка нескольких баз данных самостоятельно становится немного более утомительной. ISessionManager обрабатывает несколько баз данных так же аккуратно, как и одну.
+ Обрабатывает сессии для вас. Легкая, ненавязчивая поддержка Simple Easy для работы с несколькими базами данных. Независимость от хостинга (работает с nservicebushosting так же хорошо, как и с IIS)
- немного больше стандартного кода в вашем DAL/ репозитории / как вы это называете