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

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

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

Вот те позиции, о которых я думал:

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

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

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

Ответы [ 3 ]

6 голосов
/ 16 июня 2009

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

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

При этом вы сохраняете всю мощь NHibernate (ленивая загрузка и т. Д.) И также наслаждаетесь услугами M / R / P.

2 голосов
/ 19 октября 2010

Существует также членство на основе NHibernate на CodePlex

1 голос
/ 25 ноября 2010

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

...