DDD utilizzando un ORM e un server Active Directory per la persistenza

2

Con Domain Driven Design si modellerebbe il dominio. Uno quindi userebbe un ORM di qualche tipo per prendersi cura della persistenza. Supponiamo che tu abbia un'entità Product che ha un Name , SKU e un Owner . Questo verrà modellato e quando viene creato un nuovo Product è necessario passare tutti i 3 campi come parametri nel costruttore.

Quanto sopra sarà mantenuto da Fluent NHibernate usando un database Postgresql.

Il Owner del prodotto è di tipo Account . Account è un'entità che contiene ID , FirstName , LastName , Email , Phone , Username , Password e Address .

Il Account deve essere persistente in due database. Deve persistere in Application Database ( Postgresql Server ) in modo che possa esistere un collegamento tra Product e Account . Tuttavia, deve anche essere salvato sul server 389 Active Directory . Questo server AD contiene tutti i record utente e le loro informazioni.

Non voglio duplicare tutti i dati che sono memorizzati sul server Active Directory e salvarlo su Application Server . Sulla Application Server voglio salvare FirstName , LastName , Email e ID .

Se un utente sceglie di modificare i dettagli di Account , aggiornerà quindi Active Directory Server e i campi memorizzati in Application Server .

es. Un utente si collega e vuole cambiare la propria password. Il campo password è memorizzato solo in Directory server . Utilizziamo la libreria di servizi di directory Novell LDAP per accedere alle informazioni da Directory Server .

Nel nostro Infrastructure Layer abbiamo un progetto in cui abbiamo implementato l'accesso al server AD. Quindi, nell'esempio sopra di cambiare la password, parleremo solo con il server AD poiché non ci sono password salvate in Application Server .

Ora la domanda è, nel mio dominio per creare un modello contenente:

ID , FirstName , LastName , Email , Phone , Username , Password , Address

o

ID , FirstName , LastName , Email

Ci sarà una schermata nell'interfaccia utente in cui è possibile modificare tutti i dettagli di Account .

    
posta Shane Van Wyk 08.04.2015 - 23:20
fonte

2 risposte

1

Ho fatto qualche ricerca in più sullo sviluppo del dominio.

Bounded Contexts sembrava aiutarmi a risolvere questo problema.

Ho iniziato a modellare il sistema senza preoccuparmi della persistenza, come invece dovresti fare con DDD.

Nel livello di infrastruttura, ho separato i dati da salvare.

I dati che sono correlati a User e Organisation ad esempio, verranno salvati in LDAP dove tutti gli altri dati saranno salvati nel database dell'applicazione.

Abbiamo praticamente scritto un Service che i servizi applicativi possono utilizzare.

    
risposta data 14.05.2015 - 11:25
fonte
1

Penso che tu stia calpestando terreno pericoloso qui.

Da un lato hai un sistema di autenticazione LDAP che ha anche il nome utente e ulteriori informazioni in esso.

D'altra parte hai un concetto di dominio del proprietario di un prodotto.

La tentazione di vedere il servizio LDAP come un semplice repository per i proprietari dei prodotti, ma non penso che lo sia davvero. Avrai tutti i tipi di utenti in AD, solo alcuni dei quali saranno proprietari di prodotti nella tua app e in futuro potresti avere proprietari di prodotti nella tua app che non sono in AD. (ad esempio qualcuno lascia la compagnia e viene rimosso da AD?)

Vorrei duplicare i dati e disporre di un set di modelli AuthenticatedBy in più per collegare i proprietari dei prodotti al sistema LDAP / AD.

    
risposta data 14.05.2015 - 11:39
fonte

Leggi altre domande sui tag