2011-07-15 2 views
0

J'ai un formulaire qui, lorsque vous entrez du texte dans un champ et une tabulation, déclenche un événement jQuery pour valider ce champ en appelant l'action de contrôleur correspondante. Par exemple, j'ai un AccountController et une action ValidateField. Lorsque l'utilisateur quitte le champ Nom d'utilisateur, il envoie une requête à/Account/ValidateField. Je vais retourner un résultat JSON basé sur la validation. Ok, alors disons que je veux valider un champ Nom d'utilisateur. Je veux vérifier que suffisamment de caractères ont été utilisés, que le nom d'utilisateur n'est pas déjà utilisé, et que les caractères utilisés sont autorisés. Deux d'entre eux sont faciles. Cependant, j'ai besoin d'accéder à la base de données pour vérifier si le nom d'utilisateur existe déjà.Validation des champs individuels avec AJAX - Où mettre la logique?

Où pourrais-je mettre cette logique? Dans la couche Service?

Répondre

1

Dans un monde où absolument aucune réplication logique métier a lieu:

La longueur minimale d'un nom et de vérifier la validité des charaters sons comme la logique de domaine, ce qui devrait être dans le domaine. Votre appel ajax appelle la couche de service qui à son tour appelle le domaine et valide.

La vérification du nom d'utilisateur n'est pas déjà utilisée, mais la couche de persistance est plus importante, donc je pense que cela aurait plus de chance de se trouver dans la couche de service. La couche de service peut simplement interroger le référentiel pour les utilisateurs avec le nom spécifié et, le cas échéant, elle est invalide.

Dans un monde où nous nous soucions réellement sur la performance:

La vérification de l'unicité de nom d'utilisateur ne nécessite probablement un voyage à la couche de service pour accéder à la base de données. Mais comme pour les deux autres, cela pourrait être fait dans l'interface utilisateur pour enregistrer un voyage dans la couche de service, mais devra ensuite être répliqué dans le domaine. Ceci est préconisée par Udi Dahan:

Command Query Responsibility Segregation

Il suggère la validation de l'interface utilisateur, puis répliquent dans le domaine, mais ne prend pas la peine de donner un message utile du domaine parce que, théoriquement, les seules personnes qui sont likey à aller aussi loin sera les pirates.

Questions connexes