MVC 模型对象、域对象和 DTO 之间有什么区别?
我的理解是:
MVC 模型对象:
对要由相应视图显示的数据进行建模。它可能不会直接映射到域对象,即可能包含来自一个或多个域对象的数据。
- 客户端
- 可能包含业务逻辑。例如。验证、计算属性等
- 没有持久化相关方法
域对象:
对问题域中的现实对象(如预订、客户、订单等)进行建模的对象。用于保存数据。
- 服务器端
- 没有业务逻辑
DTO(数据传输对象):
当层处于单独的进程中时,用于在层之间传输数据的对象,例如从数据库到客户端应用程序。在获取与多个域对象对应的数据时,允许跨线路进行单个事务,而不是多个调用。 DTO 仅包含数据和访问器方法,不存在任何逻辑。该数据用于特定的数据库事务,因此它可能会或可能不会直接映射到域对象,因为它可能包括来自一个或多个域对象的数据。
- 在层与层之间传递时,可用于服务器端和客户端
- 没有业务逻辑
- 没有持久化相关方法
那么,问题是:
-
以上理解正确吗?我是否遗漏了任何关键点?
-
假设模型对象不需要额外的业务逻辑,是否有任何理由不使用域对象作为 MVC 模型?
-
假设模型对象不需要额外的业务逻辑,是否有任何理由不使用 DTO 作为 MVC 模型?
域和模型对象本质上是相同的,并且可能包含业务逻辑。根据实现的不同,如果将业务逻辑从模型中删除到服务类中,域和 DTO 对象可能是等效的。
通常,DTO 的一个关键变体是视图模型,它纯粹用于在域模型和视图之间传输数据,尽管视图模型通常可能包含逻辑,尽管这应该是纯粹的 UI 逻辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)