知识卡片

DTO因分布式粗粒度服务而生

普通读书笔记卡 · 1977.g

内容

数据传输对象(data transfer object,DTO)是最早用于J2EE的一种模式,Fowler定义为”用于在进程间传递数据的对象,目的是减少方法调用的数量”,其诞生背景是分布式通信。考虑网络传输的损耗与不可靠,分布式服务应尽可能设计粗粒度——每个服务方法代表一个完整功能而非一个步骤,以减少调用次数、减少网络通信、避免分布式事务。粗粒度服务自然需要返回粗粒度数据契约,而领域模型对象遵循OO原则在细粒度上分离职责,无法满足粗粒度契约,故需封装组合多个细粒度对象形成粗粒度DTO。发散:DTO的粒度是被网络成本”逼”出来的,与领域模型的细粒度追求方向相反,因此二者必然分离。

参考来源

- 位置:《解构领域驱动设计》第19章 19.1.2(源文件:_epub-src/OEBPS/032.xhtml) - 结论依据:原文说明DTO为分布式粗粒度服务而生,需组合细粒度领域对象形成粗粒度契约。 - 原始内容:设计分布式服务需遵循一个总体原则:尽可能设计粗粒度的服务……粗粒度的服务自然需要返回粗粒度的数据契约。