新手问题,我有一个简单的Silverlight 4客户端。我正在服务器端创建一些方法来处理新用户创建/验证。在创建用户之前,我想验证一些事情。用户名是否已存在?电子邮件地址有效吗?密码是否通过严格检查?等等。
我并没有找到一个明确的处理方法,我正在寻找一些建议。对于我想要检查的每个条件,我需要对服务器进行多次调用。所有调用都是异步的。我看到它的方式我可以做到以下几点:
是否有一种优雅的解决方案可以避开我?
谢谢。
答案 0 :(得分:0)
您可以通过向生成的.metadata类中的属性添加属性来验证一些简单的事情(例如,该字段是否适合某个正则表达式,或密码是否足够长),如果您允许,域服务通常会生成。 / p>
对于与业务逻辑相关的事情(如果密码已经存在等),我个人会选择1。
从长远来看,这种方法确实没有什么问题......似乎比第三种方案更易于维护。您只需要更改在viewmodel中调用的服务器端方法,而不是更改服务器端代码。也许在某些时候,您对某些类型的用户会有不同的验证规则?你需要考虑一下。
假设您可以在服务器上使用反射并从客户端传递验证方法名称,并让服务器根据方法名称找出需要完成的操作。看起来像是一个不错的选择,但可能比其他人更复杂。
编辑: 如果您想将异步调用转换为同步调用,最好使用以下内容:
Context.Load(Context.GetUsersQuery()).Completed += (sender, args) =>
{
//Context.Load... next call
};
,而不是等待任意数量的时间。