对于jf 的疑惑

对于jf 的疑惑

今天看了看jf的代码和一些例子,发现一些问题

1〉jf的作用

看了例子以后发现,jf 的特色到底在哪里呢?
IOC?这个不用jf 也可以实现。
事物控制?没有这个功能。

那么jf的特色是什么?
那个最简单的crud的例子,不用jf一样能方便的实现

2> Model 的问题

看了 Model 的代码,发现必须继承 com.jdon.controller.model.Model ,
但是,com.jdon.controller.model.Model 其实继承structs 的Action

为什么一定要继承structs 的Action???
如果我是一个RCP的应用,岂不是还需要structs的类?多么奇怪?


虽然我承认banq的思想是厉害的,但是单就jf而言,实在是需要改进,
目前看来,距离一个成功的framework还有很大的距离。
[该贴被yananay于2007年08月01日 17:11修改过]

最关键的是,我觉得jf目前是严重与web开发绑定在一起的东西,
而实际上,jf的位置应该是业务层,不应该与web的开发绑定的如此厉害。
因为,在实际中我们还会有富客户端等应用。

这点,spring做的很好。

多谢yananay建议。不过纠正几个错误情况:

>com.jdon.controller.model.Model 其实继承structs 的Action
错,Model和Action没有关系。

>jf目前是严重与web开发绑定在一起的东西
由于采取Ioc,JF的表现层不可能和业务层耦合在一起,JF的表现层是基于Struts的,在Struts基础上的简化。

如果你是富客户端,可以使用JF提供远程访问 ,JF当然提供富客户端对业务层的远程访问(基于XML+HTTP),具体参考手册。

为了体验JF好处,可以不用JF或者Spring做一个同样实例,JF的好处可能因人而异。就象java对于所有人不是最好的工具一样。


[该贴被banq于2007年08月02日 13:39修改过]

抱歉,因为是用记事本看的,看错文件了:)

不过,我还是很奇怪,
com\jdon\controller\model\Model.java

为什么是在controller 包下面?
我觉得Model 和controller 根本没什么关系。

而 在 Util 包下则有 Form 的相关。。。。
com.jdon.strutsutil.ViewForm

我觉得jf 的组织应该重构了....

最关键的还是这点,jf 没有事物控制功能,而spring则可以很方便的实现。
那么jf的优点到底在哪里呢?仅仅是ioc?

所以,banq,jf 应该有新的发展目标了,在2004年可以说jf可能有点新的
创意,但是今天,就比较落后了。

>为什么是在controller 包下面?
controller 是一个最高层的包,属于架构顶端,这说明Model重要性。

>在 Util 包下则有 Form 的相关
util是一个工具包,可有可无,这说明JF只是将struts作为一个可有可无的表现层工具而已,以后可以扩展JSF或其他。

>jf 没有事物控制功能,而spring则可以很方便的实现。
关于事务我已经在以前很多帖子说明了,事务主要是依靠JTA实现,Spring的事务也必须借助J2EE这个重要的组件JTA,只不过Spring的事务在配置中写了,而JF没有提供,就说明你在代码中写。反正都要写,只不过写的方式不一样。

我个人认为写在代码中更好点,因为JTA事务不能跨越太长,否则容易死锁,等待时间很长,所以,在代码中可控性好,如果写在配置中,如果以后拓展,在有事务的服务中可能嵌入更多处理过程,这样,会严重影响性能,而且很难找出问题。

所以,事务是显式声明好,还是隐式声明好,我认为显式好,特别是对于复杂软件。所以JF没有将事务象Spring那样变成隐式声明,这也是JF一个特色。

>在2004年可以说jf可能有点新的创意,但是今天,就比较落后了。
能够随着时间保持简单使用,这就是新的创意。因为从2004年到今天,软件设计思想还没有出现过类似IOC/AOP和Evans DDD的重大革命思想,JF只引入革命性设计。这也是特点。


[该贴被banq于2007年08月02日 14:21修改过]

controller 为什么会作为最高层呢?
对于一个纯业务层来说,controller 表示什么呢?

util 里的类应该是基础类吧,例如 DateUtil, StringUtil 等等,
怎么能是可有可无呢?况且对于 Form 这样的东西,很明显不应该存在于
Util 中。为了表示可有可无,完全可以放在另外一个语义明显的包里。

JTA只是实现事物的一种的一种方式。
在spring中,更多的时候不会使用JTA,而是用local transaction。
使用aop和自己写代码哪个方便?
还用比较吗?spring 只需要一个配置就完成了事物的功能。自己写代码
得写多少?


说真的,jf 的革命性设计我还真没发现,到底革命性在哪里?
ioc 的概念不是jf提出来的,ioc的框架也不是jf独创的。
真的没发现哪里有革命性的影子。

spring的革命性在于 j2ee without ejb, jdon呢?

说来说去,我只是想实话实说,jf 真的不是什么特别的framework,
与其说它是framework,不如说它是一个开发的模板,一个体现了DDD
思维模式的开发模板。

jf 这么多年难以获得认可,除去一些因素外,这个东西本身的价值也是
很重要的。

并不是国人自己做的框架就不会被认同,例如 bafflo,等等,好多人都
非常热心。

所以,jf 该考虑如何进化自己本身了!

