精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-02
service最好还是保留的好……毕竟action复杂起来,是有必要把service和action分开的,以前吃过亏……
|
|
返回顶楼 | |
发表时间:2007-03-02
有时候把他们合并到也挺好的,省得那么多的接口,转来转去的麻烦。
|
|
返回顶楼 | |
发表时间:2007-03-02
fatzhen 写道 robbin 写道 AR可以看成是把Java的Service对象,DAO对象,domain对象三位一体了。但对于Java来说,Service合并DAO容易,但要Service再合并domain对象,对于Java目前的框架来说,存在很大的技术难度,使得这样做基本不现实。 AR好像并没有把Service对象一块合并 java里的Service要负责事务以及多个domain对象的协作,这些rails是放到controller去做的吧? 如果java里模仿这样的方式可以吗? 不过我觉得保留service比较好看 "java里的Service要负责事务以及多个domain对象的协作,这些rails是放到controller去做的吧?" 这个我看了一下typo的代码,发现事务是model里面有,controller里面也有,是不是容易混乱 rails的controller里面一般不会有什么逻辑代码,所有的逻辑代码都是在model里面。如果是多个model协作的代码,应该再创建一个model对象来完成协作,无论如何不应该放在controller里面。 如果你把业务逻辑代码放在controller里面,这就好像在Java里面把业务逻辑放在Action里面,统统是bad smell! |
|
返回顶楼 | |
发表时间:2007-03-02
这个题目太爆炸了,把java-ee和ruby-rail这对冤家又撮合到了一块,注定又是一场腥风血雨。ruby-rail的脚本、无xml、轻量等特性是java-ee的反向极端,因此,一问世就引来了java阵营的一片哗然。在java-ee台面上唱戏的老生老旦们开始人心思动,或者台下观众是一片哗然,其中不乏老戏迷和刚看了康康舞混入会场的老少爷们。楼主这个问题我个人认为是透过ruby-rail的设计,来反观java-ee领域内奢华的模式和方法,已第三只眼来观看往日的所作所为,毫无疑问,任何技术都要据实情而应用,对于复杂的应用,比如业务逻辑比较复杂,一个service需要利用多个dao来完成业务,我觉得还是要保持service层的独立性为好,反之,一个轻羽量级的应用,比如对单表操作CRUD业务即告完成,那么没有service层也无关大碍,反倒清洁干爽。我一直都认为java-ee更适合做复杂的企业应用,而ruby-rail则适合充当另一个类似php的角色,专门做互联网应用。我以前做过oa系统,后台数据库少少也百来张表,而如果是一个www网站,估计二十张表内就完全搞定,用没有service的方法肯定没有什么严重后果,效率还颇高。另外对于domain对象的问题,我觉得还是分开为好,因为在java应用中其角色太复杂,就有VO,DO,TO几种不同类型,如果都合到dao中,java的mvc根基估计该歇菜了。
|
|
返回顶楼 | |
发表时间:2007-03-02
认为RoR这种快捷的开发方式无法做复杂的企业应用。认为数据库表越多,Java越适应,其实这完全是自己毫无根据的臆测。
RoR的ActiveRecord并不是Martin Fowler的PoEAA里面的ActiveRecord模式,实际上是PoEAA里面的Domain Model模式。根据PoEAA的总结,Domain Model才是更加适合复杂企业应用的软件架构模式。 目前Java的框架还不能很好的实现Domain Model,使用Hibernate的方式也是贫血的Domain Model,这种方式被Martin Fowler所批评。但是在Java里面要让domain不贫血,是很困难的,技术实现上目前难度很大。 反而RoR是天然的Rich Domain Model,所以从软件架构上来讲,对于复杂软件的可重用性,业务逻辑的表达能力上,理论上RoR要超过Java。没有任何理由认为复杂企业软件,Java能够比RoR表现的更好。 |
|
返回顶楼 | |
发表时间:2007-03-02
引用 "java里的Service要负责事务以及多个domain对象的协作,这些rails是放到controller去做的吧?"
这个我看了一下typo的代码,发现事务是model里面有,controller里面也有,是不是容易混乱 Java的Service事务和rails的事务在概念上和用法都不一样,所以不能同一个标准来衡量。 |
|
返回顶楼 | |
发表时间:2007-03-02
robbin为什么说Java不能很好的实现DomainModel,以及RoR的业务逻辑表达能力上胜过Java?能否简单说明?
|
|
返回顶楼 | |
发表时间:2007-03-02
basicbest 写道 robbin为什么说Java不能很好的实现DomainModel,以及RoR的业务逻辑表达能力上胜过Java?能否简单说明?
你试试看把hibernate管理的PO和spring管理的bean合并成为一个,然后你告诉我你怎么实现? http://www.iteye.com/topic/20097 看看RoR如何简洁的表达的? |
|
返回顶楼 | |
发表时间:2007-03-02
Hibernate我原先就不大喜欢用,复杂的东西,呵呵。
但是Hibernate不代表Java,所以为什么说“Java不能很好的实现DomainModel”呢?另外一点“RoR的业务逻辑表达能力上胜过Java”在该帖子中也没有看出来。 我没什么语言情节,只是想知道这个结论是如何分析出来的。 BTW:但是Ruby如此简洁,我是很喜欢的。 只可惜我还没有用过,所以还没有感受到优美。 |
|
返回顶楼 | |
发表时间:2007-03-02
持久化不属于领域层的范围,属基础层,如果把持久化这种琐碎的细节都绑在Domain对象中,Domain Model就失去了意义,隔离出一个干净精练的Domain层会比较好,那里是软件的核心。
Java这样清晰而严谨的语言是实现Domain Model的极佳选择,很容易理解和交流,把Domain Model和Hibernate、Spring联系到一起应该是过于放大了Domain Model的职责范围。 Domain Model不能太胖,也不能太瘦,能够完整地描述核心业务功能就刚刚好,现在流行的层次结构中的Entity只是简单的属性集合,把所有的业务功能交给Service,这就制造了一个瘦Domain Model。Domain Model里的Entity应该具有职责范围内的业务功能,而且Domain Model中的对象不止是Entity一种,还包括Domain Service,比如需要多个Domain对象合作完成的业务功能不方便放在哪个Domain对象中,就需要单独的Domain Service,当然,分清Domain层Service和应用层的Service是有一定难度的。 |
|
返回顶楼 | |