论坛首页 Java企业应用论坛

领域模型——想说爱你很难

浏览 20068 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-04-30  
dlee 写道
taowen 写道
你是说DDD嘛?我觉得大牛们的意见挺一致的啊。只是在现有技术上实现起来有困难,而在RoR上却很容易做到了。所以才会有思考,才要去创造啊。

你说的大牛是一些专门研究架构设计的人,例如Martin Fowler。还有一些人是更偏向于应用和实践的,例如Rod Johnson、Gavin King等等。其实Rod Johnson和Gavin King的很多设计观点都是不一致的(体现在Spring和JBoss Seam的差别上)。另外PoEAA这本书出来也有很多个年头了,我可以确信Rod Johnson熟读过这本书,因为在《J2EE without EJB》中他不只一次引用过这本书。但是为何Spring框架在2.0版推出之前,对于实现领域模型并没有提供很好的支持?为何会出现这种情况,我们需要做一些深入的讨论。当然我相信Rod Johnson肯定并不反对领域模型,因为Spring在2.0版中使用AspectJ来更好地支持基于领域模型的设计。但是这是否说明了在Spring+Hibernate的架构中,实现完美的领域模型设计存在着很大的困难?

我的回答是:Rod Johnson与Martin Fowler具有不同的设计哲学。你们读过《J2EE without EJB》等书就会明白,Spring框架的一个主要的设计目标就是为了更好地支持分层的设计(业务逻辑要与持久逻辑清晰地分离开),而Martin Fowler设计领域模型的目标并不是支持分层,而是得到更好的面向对象设计,这两个设计目标是存在着很大的差异的。并不是完全不相容,但是要在两方面都做到完美确实不太容易。


是的,就是这样嘛,大家没必要把领域模型和分层对立起来。
0 请登录后投票
   发表时间:2007-04-30  
dlee 写道
我如果基于Ruby on Rails做开发,我当然会采用领域模型的方式来做开发。领域模型也不是什么高不可攀的神奇玩艺,实际上对于做过很多企业应用的人来说,PoEAA这本书还是很容易读懂的。

不过在我看来,随着各种RIA技术的兴起(Ajax、Flex、WPF、Apollo),将来越来越多的人会将Web表现层完全前推到客户端来做,服务器端的角色转换成了一种Web服务提供者(类似于基于SOAP的Web Service中的服务接入点,但是主要采用轻量级的Web Remoting协议)。由于角色的改变,服务器不再大包大揽做完所有的事情,这个时候,传统的J2EE的分层设计(表现层、业务层、持久层)的重要性将会越来越显得不是那么突出。


恩,分析得有道理
0 请登录后投票
   发表时间:2007-04-30  
lihy70 写道
dovecat 写道


...怎么觉得有点...唉~~
你去看看without ejb吧.
大牛们已经说得很清楚了,我才疏学浅,说不清楚.
另外:建议你去看看robbin的关于领域模型的讨论.


怎么感觉你是吃without ejb的奶长大的

对我来说without ejb是完完整整的rubbish
本来是不认识Rod此人的,哎,实在无奈,在这看到什么Rod,那也看到Rod什么,最后也被注入了。

另外:也给你提个建议,有空翻翻《The java programming language, fourth edition》或再者《The Java Language Specification, third edition》或多翻几遍《设计模式》,当然不可迷信,很早我们初中还是高中语文就讲了学习要带个这个“?”

...OK.OK.你想怎么着就怎么着吧.
0 请登录后投票
   发表时间:2007-04-30  
我并不是排斥领域模型本身,就JAVA来说,确实没有一个好的ORM帮助,实现出来的领域模型有几个很不好的地方.ruby在这方面表达的很简练.OK?
0 请登录后投票
   发表时间:2007-04-30  
领域模型有啥好爱的?
最熟悉的方法,就是最好的方法,没有掌握的东西,其本身就是毒药,足以让人动弹不得。
0 请登录后投票
   发表时间:2007-04-30  
dovecat 写道
lihy70 写道
dovecat 写道


...怎么觉得有点...唉~~
你去看看without ejb吧.
大牛们已经说得很清楚了,我才疏学浅,说不清楚.
另外:建议你去看看robbin的关于领域模型的讨论.


怎么感觉你是吃without ejb的奶长大的

对我来说without ejb是完完整整的rubbish
本来是不认识Rod此人的,哎,实在无奈,在这看到什么Rod,那也看到Rod什么,最后也被注入了。

