在服务器和客户端之间共享DataAnnotations MetaData类

时间:2011-04-21 17:54:54

标签: wcf validation asp.net-mvc-3 data-annotations

我很好奇这是否是一个疯狂的想法。现在我有一个典型的结构如下

客户端(目前是asp.net mvc3,但未来可能是任何东西)
WCF服务层
域层
数据层

我在域层中完成了一些非常复杂的验证。 DataAnnotations不够用。因此,验证以更手动的方式完成,但仍然通过服务层传递回客户端。

但是,DataAnnotations有一个简单的验证(字段不为空,必须大于0,不能超过10个字符)。

这是我的计划。我将分发一个具有DTO对象的基本DataContract dll。这是因为我有多个WCF服务。我计划创建一个具有带有DataAnnotations属性的伙伴元数据类的程序集。然后,该类用于我的DTO和我的域实体。这样我就可以在不通过Web服务的情况下获得简单的验证,但它仍然在一个地方。但是,对于那些不支持它的客户端(例如java),如果他们通过WCF服务,他们仍然会得到验证。

最初我不想向客户端分发任何内容,但为了在服务之间共享DataContracts,无论如何我都要这样做。

这是一个疯狂的想法吗?我知道其他人只是做了一些双重验证。有没有更好的方法来实现这个?我已经对它进行了测试并确实有效,但我不确定当我的整个模型构建完成时它的扩展程度如何(现在只是原型设计)。

由于

1 个答案:

答案 0 :(得分:0)

这种方法没有错。将您的DataContracts分离到一个单独的程序集并与.NET客户端共享这些合同是我认为的最佳实践,听起来您只是更进一步并共享验证程序集。

我还与.NET客户端共享我的ServiceContracts,这样客户端就不必添加服务引用,这就是icky poo。