什么是DTO和BO?有什么不同?

时间:2011-01-09 01:04:11

标签: business-objects data-transfer-objects

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

2 个答案:

答案 0 :(得分:15)

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

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

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

答案 1 :(得分:1)

通常,DTO在到达层之前具有相对静态数据,但BO可以动态保持状态和流标志值;并且BO也可以是自包含的,以便对某些业务逻辑进行验证或逻辑重组或判断;但是DTO的变化取决于层次传递的数据变化......但是,BO的变化范围更广,例如,取决于更多动态更新业务流状态,旗帜的变化,即使身份可以实时改变,这些假设被捕获并采取行动反映从BO,例如,从200美元的余额变为零,或平衡从2000美元到5000美元,然后交易/交易身份或地位将发生变化......这是DTO和BO之间的巨大差异。