Какой самый простой способ сохранить NHibernate ISessionFactory для веб-страниц и веб-сервисов?
Я попаду в Rhino Commons и Windsor и позже. Я ищу основную концепцию.
Это правильно?
Я пытался найти руководство о том, как обращаться с ISessionFactory как можно проще. Я также ищу решение, которое будет работать как на веб-страницах, так и на веб-сервисах. Примеры, которые я видел, имеют дело с веб-страницами и никогда не затрагивают тему веб-сервисов. Они начинают с создания модуля Http, который создает ISessionFactory и сохраняет его в статической переменной (например, HybridSessionBuilder Джеффри Палермо (jeffreypalermo.com/blog/use-this-nhibernate-wrapper-to-keep-your-repository-classes-simple/) ) или летом NHibernate (www.summerofnhibernate.com, см. StaticSessionManager в сеансе 13). Я также заметил, что, несмотря на то, что ISessionFactory реализует IDisposable, кажется, никто не избавляется от него. Я думаю, они просто позволяют утилизировать сборщик мусора. об этом, когда веб-приложение заканчивается, что произойдет, если IIS будет переработан или веб-сайт станет бездействующим.
Если все это так, то самым простым будет создание некоторого класса со статической переменной, которая используется для хранения ISessionFactory. Этот класс будет создан и использован веб-страницами и веб-сервисами. Каждый раз, когда создается экземпляр класса, я бы проверял, чтобы статическая переменная ISessionFactory не была нулевой. Если это ноль, я воссоздаю это. Таким образом, я поддерживаю ISessionFactory, заставляя что-то, веб-страницу или веб-службу, внутри веб-приложения создавать экземпляр класса. Тот факт, что ISessionFactory находится в статической переменной, означает, что он является общим для каждого экземпляра класса. Так как фабрика сессий является потокобезопасной, это нормально. Пока я не разделяю ISessions, я золотой. Когда ни у кого нет экземпляра этого общего класса, на статическую переменную больше не ссылаются, и сборка мусора уничтожит ISessionFactory.
Является ли это основным принципом поддержания ISessionFactory в живых?