La convalida sul lato client è davvero così importante, sempre? [duplicare]

23

Nel corso degli anni in cui ho lavorato nello sviluppo web è stato radicato in me che la convalida sul lato client è assolutamente e completamente necessaria in tutte le applicazioni web. Mi sembra che tutte le persone della professione siano molto ferme nell'utilizzarlo ogni volta. I vantaggi più comunemente citati sono:

  • Visualizzazione istantanea degli errori del modulo
  • Meno richieste non necessarie al server

Ma mentre ci stiamo muovendo verso il web moderno, sempre più applicazioni sono basate su AJAX. Il semplice compito di inviare moduli richiede molto meno tempo rispetto a prima e la convalida sul server e gli errori di restituzione influiscono a malapena sull'esperienza utente.

Potrebbe essere giustificato evitare completamente la validazione lato client (ad esempio) su un'applicazione che contiene solo moduli piccoli e semplici?

EDIT: Direi che la domanda duplicata collegata non cattura lo stesso esempio che sto dando qui. Molto è cambiato dal 2011. Tutte le risposte alla domanda correlata stanno discutendo sull'esperienza utente, mentre nella mia domanda sto descrivendo uno scenario in cui l'esperienza dell'utente non sarebbe stata influenzata.

Quando la convalida sul lato client non migliora più l'esperienza utente, continua a classificarsi allo stesso livello di importanza di prima?

    
posta Alternatex 18.11.2015 - 09:53
fonte

4 risposte

63
La convalida

lato server è assolutamente necessaria. La validazione lato client è puramente un miglioramento dell'esperienza utente poiché la stessa validazione dovrebbe sempre avvenire sul server. Dopo tutto, puoi sempre disabilitare JavaScript o semplicemente postare dati arbitrari direttamente via HTTP.

Se puoi fornire una convalida lato server che offra un'esperienza utente altrettanto semplice della convalida lato client, non hai bisogno della convalida lato client.

    
risposta data 18.11.2015 - 09:57
fonte
25

Anche se sono d'accordo con JacquesB, se puoi fornire lo stesso livello di interazione lato server, allora la validazione lato client non è sempre necessaria - tuttavia alcuni altri punti da considerare.

Punto A (Velocità): la convalida lato client è concepita per essere istantanea, come nell'istante al 100%. Mentre le velocità della rete stanno migliorando, è improbabile che tu possa garantire che questa velocità sia costante e per tutti. La convalida lato client generalmente sovraperforma la latenza di una richiesta di rete.

Punto B (Prestazioni): la convalida lato server, per definizione, viene eseguita sul server. Se stai lavorando su un'applicazione ad alto traffico su un server di budget, salva le richieste aggiuntive, non importa quanto piccolo possa avere un impatto sulle prestazioni complessive. Soprattutto se consideriamo il Punto A dove la latenza può portare a più sottomissioni da parte dell'utente, in attesa di feedback.

Punto C (flessibilità): alcune convalide non sono necessariamente basate sul valore di un campo, ma possono essere basate sul ordine o meccanismo o popolamento di un campo . Ad esempio, se un utente copia e incolla in una password o in un campo di posta elettronica, di solito questo viene annullato da javascript. Questo livello di convalida (che ritengo che questa funzionalità rientri ancora) non può essere raggiunto dal lato server.

Quando la convalida sul lato client non migliora più l'esperienza utente, continua a classificarsi con lo stesso livello di importanza di prima?

Anche se questa è una domanda valida - è un po 'troppo astratta per rispondere ancora. È difficile immaginare nel prossimo anno che questo diventi realtà e, come copre il punto C, la validazione lato client viene spesso utilizzata per convalidare il comportamento degli utenti, non solo i valori, che è difficile immaginare di essere gestiti lato server.

Finalmente , come tutti già sanno. La convalida lato client non è abbastanza robusta da poter essere utilizzata esclusivamente da sola. Quindi, per rafforzare il punto, non fare affidamento sulla validazione lato client senza controllare anche il lato server. Ciò include la convalida e la convalida javascript incluse nelle specifiche HTML5 integrate in determinati tipi di input.

    
risposta data 18.11.2015 - 13:42
fonte
4

Prova le connessioni ad alta latenza

Anche se lanciare rapidamente una piccola richiesta AJAX per eseguire una convalida lato server su richiesta può sembrare altrettanto veloce che farlo con javascript lato client, avendo la stessa esperienza utente, è vero solo perché hai una connessione Internet comparabile .

Alcuni dei tuoi utenti avranno connessioni Internet che per vari motivi sono lente, inaffidabili, ad alta latenza o una combinazione di questo. Per loro, questo approccio alla validazione peggiorerà notevolmente l'esperienza utente.

Spesso è una buona idea eseguire almeno alcuni test di usabilità con una connessione di rete peggiorata artificialmente (ci sono strumenti per simularla), in modo da capire e avere la possibilità di correggere UX in tali situazioni.

    
risposta data 19.11.2015 - 00:01
fonte
1

È comunque una buona idea fare validazione "ben formata" sul lato client ... cioè. ci si aspetta un numero e si incontra un carattere alfa, o non viene fatta una selezione che rende il moot di submittal ... e, naturalmente, campi vuoti.

Effettuare la convalida della logica di business sul lato client sta diventando, come il PO riflette, in qualche modo anacronistico in questi giorni, a seconda dell'architettura. Se l'interfaccia utente è VIEW pura, con pochi o nessun aspetto MODELLO o CONTROLLER, la convalida dei requisiti aziendali per i dati client-side è quasi contraria.

    
risposta data 18.11.2015 - 21:55
fonte

Leggi altre domande sui tag