Prácticas recomendadas para unirse a los servicios de membresía / rol / perfil de nhibernate y ASP.NET
-
05-07-2019 - |
Pregunta
Tengo una aplicación genérica ASP.NET (MVC), que utiliza NHibernate como la capa de persistencia del modelo, y los servicios de Membresía / rol / perfil de ASP.NET como la capa de administración de usuarios.
La pregunta es qué se puede considerar como la mejor práctica para crear enlaces entre los datos del dominio y los usuarios. (Por ejemplo, si quiero crear un sistema de foro, quiero vincular cada tema / publicación a un usuario específico y quiero mostrar al usuario en cada solicitud).
Estas son las posiibilidades que he estado pensando:
-
Almacene el ID de usuario en NHibernate (como tener una columna Guid en todas sus clases de dominio (Publicaciones, Temas, etc.) que necesita hacer referencia a un Usuario) y use GetUser cada vez que necesite el nombre del usuario de el guid (que podría resultar en n + 1 consultas)
Variante B: también puede almacenar el nombre de usuario.
- Use la misma base de datos y cree un Usuario de objeto de dominio mantenido NHibernate de solo lectura, que se asigna a los mismos datos que los servicios M / R / P.
- Olvídese de M / R / P y cree un servicio de administración de usuarios por separado basado en NHibernate
- Olvídate de ambos y usa J2EE / RoR / merb / DJango / etc. (por favor no elija esta opción :))
- otro ...
Solución
Iría al paso 2 (casi, ya que no necesariamente tiene que ser de solo lectura) y crearía un proveedor de membresía personalizado para NHibernate.
Para ahorrar tiempo, puede utilizar uno existente como el de Manuel Abadia .
Con eso conserva toda la potencia de NHibernate (carga lenta, etc.) y también disfruta de los servicios de M / R / P.
Otros consejos
También hay un proveedor de membresía basado en NHibernate en CodePlex
4 chicos de Rolla tienen una excelente publicación si quieren crear su propio proveedor sobre la API de membresía de asp.net: http://www.4guysfromrolla.com/articles/110310-1.aspx