DTO 和响应对象之间的区别?
Difference between DTO and Response Object?
响应对象和软件架构中的DTO有什么区别?假设我想获取目录中的产品列表。
如果 ProductDTO 是这个,那么产品响应 class 有何不同?产品响应通常只是带有日期时间、错误日志或 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 的回答是回答 Domain object 和 DTO 之间的区别。 Thought Response 是 DTO 的包装器,不确定是否为 true-
http://themoderndeveloper.com/the-modern-developer/requesting-a-response/
现在发布在这里:
据我所知,响应对象可以在 DTO 顶部包含一个状态字段,指示请求是否成功;或者如果没有,为什么它失败了。
但我不太确定这是记录在案的规范。
A DTO (Data Transfer Object)
是一个对象,它定义了如何通过网络或应用程序发送数据。另一方面 Response Object
通常保存来自 DTO 或 WebApi's or Data Access
的响应数据或对客户端的任何其他响应。
Response Object
通常包含特定 model or entity or DTO
的 all/few 属性,通常是 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
的子集,这意味着 EmployeeResponseObject
的属性少于 EmployeeDTO
。在少数情况下,我们不必将所有信息传递给最终客户。所以我们将使用 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
更适合良好的编程习惯。当您跳过 ResponseObject/ViewModelObject
.
时,Presentation layer/View
和 domain layer
将变得紧密耦合
响应对象和软件架构中的DTO有什么区别?假设我想获取目录中的产品列表。
如果 ProductDTO 是这个,那么产品响应 class 有何不同?产品响应通常只是带有日期时间、错误日志或 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 的回答是回答 Domain object 和 DTO 之间的区别。 Thought Response 是 DTO 的包装器,不确定是否为 true-
http://themoderndeveloper.com/the-modern-developer/requesting-a-response/
现在发布在这里:
据我所知,响应对象可以在 DTO 顶部包含一个状态字段,指示请求是否成功;或者如果没有,为什么它失败了。
但我不太确定这是记录在案的规范。
A DTO (Data Transfer Object)
是一个对象,它定义了如何通过网络或应用程序发送数据。另一方面 Response Object
通常保存来自 DTO 或 WebApi's or Data Access
的响应数据或对客户端的任何其他响应。
Response Object
通常包含特定 model or entity or DTO
的 all/few 属性,通常是 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
的子集,这意味着 EmployeeResponseObject
的属性少于 EmployeeDTO
。在少数情况下,我们不必将所有信息传递给最终客户。所以我们将使用 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
更适合良好的编程习惯。当您跳过 ResponseObject/ViewModelObject
.
Presentation layer/View
和 domain layer
将变得紧密耦合