Dove dovrebbe essere scritto il codice di convalida "non campo vuoto" su un'applicazione a 3 strati?

1

Quando si lavora con il modello a 3 strati, dove dovrebbe essere inserito il codice di convalida? per: campi non vuoti, opzioni non selezionate, valori nulli, date scritte errate, ecc.

Per mantenere l'isolamento totale tra un modulo (livello dell'interfaccia utente) e le regole aziendali, questa convalida dovrebbe appartenere a BLL?

È l'unico lavoro per l'interfaccia utente: acquisisci l'input dei dati utente, senza qualsiasi attenzione alla verifica e invialo semplicemente al livello successivo.
Ad esempio, è un campo di nome utente vuoto, che infrange davvero una regola aziendale, o il BLL non ha nemmeno bisogno di preoccuparsi di ottenere valori vuoti, certo, l'interfaccia utente si prende cura.

Potrebbe essere questa convalida superficiale, considerata come una vera regola BL, oppure è sufficiente gestirla sul livello dell'interfaccia utente?

    
posta Shin 17.08.2014 - 00:53
fonte

2 risposte

3

Come riscontrato su più siti Web in cui viene chiesto di compilare un modulo, spesso vengono visualizzati campi obbligatori. Tali campi vengono spesso convalidati tramite Javascript per gli input non vuoti e all-numerici, ad esempio.

Sì, è meglio che il back-end esegua il lavoro sporco, ma l'interfaccia utente assicura che l'input di informazioni sia fornito, quindi l'input viene ulteriormente convalidato nel codice back-end.

MVC

In un'applicazione MVC , avrai la vista valida per i campi vuoti obbligatori e il L'interfaccia utente non consente l'inserimento vuoto nei campi obbligatori. Quindi, una volta fornite le informazioni obbligatorie, appartiene al controller per inviare le informazioni al modello per la corretta convalida.

Per ulteriori informazioni sul modello di architettura MVC, è possibile visitare il sito Web di Martin Fowler sull'argomento.

MVP

In un'applicazione MVP, avrai due approcci : Controllore supervisore e Vista passiva .

Controller di supervisione

La vista è a conoscenza di alcune regole come l'attivazione di un pulsante una volta che tutti i campi richiesti sono stati compilati correttamente. Anche per la convalida del formato! Ad esempio, la tua vista deve presentare controlli adeguati per input diversi come un calendario a discesa, una casella combinata, un numero-su-giù, ecc. Quindi, si assicura di abilitare il pulsante di invio solo e solo se tutto è richiesto le informazioni sono compilate.

Vista passiva

La vista è stupida. Tutto passa sul diritto di informazione al Presenter che convalida nel back-end se l'informazione è buona o meno. È facile configurare un modello di Visualizzazione passiva come un Windows Form o simili, ma chiaramente fuorvianti (IMHO) in un'applicazione web.

MVVM

La vista e il modello di vista sono uniti insieme in modo che il modello di vista possa indicare se tutti i campi richiesti sono stati compilati correttamente e agire di conseguenza sulla vista. Inoltre, è molto più preferibile, dal mio punto di vista, lasciare che sia la possibilità, ad esempio, di abilitare un pulsante quando l'informazione in sé cambia, in base allo stato del modello di vista. Questa è la vista che legge lo stato del modello di vista, e il modello di vista deve quindi dire alla vista se il pulsante deve essere abilitato o meno.

Ci sono anche più modelli di architettura che gestiscono diversamente le cose differenti. Hanno tutti i loro benefici e compromessi. MVVM è ottimo per applicazione WPF , e MVP è la soluzione migliore per < a href="http://www.asp.net/web-forms"> Webforms applicazione, in quanto MVC è la soluzione migliore per l'applicazione Web in generale. Potresti anche preferire un approccio ibrido come MVP-C-VM, ecc. Basato sulle tue conoscenze e competenze. L'idea è di mantenere il codice il più semplice possibile e facile da mantenere il più possibile. Quindi, in pratica, è piuttosto una questione di preferenza basata sulla tua esperienza ed esperienza.

Alla fine, per quanto mi riguarda, mi piace di più avere alcune convalide di base direttamente nella vista (livello dell'interfaccia utente) per offrire un'esperienza utente migliore ed evitare alcuni ritardi che possono verificarsi con il back-end . Quindi, quando l'utente invia effettivamente le informazioni, può verificarsi una convalida più efficace.

    
risposta data 17.08.2014 - 15:20
fonte
2

Dipende da quali sono i tuoi requisiti , ma per la massima validità è preferibile la convalida sul back-end, ma che non preclude la validazione anche nel frontend.

  1. Ti importa se l'input non valido entra nel sistema? causerà il caos? Se è così allora sicuramente dovrebbe convalidare nel back-end, a meno che non sia assolutamente sicuro che non c'è modo per l'input cattivo di svignarsela oltre le convalide del frontend.

  2. Quale feedback riceverà l'utente se la convalida fallisce? Inevitabilmente, al fine di creare utili messaggi di errore, l'interfaccia utente dovrà avere qualche conoscenza di ciò che è sbagliato con l'input a meno che i tuoi utenti non siano a posto in un "ERRORE: INGRESSO MALE" generico. Ora, probabilmente non avrai bisogno di duplicare la logica completa qui se la progetti bene, ma questo dipende anche dall'assistenza che vuoi dare all'utente.

risposta data 17.08.2014 - 11:56
fonte

Leggi altre domande sui tag