首页 新闻 会员 周边

DTO和Domain转换问题(各位请进)

0
[已解决问题] 解决于 2010-08-22 18:47

大体架构是:表现层、控制层、应用层、领域层、基础层。

表现层和应用层交互的协定用DTO。先说说用DTO的原因,我的领域对象少的有20个属性,大的有40多个属性。而表现更多的是用到5-10个属性,更重要是为了不暴露Domain到控制层。

 

问题:多了这么多DTO,转换只能定义出每一个DTO向Domain转换的功能。总觉得很不合理,但又没办法,可能我设计有问题,所以特开一问来咨询大家。

bugfly的主页 bugfly | 初学一级 | 园豆:10
提问于:2010-08-20 21:36
< >
分享
最佳答案
0

这个时候你需要DTO 适配层、而且是 对于每个DTO对象都要提供一个双向的适配器--即能从领域对象转换成数据迁移对象、又能从数据迁移对象转换会领域对象。

HUHU慈悲 | 大侠五级 |园豆:9973 | 2010-08-21 11:30
我也有这个想法,看了Martin做法是一个Assembler的层面去装换,这个适配层应该属于独立层还是应用层(服务层)呢?
bugfly | 园豆:10 (初学一级) | 2010-08-21 19:50
作为独立的一层,叫 DTO适配层,当然具体到程序集的话可以灵活些。可以跟DTO 作为一个程序集中。
HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-08-21 20:23
这个划分,我想了下,如果和DTO一层。姑且叫这层是Assembler层。Assembler引用Domain,而控制层要引入DTO所在层,不然无法交互,这样不久是暴露了Domain到控制层?那服务层一直的努力不是白费了?高手指教如何划分
bugfly | 园豆:10 (初学一级) | 2010-08-21 20:32
其他回答(1)
0

Entity translator ,作为 DTO 和 Domain 之间的属性转换。

你可以参看Web Service Software Factory中的模式:http://msdn.microsoft.com/en-us/library/ff647889.aspx

Launcher | 园豆:45045 (高人七级) | 2010-08-20 22:05
不太明白,这个translator 是库还是框架?
支持(0) 反对(0) bugfly | 园豆:10 (初学一级) | 2010-08-20 22:30
@桀骜的灵魂:不是库,也不是框架,就是你自己写的转换类,用于在你的DTO和Domain Object之间的转换。 也就是说,如果你定了这样的框架,就需要把职责区分出来,这样层次清晰,便于维护和修改。
支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2010-08-20 22:59
应该如何分离职责?是独立层面的东西,还是放在应用层(服务层)?
支持(0) 反对(0) bugfly | 园豆:10 (初学一级) | 2010-08-21 19:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册