L'accesso ad Active Directory deve rispettare la mia architettura software?

0

Ho una soluzione con un'architettura di cipolla che usa un progetto MVC asp.net. Accedo anche ad Active Directory e mi chiedevo se fosse necessario accoppiare in modo univoco l'accesso ad Active Directory? Dì che ho:

  1. POCO di Entity Framework
  2. Repository
  3. servizio
  4. MVC

Il modo in cui lo faccio attualmente è aggiungendo le classi di operazioni di Active Directory direttamente nella cartella Modello di MVC. Dovrei invece aggiungere questo accesso al mio repository? Non penso che la mia azienda cambierà il suo servizio di directory, ma chi lo sa ...

    
posta Flexabust Bergson 14.09.2017 - 17:22
fonte

1 risposta

1

Quello che chiedi è supponente, quindi la risposta è: dipende!

La concezione principale di Onion Architecture è che le dipendenze puntano verso l'interno del cerchio ma mai fuori. Dovresti scegliere le responsabilità dei livelli dell'applicazione. Come hai scritto:

The way I currently did it is add Active Directory operations classes directly into MVC's Model folder.

Questo suona come se fosse una responsabilità del livello applicazione, che naturalmente può essere buono o cattivo, solo tu puoi decidere.

Ma vedo tre modi principali per implementarlo:

  1. Livello applicazione: nel livello dell'interfaccia utente al momento attuale

  2. Livello di servizio: accedi all'AD dalle tue classi di servizio, in questo modo puoi avere un accesso "condiviso" di detta funzionalità

  3. Livello repository: allontana tutte le query / gli aggiornamenti correlati a AD necessari.

Se la tua paura è che la tua azienda cambierebbe l'autenticazione da AD per dire TACACS, puoi avere implementazioni di IAuthenticationEngine in un assembly che riguarda il livello di infrastruttura.

Per riassumere tutto questo: questa è una preoccupazione per l'infrastruttura, quindi dovrei semplicemente separare queste responsabilità dai punti 2 o 3, forse 2 e 3. Di nuovo tutto dipende dalle tue esigenze.

Per rispondere alla tua domanda in commento: Vedo che sei caduto nella tipica trappola di seguire gli esempi presentati su The Onion Arch. Dato che al momento hai il flusso del tuo programma, stai solo creando livelli di astrazione senza alcun reale vantaggio se non la difficoltà. Ti suggerisco di leggere questa risposta che ho scritto su StackOverflow, su una domanda simile che stai affrontando in questo momento. In breve, è su di te che potrebbe non è davvero necessario che il codice scorra tutti questi livelli. Usa solo le sezioni verticali dei livelli.

    
risposta data 14.09.2017 - 17:42
fonte

Leggi altre domande sui tag