Scrittura della logica aziendale in vista

1

La scrittura di business logic nella vista (.cshtml) di un'applicazione MVC può influire sulle prestazioni (ad esempio, tempo di caricamento)? È il modo preferibile o ci sono altre buone pratiche?

    
posta Vishal Bhatt 12.11.2016 - 08:10
fonte

2 risposte

3

Scrivere qualsiasi logica in una vista è un pattern anti.

Quando scrivi mvc devi creare un modello che corrisponda al tuo 100% ui. Questo modello sarà separato dal tuo modello di database.

Dovresti utilizzare editortemplated e displaytemplates ogni volta che hai un elenco di qualcosa nel tuo modello. Se hai un elenco di Foo chiamato foos fai un

@Html.EditorFor(m => m.Foos)

Che invocherà il modello di editor per Foo per tutti gli elementi nell'elenco. Se vedi che stai facendo una foreach probabilmente stai facendo qualcosa di sbagliato. Continua questo N livelli di profondità.

    
risposta data 12.11.2016 - 09:32
fonte
0

Innanzitutto, come già sottolineato da Esben nella sua risposta: non è davvero una buona idea mettere la logica aziendale in una prospettiva, perché va contro il principio di progettazione di un MVC :

  • la vista mostra il contenuto del modello all'utente
  • il Controller gestisce l'input di interazione per manipolare il modello o modificare la vista
  • il Modello gestisce i dati e la logica del dominio.

La logica aziendale nella vista è una cattiva pratica da evitare.

Ulteriori pensieri

Quando diciamo la logica aziendale, è davvero qualcosa che è correlato al contenuto del modello (ad esempio "superiore alla media", "il più grande", ...) e non solo su come presentare i dati del modello (ad esempio un mappatura tra valori e colori).

Se il modello è gestito in un altro processo di sistema (cshtml in un processo rispetto alla logica del modello e agli accessi db in un altro processo), o se l'accesso alla modellazione implica il coinvolgimento di un altro server, la logica aziendale nella visualizzazione richiederebbe molto altro costose chiamate / richieste API (es. più latenza di rete, più trasferimenti di dati, stessi dati letti più volte), che se la logica necessaria fosse già calcolata all'interno del modello.

    
risposta data 12.11.2016 - 13:42
fonte

Leggi altre domande sui tag