web-dev-qa-db-fra.com

Dans un formulaire d'assistant, les données doivent-elles être enregistrées sur le serveur à la fin de chaque étape ou à la fin de chaque étape?

Je réfléchis à deux approches pour travailler avec ma forme:

  1. Envoyez toutes les données au serveur lorsque l'utilisateur a terminé toutes les étapes.
  2. Enregistrez les données sur le serveur chaque fois que l'utilisateur a terminé une seule étape.

Plus précisément, mon assistant se compose de trois étapes: informations de base, adresses, télécharger l'image. Chacune de ces étapes consiste en de nombreuses manipulations qui méritent leur propre écran.

Dans l'option 1, je crains qu'il y ait des accidents pendant les étapes où les utilisateurs perdent toutes les données qu'ils passent du temps à saisir.

Dans l'option 2, je crains qu'il y ait des accidents pendant les étapes qui provoqueraient des données de corbeille.

Y a-t-il d'autres choses dont je devrais m'inquiéter pour chaque option? En supposant que les deux options ne posent aucun problème technique, quelle approche dois-je adopter?

Appréciez toute votre aide!

8
tiengtinh

Il est basé sur votre condition.

Envoyer toutes les données au serveur lorsque l'utilisateur a terminé toutes les étapes.

Si toutes les informations (informations de base, adresses, image de téléchargement) de l'utilisateur sont nécessaires en fonction de vos besoins, alors c'est la meilleure option.

Pensez-y par vous-même, vous allez envoyer un ensemble de trois données à votre serveur. Alors, lequel des éléments suivants est optimal? a) envoyer le premier ensemble, envoyer le deuxième ensemble, envoyer le troisième ensemble (totalement trois appels de serveur) b) stocker temporairement toutes les données jusqu'à la fin de l'assistant et envoyer les trois ensembles de données au serveur (un appel de serveur )

De toute évidence, l'option (b) sera la meilleure à choisir.

Même si certains accidents (erreur inattendue) se produisent au milieu, cela n'aurait aucun sens si vous stockez simplement des données incomplètes ou à moitié dans votre base de données (car vous avez besoin de toutes les informations). Il est préférable de laisser l'utilisateur continuer à les saisir simplement en conservant les informations sur les champs (maintenir viewstate) puis enregistrer les informations à la fin de l'assistant en les envoyant au serveur.

Enregistrer les données sur le serveur chaque fois que l'utilisateur a terminé une seule étape.

Si toutes les informations ne sont pas obligatoires et un ensemble spécifique de données (l'un des ensembles de données), vous pouvez les envoyer au serveur à la fin de chaque étape.

Si certains accidents se produisent au milieu, vous aurez probablement un ou deux ensembles de données stockés dans votre base de données, donc en fonction de cela, vous donnez les options à l'utilisateur lorsqu'il tentera de refaire le processus. Je sais que c'est fastidieux mais certainement mieux que de lui redemander toutes les informations. Ce n'est en fait pas une bonne pratique, car les performances pourraient être considérablement affectées par autant d'appels de serveur qui peuvent facilement être optimisés avec votre première approche.

Conclusion: Comme je l'ai mentionné précédemment, la réponse est basée sur vos besoins. Donc, si vous vous occupez de l'état d'affichage (en maintenant les entrées utilisateur sur tous les champs), ce serait parfaitement bien ". En fonction des performances, je recommanderais le premier choix" Envoi de toutes les données au serveur lorsque l'utilisateur a terminé toutes les étapes.

5
Ebenezar John Paul

Je pense que le risque que votre backend ait des données de corbeille (dont vous pouvez vous débarrasser) est beaucoup plus acceptable que le risque que votre utilisateur perde certaines de ses données suite à un crash catastrophique.

De plus, avoir des données peut être suffisamment utile pour aider l'utilisateur à pré-remplir des entrées précédemment remplies.

De plus, si vous pouvez obtenir des données partielles sur un utilisateur (comme l'adresse e-mail d'un client), vous pouvez toujours prendre des mesures avec ces informations (comme envoyer un bulletin d'information par e-mail, ou un appel à "venir terminer votre inscription").

6
Bryce