另外:也给你提个建议,有空翻翻《The java programming language, fourth edition》或再者《The Java Language Specification, third edition》或多翻几遍《设计模式》,当然不可迷信,很早我们初中还是高中语文就讲了学习要带个这个“?”

...OK.OK.那你说说你是怎么用JAVA完美的实现出领域模型的?老大.老大.我叫你老大了.
唉~不说了.浪费精神.我水平不够.看来不能跟你讨论这个问题.你想怎么着就怎么着吧.


呵呵,我对你无恶意,希望不要误解。
至于怎么解决这个问题,做一个advertisement,试一下:
http://sourceforge.net/projects/dbcoat/
0 请登录后投票
   发表时间:2007-04-30  
再说下去,其实很多Java开发者就要伤心了。
刚刚在看《超越Java》,里面有这句话:
Bruce A. Tate 写道
这5年以来,我们一次又一次地解决这种问题,但还是无法在Java中快速地解决,而且,大多数的Java框架开发者会进行渐变式的改变,并没有真正地进行Web开发的革命。

Rod Johnson是我知道的最pragmatic的Java开发者之一,在Java开发方面堪称大师级的人物。但是Spring最大的参照物是EJB2.x和传统的J2EE的分层设计(包括各种J2EE核心模式)。Spring对于EJB2.x的开发方式进行了极大改良,但是称不上是革命性的技术。
同样的,WebWork最大的参照物是Struts1.x。WebWork对于Struts1.x的开发方式进行了极大改良,但是称不上是革命性的技术。
而JSF呢?它的思路来自ASP.NET、Struts1.x、JSTL,它是对于这些技术的改良,但是也称不上是革命性的技术。

为何他们要把这些技术作为自己的参照物?因为这些参照物最初出现时过于辉煌了(4年前,你如果嘴里不谈分布式事务,不谈EJB、不谈Web Service你就不好意思自称是J2EE开发者),以至于一些后来者被其光环所震慑,认为只要以更好的方式复制前人的经验,就足以保证自己的成功了。但是仅仅对这些参照物进行改良是不够的,在Java之外的世界涌现出了大量新的技术、新的设计方法,现在是产生革命的时候了。

所以在我看来,现在对于新的Web开发者而言,投资Spring+Hibernate已经不是很明智了(包括投资Struts2.0、JSF等等其他Java技术都一样)。投资Ajax、RIA、Ruby on Rails都是更好的选择。
0 请登录后投票
   发表时间:2007-05-08  
为什么认为用Java不能(或不容易)做出象ActiveRecord那样简单的持久框架?
0 请登录后投票
   发表时间:2007-05-10  
要使用Domain Design首先对开发团队的要求很高,Transaction script的过程化方式可以被大多数人的大脑理解,但Domain就未必了,做的不好会导致项目死的更快。

其次Domain Design和现在很多的快速开发平台的思路是相悖的,给人的感觉就是一个精英团队在打造一辆软件劳斯莱斯,而不是一堆软件蓝领在那里通过某些快速开发平台所能够做到的。

在做Domain Design的时候,技术已经不是什么最重要的东西了,对于领域的深刻理解才是保证成功的关键一步,但其实这才是Enterprise System应该走的方面,量身定做嘛。

我的最爱是Martin所谓的折衷方案,Transaction的壳,Domain的核,控制与业务分开,思路很清楚,何必一定要拘泥于是否Domain的纯粹呢?
0 请登录后投票
   发表时间:2007-05-10  
flyromza 写道
要使用Domain Design首先对开发团队的要求很高,Transaction script的过程化方式可以被大多数人的大脑理解,但Domain就未必了,做的不好会导致项目死的更快。

其次Domain Design和现在很多的快速开发平台的思路是相悖的,给人的感觉就是一个精英团队在打造一辆软件劳斯莱斯,而不是一堆软件蓝领在那里通过某些快速开发平台所能够做到的。

在做Domain Design的时候,技术已经不是什么最重要的东西了,对于领域的深刻理解才是保证成功的关键一步,但其实这才是Enterprise System应该走的方面,量身定做嘛。

我的最爱是Martin所谓的折衷方案,Transaction的壳,Domain的核,控制与业务分开,思路很清楚,何必一定要拘泥于是否Domain的纯粹呢?


呵呵,Martin的弟子在中国还真不少。
从你说的“Martin所谓的折衷方案”,Martin的思维应该是多维的吧,

引用
何必一定要拘泥于是否Domain的纯粹呢?

你何来此感慨?!
别人只是在讨论Domain,有谁强调过非Domain不可吗?
说“一”的“是”,并不代表说“二”的“不是”
0 请登录后投票
论坛首页 Java企业应用版

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