Best practice per aderire ai servizi di appartenenza / ruolo / profilo nhibernate e ASP.NET
-
05-07-2019 - |
Domanda
Ho un'applicazione ASP.NET (MVC) generica, che utilizza NHibernate come livello di persistenza del modello e servizi di appartenenza / ruolo / profilo ASP.NET come livello di gestione utenti.
La domanda è: quale può essere considerata la migliore pratica per creare collegamenti tra i dati del dominio e gli utenti. (Ad esempio, desidero creare un sistema di forum, voglio collegare ogni argomento / post a un utente specifico e voglio mostrare l'utente ad ogni richiesta).
Queste sono le possibilità a cui ho pensato:
-
Archivia l'ID utente in NHibernate (come avere una colonna Guid in tutte le classi del tuo dominio (Post, Argomenti ecc.) che deve fare riferimento a un Utente) e usa GetUser ogni volta che hai bisogno del nome dell'utente da il guid (che potrebbe comportare n + 1 query)
Variante B: in alternativa memorizzare anche il nome utente.
- Utilizza lo stesso database e crea un utente di dominio non gestito di sola lettura NHibernate, che esegue il mapping agli stessi dati dei servizi M / R / P.
- Dimentica M / R / P e crea un servizio di gestione utenti separato basato su NHibernate
- Dimentica entrambi e usa J2EE / RoR / merb / DJango / ecc. (per favore non scegliere questa opzione :))
- altro ...
Soluzione
Vorrei andare al passaggio 2 (quasi, poiché non deve necessariamente essere di sola lettura) e creare un provider di appartenenza personalizzato per NHibernate.
Per risparmiare tempo puoi usarne uno esistente come quello da Manuel Abadia .
Con ciò mantieni la piena potenza di NHibernate (caricamento lento, ecc.) e goditi anche i servizi M / R / P.
Altri suggerimenti
Esiste anche un provider di appartenenze basato su NHibernate su CodePlex
4 ragazzi di rolla hanno un post eccellente se vuoi creare il tuo provider in cima all'API di appartenenza asp.net: http://www.4guysfromrolla.com/articles/110310-1.aspx