加载中...
数据传输对象是一种只承载数据、不含业务逻辑的简单对象,用于在系统各层或进程之间批量传递数据。它能减少远程调用次数、隔离内部模型与外部接口,常见于 API 响应和分布式系统的数据交换。

| 中文名 | 数据传输对象 |
| 英文名 | Data Transfer Object |
| 缩写 | DTO |
| 提出者 | Martin Fowler |
| 主要用途 | 跨层跨进程传递数据 |
数据传输对象(Data Transfer Object,简称DTO)是一种只包含数据字段、几乎不含业务行为的对象,用于在应用的不同层次或不同进程之间打包并传输数据。它的核心目的是把多个相关数据一次性聚合传递,以减少调用往返和不必要的耦合。
DTO 由 Martin Fowler 在企业应用架构模式中提出,最初动机是降低分布式系统中昂贵的远程调用次数:与其多次调用获取零散字段,不如用一个 DTO 一次性把所需数据全部取回。如今 DTO 也广泛用于隔离领域模型与对外暴露的接口结构,避免内部实体被直接序列化到外部。
典型场景包括:Web API 的请求体与响应体定义;前后端之间的数据契约;微服务之间跨网络传递数据;把数据库实体转换为对外视图以隐藏敏感字段。DTO 与领域实体之间通常通过映射工具或手写转换互相转换。
问:DTO 和领域实体有什么区别?答:领域实体承载业务逻辑和状态,是领域模型的核心;DTO 只是数据的载体,不含行为,专用于传输和接口契约,两者应保持分离。
问:一定要为每个接口都创建 DTO 吗?答:不必绝对如此。在小型或内部系统中直接复用实体可能更简单;但当需要隐藏字段、稳定对外契约或避免序列化陷阱时,单独的 DTO 更安全。

| 中文名 | 数据传输对象 |
| 英文名 | Data Transfer Object |
| 缩写 | DTO |
| 提出者 | Martin Fowler |
| 主要用途 | 跨层跨进程传递数据 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