Controllo dell'integrità del dominio nell'applicazione

2

È meglio controllare i valori di dominio consentiti su frond end o lasciare che il motore di database gestisca l'integrità del dominio. Ad esempio Se si dispone di un modulo di immissione dati per dipendente, è meglio verificare i valori consentiti nel modulo di immissione dati prima di inviare i dati al database, supponendo che l'I / O di rete non sia un grosso problema. Che cosa succede se ci sono molti controlli da eseguire, il motore dovrebbe essere più veloce o il controllo del valore sul front-end potrebbe richiedere il carico del motore dB?

    
posta Irfarino 13.07.2012 - 15:04
fonte

2 risposte

7

È meglio avere assegni in entrambi i luoghi.

Avere controlli sul lato client per fornire un feedback diretto al client senza dover effettuare il round trip sul server.

Controlla sul lato server perché non puoi fidarti del client (non sai mai se i dati sono stati falsificati, qualcuno ha violato l'interfaccia utente o qualsiasi altra cosa).

    
risposta data 13.07.2012 - 15:06
fonte
1

Per me, il posto migliore per controllarlo è in due punti. Prima sull'interfaccia utente (livello di presentazione), assicurati che i dati immessi soddisfino i requisiti di base. Ad esempio, un utente deve inserire una data in una casella di testo, il livello di presentazione dovrebbe assicurarsi che il valore inserito sia effettivamente una data.

Il secondo posto sarebbe il livello di servizio o, a seconda dell'architettura, il livello aziendale. I dati immessi nell'interfaccia utente verrebbero inseriti in un oggetto e inviati al livello di servizio (o al livello aziendale), che imporrebbe le regole aziendali. Ad esempio, la data inserita deve essere successiva al giorno corrente. Altri tipi di convalida possono verificarsi anche qui, senza voci duplicate e così via.

Una volta che i dati sono stati convalidati dal livello di servizio, questo verrà inviato al repository (o al livello di accesso ai dati) da inserire nel database. Non sono un grande fan di mettere la validazione sul database. Principalmente perché è quasi impossibile eseguire il test dell'unità in modo corretto. Il tipo di convalida fatto su un database dovrebbe essere limitato per garantire l'integrità della chiave esterna o gli indici univoci.

    
risposta data 13.07.2012 - 18:31
fonte

Leggi altre domande sui tag