首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DTO和响应对象的区别?

DTO和响应对象的区别?
EN

Stack Overflow用户
提问于 2019-09-23 07:32:18
回答 2查看 11.1K关注 0票数 2

在软件体系结构中,响应对象和DTO之间有什么区别?假设我想在目录中得到一份产品清单。

如果是ProductDTO,那么ProductDTO类有何不同?Product通常只是一个带有日期时间、错误日志或guid的包装器,或者主要区别是什么?如果没有一个确切的或多重的答案,希望听到业界的最高原因。

代码语言:javascript
运行
复制
public class ProductDto
{
    public int ProductId { get; set;},
    public string ProductName { get; set;},
    public string ProductDescription { get; set;},
    public float SalesAmount { get; set;}
}

我试着搜索这些答案,他们没有这个问题的具体答案,

Reusing DTO for various request/response types vs explicitness of what is required / what should be returned

Data Objects for each layer(DTO vs Entity vs Response objects)

更新:

试图验证答案。似乎Rahul的答案是回答域对象和DTO之间的差异。思维反应是DTO的包装,不确定是不是真的-

http://themoderndeveloper.com/the-modern-developer/requesting-a-response/

现在张贴在这里:

https://softwareengineering.stackexchange.com/questions/398783/what-is-difference-between-dto-and-response-object

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-23 07:34:55

据我所见,响应对象可以在DTO的顶部包含一个Status字段,该字段指示请求是否成功;如果没有,则表示它失败的原因。

但我不太确定这是一个记录在案的规范。

票数 0
EN

Stack Overflow用户

发布于 2019-09-23 08:16:38

DTO (Data Transfer Object)是定义如何通过网络或应用程序发送数据的对象。另一方面,Response Object通常保存来自DTO或WebApi's or Data Access的响应数据或对客户端的任何其他响应。

Response Object通常包含特定model or entity or DTO的所有/少数属性,通常是DTO对象的子集。请参阅下面的例子。

雇员响应对象:

代码语言:javascript
运行
复制
public class EmployeeResponseObject
{
     public int Id { get; set; }
     public string Name { get; set; }
     public string Designation { get; set; }    
}

雇员DTO:

代码语言:javascript
运行
复制
public class EmployeeDTO
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Designation { get; set; }
    public decimal Salary { get; set; }
    public DateTime JoiningDate { get; set; }
    public decimal Tax { get; set; }
}

现在你可以看到这里了。EmployeeResponseObjectEmployeeDTO的一个子集,这意味着EmployeeDTOEmployeeResponseObject具有较少的属性。在少数情况下,我们不需要将所有信息传递给终端客户端。因此,我们将使用EmployeeResponseObjectEmployeeDTO获得所需的属性。您可以使用LINQDTO将数据投影到Response Object

代码语言:javascript
运行
复制
[ResponseType(typeof(EmployeeResponseObject))]
public EmployeeResponseObject GetEmployee()
{
    var employee = from e in dbContext.EmployeeDTO
                select new EmployeeResponseObject()
                {
                    Id = e.Id,
                    Name = e.Name,
                    Designation = e.Designation
                };    
    return employee;
}

如果只使用EmployeeDTO将信息传递给presentation layer/View, Webforms or ConsoleApp,那么presentation layer/View将紧密耦合到domain layer。对DTO Objects所做的任何更改都需要您更改presentation layer or controllers,这不是一种很好的方法。

有时,DTOResponse Objects会完全相同,那么为什么要使用单独的对象。这看起来可能是不必要的代码复制,但是当您的项目变得更大时,特别是在一个大型团队中,许多人在不同的应用程序层上一起工作。在这里,通过良好的编程实践,使用DTOseparate Response object更有意义。当您跳过使用Presentation layer/View时,domain layerResponseObject/ViewModelObject将变得紧密耦合。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58057598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档