1

Newbie question, j'ai un simple client Silverlight 4. Je crée des méthodes côté serveur pour gérer la création/validation de nouveaux utilisateurs. Avant de créer l'utilisateur, j'aimerais valider un certain nombre de choses. Le nom d'utilisateur existe-t-il déjà? L'adresse e-mail est-elle valide? Le mot de passe passe-t-il la vérification de la rigueur? Etc, etc.Silverlight 4, RIA Services Validation côté serveur multi-étapes

Je ne trouve pas vraiment une façon claire de gérer cela et je cherche des suggestions. J'ai plusieurs appels que je dois faire au serveur pour chaque condition que je veux vérifier. Tous les appels sont asynchrones. La façon dont je le vois je peux faire ce qui suit:

  1. Appelez chaque fonction de validation sur le serveur et faites des simulations d'appels synchrones en utilisant des attentes. ew. Essayez d'assembler tous les événements des différentes fonctions de rappel. Ew.
  2. Combinez tous les appels de validation en un seul côté serveur. Cela semble propre maintenant, mais que se passe-t-il lorsque je veux effectuer différentes validations ou différentes combinaisons de validations? Cela signifie plus de nouvelles fonctions. On dirait que cela pourrait devenir un mal de tête d'entretien sur la route.

Existe-t-il une solution élégante qui m'échappe?

Merci.

Répondre

0

Vous pouvez valider des éléments simples (comme si le champ correspond à une certaine expression régulière ou si le mot de passe est suffisamment long) en ajoutant des attributs à vos propriétés dans la classe .metadata générée.

En ce qui concerne les choses liées logique métier (comme si le mot de passe existe déjà, etc.), je vais personnellement avec le choix 1.

Il n'y a rien de mal à cette approche vraiment ... semble beaucoup plus maintenable que votre troisième option, à long terme. Vous n'auriez qu'à changer les méthodes côté serveur que vous appelez dans votre viewmodel, au lieu de changer le code côté serveur. Peut-être qu'à un certain moment, vous aurez différentes règles de validation pour certains types d'utilisateurs? Vous devez y penser. En théorie, vous pouvez utiliser la réflexion sur le serveur et transmettre les noms des méthodes de validation au client, et laisser le serveur déterminer ce qui doit être fait en fonction des noms de méthodes. On dirait une option décente, mais est probablement plus alambiquée que d'autres.

EDIT: Si vous voulez transformer async remet en synchronisation appelle, il est préférable d'utiliser quelque chose comme:

Context.Load(Context.GetUsersQuery()).Completed += (sender, args) => 
{ 
    //Context.Load... next call 
}; 

, au lieu d'attendre des quantités arbitraires de temps.

+0

Merci pour votre réponse. Avez-vous des recommandations sur la façon d'effectuer des simulations d'appels synchrones? Exemple de code, peut-être? – billb

+0

Oui, je viens d'éditer ma réponse et j'ai ajouté quelques exemples de code :) –

+0

Awesome! Merci! – billb

Questions connexes