在我参与过的大多数网络服务应用中,我遇到过以下情况:
如何通过Web服务向域客户端公开附加到域实体的验证规则?原因是域模型的验证规则应该定义一次,然后在整个系统的其余部分以某种格式供消费者客户使用。
到目前为止,我提出的唯一解决方案是从域中生成验证规则,以某种形式的元数据提供,以XML,JSON或类似方式定义。这个问题的一大问题是服务层的DTO和域实体之间的模式是不同的,因此域的验证规则不能直接发送到Web客户端 - 客户端使用不同的模式和域模型。
因此我的问题是:需要最少量的手动和重复代码的方法是什么,它们在应用程序中的不同模式和层之间进行映射,但允许所有内容解释验证规则?
答案 0 :(得分:0)
有两种类型的业务规则:
特定应用规则
域名特定规则。
如何在两者之间划分规则是另一回事,但没有理由不能进行重复检查。
例如,我在我的Web应用程序中使用ViewModel,它使用验证属性进行修饰,通过jQuery简化客户端验证。
我使用AutoMapper将域对象转换为ViewModel,反之亦然。
拥有单独的ViewModel允许我扩展必填字段的域验证,并进行一些特定于应用程序的检查(通过验证属性可以实现这一点)。