Интересно, что является лучшим способом управления NHibernate Session Context при использовании слоя данных NH из контроллера Xsockets. В частности, я ссылаюсь на самостоятельное приложение wininservice/console или роль рабочего агента Azure, , где HTTPContext недоступен. Конечно, всегда есть возможность создавать и удалять сеанс для каждого звонка, но это означает, что вы поражаете производительность, поэтому лучше повторите сеансы повторного использования. Мой контроллер предоставляет API для операций CRUD в базовом хранилище NH и подталкивает обновления соответствующим подписчикам, когда некоторые записи обновляются в БД.XSockets.Net - как управлять NHibernate Session Context
Ваши идеи оценили :)
Спасибо Уффе. К счастью, я только собираюсь написать эту реализацию, но я хочу повторно использовать слой данных, используемый в другой службе. Итак, ваше предложение состоит в том, чтобы создавать и распоряжаться сеансом при каждом вызове методов контроллера? Сессия NHibernate - это больше, чем просто соединение с SQL, которое вы, скорее всего, получаете из пула. Это кэширование сущностей и т. Д. Из опыта я знаю, что создавать его каждый раз и когда это возможно, используя контекст ThreadStatic, дает значительный прирост производительности. –
У меня никогда не возникало проблем с получением экземпляра службы внутри метода, инкапсулированного в область использования. Образец на pastepin http://pastebin.com/trv9TRCP – Uffe
Этот образец представляет собой службу разрешения контейнеров NInject IOC. Я говорю о контекстной политике сеанса NHibernate: http: //nhforge.org/wikis/reference2-0en/context-sessions.aspx –