Подтвердить что ты не робот

Лучшая практика подключения к сервисам nhibernate и ASP.NET/роли/профиля

У меня есть общее приложение ASP.NET(MVC), которое использует NHibernate в качестве уровня сохраняемости модели, а также службы членства ASP.NET/роль/профиль в качестве уровня управления пользователями.

Вопрос заключается в том, что можно считать лучшей практикой для создания связей между данными домена и пользователями. (Например, я хочу создать систему форума, я хочу связать каждую тему/сообщения с конкретным пользователем и хочу отображать пользователя по каждому запросу).

Это позитивы, о которых я думал:

  • Хранить идентификатор пользователя в NHibernate (например, иметь столбец Guid во всех ваших классах домена (сообщения, темы и т.д.), которые должны ссылаться на пользователя) и использовать GetUser каждый раз, когда вам нужно имя пользователя из guid (что может привести к n + 1 запросам)

    B: Альтернативно, сохраните имя пользователя.

  • Используйте одну и ту же базу данных и создайте объект домена, поддерживаемый только для чтения NHibernate, который отображает те же данные, что и службы M/R/P.
  • Забудьте о M/R/P и создайте отдельную службу управления пользователями на основе NHibernate
  • Забудьте об обоих и используйте J2EE/RoR/merb/DJango/etc. (пожалуйста, не выбирайте эту опцию:))
  • другой...
4b9b3361

Ответ 1

Я бы пошел на шаг 2 (почти, поскольку он не обязательно должен быть только для чтения) и создать собственный поставщик членства для NHibernate.

Чтобы сэкономить время, вы можете использовать существующий, например, один из Manuel Abadia.

С этим вы сохраняете полную работоспособность NHibernate (ленивая загрузка и т.д.) и получаете услуги M/R/P.

Ответ 2

Существует также поставщик членства на базе NHibernate по адресу CodePlex

Ответ 3

4 парня из rolla имеют отличный пост, если вы хотите создать своего собственного провайдера поверх API членства asp.net: http://www.4guysfromrolla.com/articles/110310-1.aspx