Svantaggi dell'utilizzo del layer framework entità direttamente nel livello di presentazione (ASP.NET MVC) saltando il livello di servizio

2

Nella mia azienda, stiamo progettando di creare più di un'applicazione web su un singolo database. Il design proposto di ognuna di queste app è - ASP.NET MVC come livello di presentazione, API restful come livello di servizio (funziona anche come dominio / livello aziendale) e Entity framework (EF) come livello di accesso ai dati.

Ma molti dei miei colleghi stanno chiedendo se potremmo usare l'EF direttamente nel livello di presentazione.

Posso spiegare la separazione tra preoccupazione e manutenibilità, ma c'è un altro difetto innato nel consumare EF direttamente quando più app consumano lo stesso DB

    
posta Nitin Kumar Mishra 22.01.2018 - 17:09
fonte

2 risposte

2

Hai due scelte generali di architettura. Puoi:

<Data Access> <--> <ASP.NET MVC Web API> <-- REST --> <Angular/SPA in Browser>

o

<Data Access> <--> <ASP.NET MVC>  <-- HTML --> <Web pages in browser> 

Oppure puoi fare entrambe le cose e avere un'applicazione ibrida che serve pagine HTML come uno scheletro HTML, ma le popola con i dati provenienti da una sorgente REST usando Angular o altri framework di associazione dati.

Non c'è nulla di sbagliato in modo sbagliato nel consumare classi EF (o metodi Business Layer) e pubblicare pagine ASP.NET MVC direttamente, se non si richiede la flessibilità offerta da un framework client come Angular.

Avrai bisogno dell'approccio REST se parlerai con due frontend diversi, come una pagina web e un'applicazione mobile nativa. Ogni frontend utilizzerà l'interfaccia REST comune.

    
risposta data 22.01.2018 - 17:25
fonte
2

Penso che dovresti distinguere tra livelli e livelli . Un livello è solo un livello di astrazione nel codice. Un livello è quando questo strato è fisicamente separato come servizio di rete, ad es. un'API REST.

Hai bisogno di un dominio / livello aziendale nel codice? Sì molto probabilmente, a meno che tu non abbia un'applicazione CRUD semplice molto . È necessario separare questo livello in un livello separato a cui si accede tramite un'API REST? Dipende. Tale livello è necessario quando si hanno più client indipendenti che accedono allo stesso livello aziendale e si desidera incapsulare e proteggere questo livello per i client. Ma se i client sono sviluppati dallo stesso team sulla stessa piattaforma, potrebbe essere più semplice utilizzare una libreria condivisa per la logica di business.

La separazione tra preoccupazioni e manutenibilità può essere fornita dai livelli, quindi non è un argomento per trasformarla in un livello.

L'aspetto negativo dell'utilizzo di una libreria condivisa è che richiede che tutti i client si trovino sulla stessa piattaforma e che una modifica alla logica aziendale richieda la delega di tutti i client.

    
risposta data 22.01.2018 - 17:43
fonte

Leggi altre domande sui tag