Silverlight 4,RIA服务多步服务器端验证

时间:2010-07-03 13:40:04

标签: silverlight validation silverlight-4.0 wcf-ria-services

新手问题,我有一个简单的Silverlight 4客户端。我正在服务器端创建一些方法来处理新用户创建/验证。在创建用户之前,我想验证一些事情。用户名是否已存在?电子邮件地址有效吗?密码是否通过严格检查?等等。

我并没有找到一个明确的处理方法,我正在寻找一些建议。对于我想要检查的每个条件,我需要对服务器进行多次调用。所有调用都是异步的。我看到它的方式我可以做到以下几点:

  1. 调用服务器上的每个验证函数,并使用等待执行模拟同步调用。 EW。
  2. 尝试并缝合所有各种回调函数已完成的事件。 EW。
  3. 将所有验证调用合并到服务器端。现在似乎很干净,但是当我想要执行不同的验证或不同的验证组合时会发生什么?这意味着更多的新功能。看起来它可能会成为一种维护问题。
  4. 是否有一种优雅的解决方案可以避开我?

    谢谢。

1 个答案:

答案 0 :(得分:0)

您可以通过向生成的.metadata类中的属性添加属性来验证一些简单的事情(例如,该字段是否适合某个正则表达式,或密码是否足够长),如果您允许,域服务通常会生成。 / p>

对于与业务逻辑相关的事情(如果密码已经存在等),我个人会选择1。

从长远来看,这种方法确实没有什么问题......似乎比第三种方案更易于维护。您只需要更改在viewmodel中调用的服务器端方法,而不是更改服务器端代码。也许在某些时候,您对某些类型的用户会有不同的验证规则?你需要考虑一下。

假设您可以在服务器上使用反射并从客户端传递验证方法名称,并让服务器根据方法名称找出需要完成的操作。看起来像是一个不错的选择,但可能比其他人更复杂。

编辑: 如果您想将异步调用转换为同步调用,最好使用以下内容:

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

,而不是等待任意数量的时间。