>controller 为什么会作为最高层呢
controller不是MVC中controller意思,是架构控制器的意思。

>util 里的类应该是基础类吧 怎么能是可有可无呢?
可有可无的意思,是替换了就对架构不产生影响,DateUtil, StringUtil 只是一些类似计算器的工具而已,如果还不能理解,需要经验积累,可以放一放。

>在spring中,更多的时候不会使用JTA,而是用local transaction。
local transaction和JTA矛盾吗?,OO大师Martin Fowler关于放弃数据库事务管理,以依靠程序代码来管理事务的方法替代对数据事务管理的依赖。
http://docman.cn/docs/?id=6
我个人也推荐JTA,而不是JDBC事务。

>使用aop和自己写代码哪个方便?
快活在前面,吃苦在后面。性能影响更不用说。
你没有认真看我之前的原因叙说,或者说看了可能没有同样感受:
当你的在配置中配某一个Service为事务后,以后这个Service中可能加入更多代码,但是这些代码可能无需捆绑在事务,因为你在代码中看不到事务,而你有不会经常检查配置,所以,导致这个Service事务处理延长,甚至死机。

>spring 只需要一个配置就完成了事物的功能。自己写代码得写多少?
自己写代码只要4句,可参考Jivejdon3.0中ForumMessageService中的事务,Spring配置也需要四五行吧? 反正都是写,不要以为走AOP就多高级,性能上就遭殃,Spring 2.0还搞个静态AOP织入,那就需要新的Javac。

>jf 的革命性设计我还真没发现,到底革命性在哪里?
以后会慢慢发现,不着急。

>spring的革命性在于 j2ee without ejb, jdon呢
哈哈,without EJB只是一个标语的革命性,也就是表面的革命性,热闹啊。看看J道以前关于EJB和Spring争论的帖子吧。


架构控制器, Model 为什么在 控制器里?
我的理解是Model应该领域模型吧?
不管你的controller 是什么控制器,为什么Model会在那里存在?
而 com\jdon\model\ 这样的包里,放得竟然是 ActionForm
难以理解。

对于Util 包里的东西,我真的无法理解

package com.jdon.strutsutil;

import org.apache.struts.action.ActionForm;

public class ViewForm extends ActionForm {

}

这样的类怎么会放到Util 里。或许你的意思是说这里放的都是structs
相关的东西,但是最好能换一个名字。


我没有说JTA和local transaction 矛盾啊?这只是2种事物控制方式。
但是 local transaction 更简单,所以更常用。
至于那个 Martin Fowler 的观点,扯远了吧?


至于你说service 服务过长,导致死机,我想说,如果真的有这么长的
service,那么就应该修改service了。

另外谁说spring 2.0 就一定需要新的javac?我就纳闷了。

或许我以后会发现jf的革命性在哪里吧,但不知道得多长时间。

without ejb 只是标语的革命性?呵呵,至少那本书让很多人重新认识了
ejb, without ejb 并没有否定ejb。

说来说去,说到 jf 的革命性,
banq总是来一句“自己体会吧”

为什么不用代码证明给大家看呢?
别总说一些 ioc 阿,DDD阿什么的。

让大家看看你的jf到底好在哪个地方。

其实我对banq的水平确实是敬仰的,可惜jf真的是.... ....

>jf 这么多年难以获得认可,除去一些因素外,这个东西本身的价值也是
>很重要的。
多谢关心,JF只是思想认识的体现,至少你前面承认我的思想,这就够了,否则没有JF,别人总以为你在信口雌黄啊。

框架有时只需要一两个架构师掌握就可以,框架的应用可以欢迎很多人参与,比如Jivejdon3就是JF一个应用,有不少人在其基础上做自己的拓展开发,只是他们在提问题时才说明有这个事情。

这样难道不足够了?
中国人不是讲行善吗?与别人共享知识和思考的乐趣都是最大的善事啊。如果你给予别人的不是金钱,别人却能接受,这是对自己多大的肯定。

banq, 我觉得你的思想并没有通过jf很好的表达出来,
希望你能对jf进行本质的改造,
不然,jf 不会宣扬你的思想,反而会起反作用。

>架构控制器, Model 为什么在 控制器里?
Model放在这里,表示它很重要,如果包之间有金字塔那样的层次的话,controller就是最高的塔点。

>对于Util 包里的东西,我真的无法理解
Util包下面的类基本都是静态类。还有一些可有可无的类,如果你对可有可无的类进行探寻为什么?我也很难说清楚。UTil包不是重点,也可能有一些没有用做试验的垃圾类。

>我觉得你的思想并没有通过jf很好的表达出来
这个大概就是JF最大的问题,JF其实已经很好表达我的思想,只是很多人没有意识到,所以我在做培训,在论坛发言啊,要让更多人明白。
下面是JF文档,如果有疑问,欢迎提出:

http://www.jdon.com/jdonframework/manual.htm

[该贴被banq于2007年08月02日 15:17修改过]

你的文档我都看过了,更多是如何使用jf,如何简单的CRUD.

并没有表达出DDD的思想来。

或许你应该重新写一份,面向开发人员的,告诉人家jf那里具有
革命性的突破
[该贴被yananay于2007年08月02日 15:21修改过]

不过,我真心的说一句,请重构你的jf 包结构和其他地方吧