asp.net – 什么项目层应该屏幕DTO的生活?
|
我有一个项目,我们使用屏幕DTO在服务层和表示层之间封装数据.在我们的例子中,表示层是ASP.Net. 知道DTO的唯一的类是服务层类和称为这些服务并显示DTO的Pages / Controls. DTO几乎总是Page / Control特定的,所以我觉得他们属于表示层,但这意味着服务层必须参考表示层才能使用DTO. 我几乎认为服务层应该返回更丰富的对象(而不是域实体),然后表示层可以将这些对象和每个页面/控制关系的映射到非常特定的DTO. 这是一个接口声明和一个DTO,所以你可以看到我在说什么: public interface IBlogTasks
{
BlogPostDisplayDTO GetBlogEntryByTitleAndDate(int year,int month,string urlFriendlyTitle);
}
public class BlogPostDisplayDTO
{
public string Title { get; set; }
public DateTime PostDate { get; set; }
public string HtmlContent { get; set; }
public string ImageUrl { get; set; }
public string Author { get; set; }
public int CommentCount { get; set; }
public string Permalink { get; set; }
}
编辑 这是另一个代码示例来描述域模型不涉及的用例.也许这会澄清一些事情.我相信我已经超载了DTO的含义.我不是在谈论通过电线传输对象的功能的DTO.我正在创建DTO以将通信与我的服务层之间的合同正式化. public interface IAuthenticationTasks
{
bool AuthenticateUser(AuthenticationFormDTO authDTO);
}
public class AuthenticationFormDTO
{
public string UserName { get; set; }
public string Password { get; set; }
public bool persistLogin { get; set; }
}
假设我的身份验证突然需要一个IP地址参数.我现在可以将该属性添加到DTO,而无需更改我的合同界面. 我不想将实体传递到我的演示层.我不希望我的代码能够去BlogPost.AddComment(new Comment()) 解决方法甚至认为“DTO”的规范用例是更多的可串行化的对象,可以通过电线传递“,在这种情况下,你更多地是指”presentation-transfer-objects“或”view-models“.通常对于我们的项目来说,这些活动的答案是“翻译”代码将DDD域模型映射到PTO类.如果那是在Prensenation层(可能不是那么好的答案)层是我宣布PTO的地方.但是,通常情况下,它为您提供翻译的“服务”,这意味着“服务”和“演示”层都需要引用PTO,并且(通常)会将其声明分开,中性项目/汇编/命名空间/表示层和服务层可以引用的任何东西. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 当HTTPContext .Current为Nothing时如何使用Ser
- asp.net – 为什么不能在发布模式下构建网站?
- asp.net – “填充无效,不能删除”异常WebResource.axd
- Asp.net会话到期重定向到登录页面
- asp.net-mvc – 如何从mvc中的控制器中设置隐藏字段的值
- ASP.NET MVC 2 – ViewModel前缀
- asp.net – 为了使用jQuery查找它而唯一的目的是分配一个cs
- asp.net:如何在button onclick上使用eventargs进行参数传递
- asp.net-mvc – 在ASP.NEt MVC 3中传递Html.BeginForm()中D
- asp.net – 多个项目Visual Studio 2015 npm
- UnobtrusiveJavaScriptEnabled键在.NET中的作用是
- asp.net-mvc – 动作命名约定
- 文件上传 – 如何解决邮递员中的文件上传错误?
- asp.net-mvc – ASP.Net MVC支持嵌套资源?
- asp.net – 有没有办法知道是否有人为您的网站添
- api – 通过msxml2.ServerXMLHTTP提供身份验证信
- asp.net-mvc – 为什么ASP.NET MVC使用会话状态?
- asp.net-mvc – MVC捆绑:错误403
- asp.net – Page_ClientValidate()与多个Validat
- BreezeJS vs JayData for ASP开发ASP.NET MVC
