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

有帮助吗?

解决方案

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

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

DTO不必运输所有BO数据。当您遵循严格的DTO方法时,您会为在业务层上暴露的每个操作创建特定的DTO。例如,如果您的对象具有诸如Createby,Modifyby,CreateDate等的审核数据,并且您正在创建更新方法您的Incomming DTO(带有更新对象)不需要这些属性,因为上层无法修改它们 - 只有Business Logic才能。

其他提示

通常,DTO在到达层之前的那一刻具有相对的静态数据,但是BO可以动态保持状态和流量标志值。并且BO也可以自由地对某些业务逻辑进行验证或逻辑重组或判断;但是DTO的更改取决于层次传递的数据的更改...但是,例如,Bo的更改具有更大的范围,例如,使用业务流动状态,FLAG的更改,即使身份也可以是更广泛的更新实时更改,这些假设被捕获并采取行动以反映BO,例如余额从$ 200开始为零,或者余额从$ 2000到5000美元,那么交易/贸易身份或身份将会改变...这是DTO和BO之间的很大差异。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top