论坛首页 Java企业应用论坛

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

浏览 42552 次
该帖已经被评为良好帖
作者 正文
   发表时间:2011-04-24  
dto直接用map代替不就行了吗,为了架构而架构
0 请登录后投票
   发表时间:2011-04-24  
虽然话题太老了。
但是说的还是在理,投个良。~
0 请登录后投票
   发表时间:2011-04-24   最后修改:2011-04-24
如果大家有兴趣可以看看nec公司的sde架构。那才叫一个复杂。能见到的用的*O都用到了!!开发复杂度太高了。谁让人家不在乎钱呢。
0 请登录后投票
   发表时间:2011-04-24  
ppgunjack 写道
感觉DTO价值不在分层架构而在b-s间能大幅减少传输负载和浏览器端的内存损耗
如果是s测的分布式,价值大打折扣
如果DTO起抽象msg作用,那既不能替代别人也不应该被别人替代

其实我在为什么要用DTO那个章节上,已经说明了DTO存在的必要性,特别是在remote 访问的分布式应用时,几乎可以说是必需的。我也举了我们实际的例子说明。
其实用DTO模式做分布式的传输对象时,因为不是本机,是属于远程,所以缺点是网络延迟。但能减少不同层间的负载。
如web层只是action和页面(特别是静态化的页面),然后spring,dao等层做数据缓存。分开部署能减少对底层的连接压力。而且也能抽出核心应用层,供不同的异构的子系统调用(rmi或者hessian等协议)。
0 请登录后投票
   发表时间:2011-04-24  
zym_nanako 写道
如果web层和service层分离的话,那么service之间的调用是远程方式还是本地方式?

一般都是远程协议,如rmi,hessian等,因为有可能是分开不同的机器部署。当然也可以部署在一台机器上,但是两个tomcat,jboss应用。
0 请登录后投票
   发表时间:2011-04-24  
lookdd1 写道
开发网站就用网站的技术。。。别把JAVA EE的搞进来。你追不上那帮搞PHP的。。追不上那帮搞RAILS的。。。追不上就==死掉

你这个和这个没有关系吧?你要搞php可以搞呀。为什么搞网站不能javaee呢?
0 请登录后投票
   发表时间:2011-04-24   最后修改:2011-04-25
skzr.org 写道

我做企业应用的,以前也听某某、某某谈论dto、vo、po甚至其他oo。
我认为最佳的实践:楼下两个基本上讲的是原则。

 

 

yangyiqian 写道
首先我想说“存在就是真理”,DTO、PO绝对不是一个范畴的概念,DTO!=PO,所以也就谈不上谁代替谁的概念。当然了,你非要说老板就不能做员工的话吗?当然可以,不过这是做事的规矩吗?!

一、DTO与PO的不对称关系决定了二者不能互相代替
DTO与PO存在在映射关系,可能是多对一,也可能是一对多,最特殊的关系就是上面大家说的这种情况“一对一”。也就是在“一对一”的情况下可以实现DTO与PO的混用,而其他情况下,如果混用都需要PO进行冗余设计,考虑这些冗余设计会比直接的、简单的造一个新的DTO出现要耗费更多的脑细胞,同时这个东西又不利于后期维护,可以说“牵一发,动从上到下”。
二、性能上决定了PO代替DTO是个蹩脚的设计
PO是与数据库直接交互的对象,比如我要在页面上显示数据库中的数据,如果用PO来实现那么这个PO就得一直保持与数据库的连接,直到数据显示到页面上来。这样如果在service层有复杂运算的话,那么数据库方面的延时是非常可观的,而如果转换成DTO之后,数据库连接就可以尽快释放。所以从性能上来说应该使用DTO--当然对于性能不是很苛刻的情况下不用DTO也行 --不过,熟练的程序员应该养成按统一的方式做项目的习惯,我觉得这样会更高效。


 

最佳实践:

软件是发展的,我只认设计中的bean,如果bean要持久化就有po的职责了,一切都只是手段而已

 

难道是ORM把我们绑架了!太在意po和dto这样的概念了,设计才是根本,满足设计的bean才是核心。

 

就正如时刻要记住的技术是为了实现业务需求而用,很多人反过来用了,为了技术而技术,被技术忽悠。最简单、是人就可以看懂的实现才是好实现

 

 

 我也说了,大多数的企业应用,是可以po从view-dao透传所有层的。但是一些特定场景,特别是分布式环境,异构环境,DTO模式还是很有必要存在的。PO和DTO的概念还是很有必要理清的。很多东西,由于个人的一些经验问题,接触得不多,往往很难一眼看清本质。特别是底层的人员,有时候会看不清楚一个设计为什么这样。所以我觉得讲讲,扫下盲是有必要的,特别是对团队内部的人来说。而不能什么都不让他们知道,只是强制执行。

0 请登录后投票
   发表时间:2011-04-24  
silence1214 写道
个人也觉得DTO都低用不用还是根据实际情况来,有时候不需要分布,就是一个小应用,多余的DTO只会带来复杂度。你给的几个案例但是用着DTO蛮合适的。没有绝对的哈,知道有这么个架构思想,剩下来一切从需求出发吧

是这样的。
0 请登录后投票
   发表时间:2011-04-24  
卡拉阿风 写道
既然是用了hibernate,还有种替代dto的办法,使用select new map()..

对于用map透传所有层的技巧,比之po,我更加不赞成使用。
0 请登录后投票
   发表时间:2011-04-24  
ltian 写道
扫盲者没有说清楚DTO和PO的职责,其他人也没有说到点子上。

我其实主要想说清楚的是为什么有些场景是需要DTO的。并不在于说DTO和PO的概念。
0 请登录后投票
论坛首页 Java企业应用版

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