【问题标题】:Using DTOs - Guidance使用 DTO - 指南
【发布时间】:2012-03-15 12:44:08
【问题描述】:

寻求指导。

我正在构建一个应用程序,SL4,使用 WCF 作为后端服务。我的 WCF 服务层位于域模型之上,我正在使用组装器将域实体转换为筛选特定的 DTO。

我有一个屏幕(与安全相关),其中显示了用户和他们所属的组,现在用户可以为用户添加和删除组,之后他们可以点击应用按钮。只有点击此应用按钮时,才会提交更改。

目前我有一个 UserDetailDto 被发送到客户端以填充屏幕,我的意图是点击 Apply 将 UserDetailUpdateDto 发送回服务器以执行对域模型的实际更新。

这听起来可以开始吗?

如果是这样,当用户在客户端进行更改时,我的 UserDetailUpdateD 是否应该发回更改,即。添加了什么,删除了什么。

不确定,指导会很棒。

【问题讨论】:

    标签: wcf silverlight dto


    【解决方案1】:

    当对需求和部署环境知之甚少时,指导总是很棘手。但是,您的方法对我来说听起来很合理。我喜欢这个的关键点:

    1) 您将 DTO 与域实体分开。在小型简单的应用程序中,通过网络发送实体可能很好,但随着复杂性和功能的增加,它们可能会开始相互干扰。

    2) 您正在区分查询对象 (UserDetailDto) 和命令对象 (UserDetailUpdateDto)。同样,这两个通常可以使用单个对象来满足,但是随着复杂性/功能的增加,您将开始使它们膨胀,因为该对象正在为两个主服务器服务(查询对象将在客户端使用,命令对象将在客户端使用服务器)。我使用的约定是所有命令 DTO 都以动词开头(例如 UpdateUserDetail),它只是更容易在客户端从“方法”中排序“数据”。

    如果 SL 应用程序可能会变得更大且屏幕逻辑更复杂,则可能值得研究模型-视图-视图模型 (MVVM) 模式。它允许您将屏幕设计与屏幕功能分开。它为围绕开发团队分配工作提供了更多的灵活性,并更好地支持单元测试。

    就在 UpdateUserDetail 对象中返回的内容而言,我认为这应该以在域模型(或位于域模型之上的 WCF 服务)中最容易使用的内容为指导。一般来说,DTO 越小越好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 2014-12-16
      • 1970-01-01
      • 2016-05-15
      相关资源
      最近更新 更多