J'ai regardé autour de StackOverflow pour un post similaire et oui, il y avait des discussions sur ce que je vais demander, mais j'ai décidé de commencer un nouveau sujet. Supposons que vous ayez une application qui utilise le modèle de domaine, DDD et beaucoup d'autres modèles de conception. supposons que nous avons un certain nombre de solutions énumérées ci-dessous:DDD & validation côté client
- Solution.Model
- Solution.Repository
- Solution.Services
- Solution.Presentation
- Solution.UI.Web
La couche d'expérience utilisateur sera Solution.UI.Web et nous supposerons que ce sera une application ASP.NET WebForms. Comment appliquez-vous la validation côté client?
Il y a un certain nombre de choses à considérer:
D'abord et avant tout, nous ne devrions pas avoir à frapper le serveur d'applications/base de données (s) pour renvoyer les erreurs de validation au client, nous pourrions toutefois mettre en œuvre La validation côté serveur aussi, mais nous aurons aussi besoin d'une validation côté client. Deuxièmement, nous ne souhaitons pas implémenter les règles de validation sur la couche d'expérience utilisateur. C'est parce que si votre application est une WebApp et que vous décidez aussi de créer un client WinApp, vous devrez à nouveau implémenter les règles de validation -> cauchemar de maintenance. Une approche simple consisterait à implémenter votre logique de validation avec vos objets ViewModel (vues aplaties des entités de votre domaine qui seront envoyées au client), puis à valider ces objets avant de cliquer sur le (s) serveur (s) d'application/de base de données.
Une autre approche, que j'ai vu utilisée plusieurs fois dans différentes applications, consiste simplement à générer une collection de messages d'erreur de validation et à envoyer cette collection au client. c'est bien, mais il y a un problème. juste un simple résumé des erreurs de validation ne fera pas, surtout si vous avez un grand formulaire de saisie de données.
Maintenant, l'environnement ASP.NET MVC rend la vie beaucoup plus facile. vous pouvez utiliser EF + DataAnnotations, et MVC Scaffolding framework peut faire la plupart du travail pour vous. mais c'est le cas si vous voulez créer une application MVC et implémenter votre logique de validation avec le script jquery et java. Mais que se passe-t-il si vous avez besoin d'une approche plus générique pour implémenter un cadre de validation qui peut être utilisé et utilisé dans différentes applications, par exemple WinForms et WebForms? Juste pour clarifier, ce que je cherche est un ensemble de modèles de conception/principes et/ou techniques/cadres pour implémenter un cadre de validation qui peut être implémenté avec votre modèle de domaine et être ensuite appliqué sur vos applications client. ET -> je ne veux pas juste retourner une collection de messages d'erreur de chaîne sur les règles cassées ou quoi que ce soit, je veux pouvoir mettre à jour mes contrôles liés aux données (TextBox, ComboBox, DateTimePicker, etc) lors de l'échec de validation la couche d'expérience utilisateur serait plus intuitive (si vous voulez).
J'ai vu quelques implémentations et frameworks ici et là, et j'ai utilisé la validation côté client ASP.NET MVC depuis un moment. donc ma réponse n'a rien à voir avec la validation MVC ou JavaScript.
P.S Si vous pouviez mentionner des liens de référence, des livres, des articles, des exemples de projets et/ou inclure des extraits de code, ce serait formidable.
TNX, ARMin [:
merci pour votre réponse et les liens.Vous avez raison, j'y ai réfléchi et j'ai travaillé sur quelques exemples d'applications au cours des derniers jours et aujourd'hui je viens de réaliser qu'essayer d'automatiser tout le processus de mise en œuvre de la validation côté client serait un peu exagéré. La bonne nouvelle est que l'espace de noms DataAnnotations peut être utilisé pour implémenter la logique de validation dans les entités de domaine ou les objets de modèle de vue. cela résoudra la centralisation des règles de validation. mais finalement nous allons devoir implémenter la validation sur le client nous-mêmes, ce qui n'est pas un problème. – Nexus