在软件体系结构中,响应对象和DTO之间有什么区别?假设我想在目录中得到一份产品清单。
如果是ProductDTO,那么ProductDTO类有何不同?Product通常只是一个带有日期时间、错误日志或guid的包装器,或者主要区别是什么?如果没有一个确切的或多重的答案,希望听到业界的最高原因。
public class ProductDto
{
public int ProductId { get; set;},
public string ProductName { get; set;},
public string ProductDescription { get; set;},
public float SalesAmount { get; set;}
}
我试着搜索这些答案,他们没有这个问题的具体答案,
Data Objects for each layer(DTO vs Entity vs Response objects)
更新:
试图验证答案。似乎Rahul的答案是回答域对象和DTO之间的差异。思维反应是DTO的包装,不确定是不是真的-
http://themoderndeveloper.com/the-modern-developer/requesting-a-response/
现在张贴在这里:
发布于 2019-09-23 07:34:55
据我所见,响应对象可以在DTO的顶部包含一个Status字段,该字段指示请求是否成功;如果没有,则表示它失败的原因。
但我不太确定这是一个记录在案的规范。
发布于 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
对象的子集。请参阅下面的例子。
雇员响应对象:
public class EmployeeResponseObject
{
public int Id { get; set; }
public string Name { get; set; }
public string Designation { get; set; }
}
雇员DTO:
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; }
}
现在你可以看到这里了。EmployeeResponseObject
是EmployeeDTO
的一个子集,这意味着EmployeeDTO
的EmployeeResponseObject
具有较少的属性。在少数情况下,我们不需要将所有信息传递给终端客户端。因此,我们将使用EmployeeResponseObject
从EmployeeDTO
获得所需的属性。您可以使用LINQ
从DTO
将数据投影到Response Object
。
[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
,这不是一种很好的方法。
有时,DTO
和Response Objects
会完全相同,那么为什么要使用单独的对象。这看起来可能是不必要的代码复制,但是当您的项目变得更大时,特别是在一个大型团队中,许多人在不同的应用程序层上一起工作。在这里,通过良好的编程实践,使用DTO
和separate Response object
更有意义。当您跳过使用Presentation layer/View
时,domain layer
和ResponseObject/ViewModelObject
将变得紧密耦合。
https://stackoverflow.com/questions/58057598
复制相似问题