19

我知道 DTO 是一个数据传输对象,而 BO 是一个业务对象。但是,它实际上是什么意思?我什么时候应该选择一个而不是另一个?从,我理解的DTO只是用来传输数据,没有业务逻辑。这是否意味着 DTO 没有任何方法属性(getter 和 setter)?但是,它仍然具有 BO 的属性。有人可以解释一下吗?谢谢。

4

2 回答 2

23

DTO 用于在层/层之间传输数据。为此,它不需要任何方法,有时甚至不应该有任何方法——例如,当 DTO 通过 Web 服务公开时。

业务对象是一个聪明的对象,它包含对这个对象执行操作(更改数据)的数据和方法。当您将 BO 暴露给上层时,它可以调用您对象的公共方法。有时你不想要这个,因此你创建了只提供数据但不提供方法的 DTO。

DTO 不必传输所有 BO 数据。当您遵循严格的 DTO 方法时,您将为业务层上公开的每个操作创建特定的 DTO。例如,如果您的对象具有 CreatedBy、ModifiedBy、CreatedDate 等审计数据,并且您正在创建 Update 方法,那么您的传入 DTO(带有更新的对象)不需要具有这些属性,因为上层无法修改它们 - 只有业务逻辑可以.

于 2011-01-09T01:12:03.440 回答
1

一般DTO在到达层之前有相对静态数据,BO可以动态保持状态和流标志值;BO也可以是自包含的,对某些业务逻辑进行验证或逻辑重组或判断;但是 DTO 的变化取决于 tier 传递过来的数据的变化……但是,BO 的变化范围更广,例如,取决于业务流状态的更动态更新, flag 的变化,甚至身份都可以实时变化,这些假设被捕获并从 BO 反映,例如,例如余额从 $200 变为零,或余额从 $2000 变为 $5000,那么交易/交易身份或状态将发生变化......这是DTO 和 BO 之间的巨大差异。

于 2014-12-30T19:42:56.360 回答