Какой вариант управления сеансом лучше для Asp.net mvc - wcf - BLL - Nhibernate репозиторий - PullRequest
2 голосов
/ 05 марта 2011

У меня есть прикладная архитектура, которая имеет следующие уровни (или проекты c #).

  1. веб-интерфейс (asp.net mvc2)
  2. сервисный уровень (обычная библиотека классов c #)
  3. Уровень модели (обычная библиотека классов c # с сущностями, интерфейсами службы и хранилища)
  4. Уровень данных (реализует интерфейс хранилища, определенный в BLL, и использует NHibernate)

ISessionоткрывается по запросу http и работает нормально.

Теперь я хотел бы добавить слой wcf поверх моего текущего уровня обслуживания.Проект wcf явно вызывает оригинальные классы сервисного уровня.Но как только я это сделаю, фабрика сессий / сессий на asp.net станет непригодной / недоступной.Похоже, wcf работает в совершенно ином контексте, чем asp.net.Поэтому я хотел бы перенести логику инициализации фабрики сессий и управления сессиями в wcf.Как я должен это делать?и даже раньше это хорошая практика?одна из причин, по которой я хотел бы добавить wcf, заключается в том, что я хочу представить операции другим приложениям (которые могут не основываться на http).

Любая помощь, публикация в блоге или ссылка на книгу будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 05 марта 2011

Использовать создание экземпляра сеанса NHibernate для каждого вызова.Проверьте эту статью .Он объясняет, как создать атрибут, который будет прикреплять сеанс к контексту текущего экземпляра.

1 голос
/ 05 марта 2011

вы, вероятно, хотите, чтобы WCF работал в том же контексте, что и asp.net ... попробуйте эту статью: http://msdn.microsoft.com/en-us/library/aa702682.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...