验证& Web服务的验证规则

时间:2011-06-24 11:50:41

标签: c# javascript web-services validation domain-driven-design

在我参与过的大多数网络服务应用中,我遇到过以下情况:

  1. 我们创建一个域模型(在C#中)。这是应用程序的核心。域模型包含业务和验证规则,用于确定实体在什么条件下有效。
  2. 我们创建“网络服务”图层(在C#/ WCF中)。 此图层定义了由Web服务公开的类似DTO的对象。类似DTO的对象是从域实体的各个部分切片和组合的,通常是粗粒度的。
  3. 在网络客户端(JavaScript和HTML)上,验证规则以不同的格式重复,通常是某种形式的JavaScript验证。
  4. 如何通过Web服务向域客户端公开附加到域实体的验证规则?原因是域模型的验证规则应该定义一次,然后在整个系统的其余部分以某种格式供消费者客户使用。

    到目前为止,我提出的唯一解决方案是从域中生成验证规则,以某种形式的元数据提供,以XML,JSON或类似方式定义。这个问题的一大问题是服务层的DTO和域实体之间的模式是不同的,因此域的验证规则不能直接发送到Web客户端 - 客户端使用不同的模式和域模型。

    因此我的问题是:需要最少量的手动和重复代码的方法是什么,它们在应用程序中的不同模式和层之间进行映射,但允许所有内容解释验证规则?

1 个答案:

答案 0 :(得分:0)

有两种类型的业务规则:

  

特定应用规则

     

域名特定规则。

如何在两者之间划分规则是另一回事,但没有理由不能进行重复检查。

例如,我在我的Web应用程序中使用ViewModel,它使用验证属性进行修饰,通过jQuery简化客户端验证。

我使用AutoMapper将域对象转换为ViewModel,反之亦然。

拥有单独的ViewModel允许我扩展必填字段的域验证,并进行一些特定于应用程序的检查(通过验证属性可以实现这一点)。