小编Sar*_*esh的帖子

DTO和实体是否都有输入验证

我有一个WCF层,我的域模型在这个WCF层后面.我使用Nhibernate作为ORM工具,我所有的业务逻辑/数据访问等都将在这个WCF层之后.

我向我的客户揭露了DTO.我有以下问题

1)我应该创建DTO吗?将实体直接暴露给wcf客户端有什么害处,因为我的实体也会有业务逻辑方法这样做我不得不用WCF属性来破坏我的权利对象,我觉得这样做不好?

2)如果我公开DTO,我应该验证DTO以及实体.如果我只验证DTO,那么我没有为我的Enitity对象提供任何输入验证.这个可以吗?

3)我应该考虑使用Schema验证在Application Service层(WCF层)中验证DTO吗?或应该使用在文章[博客]给出IValidator方法:http://lostechies.com/jimmybogard/2007/10/24/entity-validation-with-visitors-and-extension-methods/如图麦博加德

有时DTO对我来说似乎是多余的,但我可以使用它来从一个或多个实体中获取详细信息.

我将暴露该服务以各种客户端,因此我的DTO将从一些基地DTO具有凭证细节我将我的实际WCF方法调用(可能使用IEndpointBehaviour和IParamInspector)之前检查每个传入请求来导出


编辑

基于响应,我现在同意保留DTO层,这是一个例子,以便场景变得更加明确

假设我在我的WCF应用程序服务层中接受CustomerDetailsDTO的CreateCustomer方法可以由MVC应用程序调用.有一些输入验证,如

输入验证:

i)Name length should be greater than 2 but less than 50
ii) Age is mandatory and cann not be less than 18
(Different other field validations)etc 

业务验证:

There could then be some business rules to check for dupliate customer 
based on say email or some other factor whcih i think should be part of
my Domain business logic and should reside in CustomerEntity class.

输入验证应该仅应用于服务接口层,因为我们从客户端获取DTO,或者它也应该应用于CustomerEntity

c# nhibernate validation wcf domain-driven-design

12
推荐指数
1
解决办法
5591
查看次数

Azure网站上的MSMQ

我有一个现有的ASP.NET Web服务(asmx),我试图进入Azure.Web服务的日志记录组件将消息记录到MSMQ中,并且有一个Windows服务,它读取消息并更新数据库.

这可能是使用Azure Web APP(网站)吗?Web服务代码是否能够在运行时创建消息队列并将消息推入其中?

azure azure-web-sites azure-sql-database

3
推荐指数
1
解决办法
583
查看次数