论坛首页 Java企业应用论坛

VO(DTO)模式在分层架构设计中是否需要的扯淡

浏览 42553 次
该帖已经被评为良好帖
作者 正文
   发表时间:2011-04-24   最后修改:2011-04-24
vo和po的区别就不多说了。

vo的作用有两种:
1.模块隔离:对外暴露,屏蔽内部实现。
2.分布式支持:用于异步传输;

换句话说:
如果不打算进行严格的模块化/组件化,又没有分布式场景,就不应该使用VO。
如果不打算进行严格的模块化/组件化,但存在部分分布式场景,比如lz所说的flex,那么针对部分进行VO开发即可;

此外,决定是否启用VO除了上述两个作用对应的场景外,另有如下两个因数:
1.PO是否是Rich Model?
2.开发人员是按分层分工还是按功能分工?

如果PO是贫血的,且是按分层分工开发的那么应该启用VO,因为,由于后台模型变化导致前台的调整会带来沟通协调的成本;
如果PO是Rich Model,且是按功能分工,那么就不应使用VO,VO和PO只会趋近,最终带来更多的维护成本,且在Rich Model下只变后台不变前台的比率较低,大部分情况下,功能的调整/改进会同时影响前后台。
0 请登录后投票
   发表时间:2011-04-24  
hsiss 写道
dto直接用map代替不就行了吗,为了架构而架构

你根本就没弄清楚为什么用DTO模式。
0 请登录后投票
   发表时间:2011-04-24  
kimmking 写道
虽然话题太老了。
但是说的还是在理,投个良。~

话题是五六年前讨论过的。但是前辈们对于为什么要使用,什么时候使用DTO并没有说得特别清楚,也没有实例说明。他们只是在互喷。
0 请登录后投票
   发表时间:2011-04-24   最后修改:2011-04-24
yimlin 写道
vo和po的区别就不多说了。

vo的作用有两种:
1.模块隔离:对外暴露,屏蔽内部实现。
2.分布式支持:用于异步传输;

换句话说:
如果不打算进行严格的模块化/组件化,又没有分布式场景,就不应该使用VO。
如果不打算进行严格的模块化/组件化,但存在部分分布式场景,比如lz所说的flex,那么针对部分进行VO开发即可;

此外,决定是否启用VO除了上述两个作用对应的场景外,另有如下两个因数:
1.PO是否是Rich Model?
2.开发人员是按分层分工还是按功能分工?

如果PO是贫血的,且是按分层分工开发的那么应该启用VO,因为,由于后台模型变化导致前台的调整会带来沟通协调的成本;
如果PO是Rich Model,且是按功能分工,那么就不应使用VO,VO和PO只会趋近,最终带来更多的维护成本,且在Rich Model下只变后台不变前台的比率较低,大部分情况下,功能的调整/改进会同时影响前后台。

和我的想法完全一样。而且总结得比我简要。我们以后是要做模块化的,所以VO对于以后的扩展很有必要。同时以后有可能做web层和应用层的分布式。不是Rich Model,功能是贫血模型。
0 请登录后投票
   发表时间:2011-04-25  
其实有的时候不是技术决定的,而是由部门决定的

比如我们现在,我们这个项目做后台逻辑,以及业务逻辑

另外一个部门的项目组做页面,那此时肯定会有VO,这个就不是技术要求了,而是避免两个部门扯皮

如果是一个项目组搞定的话,我个人认为是不需要VO的,VO这个东东太鸡肋了,弊大于利。
0 请登录后投票
   发表时间:2011-04-25  
yimlin 写道
vo和po的区别就不多说了。

vo的作用有两种:
1.模块隔离:对外暴露,屏蔽内部实现。
2.分布式支持:用于异步传输;

换句话说:
如果不打算进行严格的模块化/组件化,又没有分布式场景,就不应该使用VO。
如果不打算进行严格的模块化/组件化,但存在部分分布式场景,比如lz所说的flex,那么针对部分进行VO开发即可;

此外,决定是否启用VO除了上述两个作用对应的场景外,另有如下两个因数:
1.PO是否是Rich Model?
2.开发人员是按分层分工还是按功能分工?

如果PO是贫血的,且是按分层分工开发的那么应该启用VO,因为,由于后台模型变化导致前台的调整会带来沟通协调的成本;
如果PO是Rich Model,且是按功能分工,那么就不应使用VO,VO和PO只会趋近,最终带来更多的维护成本,且在Rich Model下只变后台不变前台的比率较低,大部分情况下,功能的调整/改进会同时影响前后台。



我个人也觉得VO应该视情况而定,没必要强制开发,有需求的时候再写就可以!
0 请登录后投票
   发表时间:2011-04-25  
明确了概念
0 请登录后投票
   发表时间:2011-04-25  
互联网的时代了,做web应用的还在纠结于VO/PO/DTO/的概念,真悲催……

0 请登录后投票
   发表时间:2011-04-25  
jansel 写道
其实有的时候不是技术决定的,而是由部门决定的

比如我们现在,我们这个项目做后台逻辑,以及业务逻辑

另外一个部门的项目组做页面,那此时肯定会有VO,这个就不是技术要求了,而是避免两个部门扯皮

如果是一个项目组搞定的话,我个人认为是不需要VO的,VO这个东东太鸡肋了,弊大于利。

这个就是我说的分层分团队开发一定是需要vo做为接口数据的。
0 请登录后投票
   发表时间:2011-04-25  
分离的北极熊 写道
互联网的时代了,做web应用的还在纠结于VO/PO/DTO/的概念,真悲催……


愿听大牛高见。不管什么年代了,总是会有后人加入到开发行业来,人都是一下子懂所有的事情的吗?悲催什么,你连自已的观点都没有。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics