验证&;Web服务的验证规则

本文关键字:验证 规则 服务 amp Web | 更新日期: 2023-09-27 18:00:23

在我使用过的大多数web服务应用程序中,我都经历过以下情况:

  1. 我们创建一个域模型(在C#中)。这是应用程序的核心。域模型包含业务和验证规则,用于确定实体在何种条件下有效或无效
  2. 我们创建了一个"web服务"层(在C#/WCF中)该层定义了类似DTO的对象,这些对象由web服务公开类似DTO的对象是从域实体的片段中切片和组装的,通常是以粗粒度的方式
  3. 在web客户端(JavaScript&HTML)上,验证规则以不同的格式复制,通常是某种形式的JavaScript验证

如何通过web服务将附加到域实体的验证规则暴露给客户端?原因是域模型的验证规则应该定义一次,然后在系统的其余部分以某种格式提供给消费者客户端。

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

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

验证&;Web服务的验证规则

有两种类型的业务规则:

应用程序特定规则

域特定规则。

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

例如,我在我的Web应用程序中使用了一个ViewModel,它用验证属性进行装饰,通过jQuery促进了无干扰的客户端验证。

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

使用单独的ViewModel可以扩展必填字段的域验证,并进行一些特定于应用程序的检查(可以通过验证属性进行检查)。