|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
大家用过seam的都请进来讨论,这里我先抛砖引玉一下
看了网上多篇文章都提到jboss Seam有严重压缩了软件结构的问题。我有些感想和经验。
我先说说seam怎么个压扁了我们心爱的mvc:
1. vc压扁:
现象:在seam里,每个ejb加上@Name,马上摇身一变又成了seam component。而一个seam component就直接是jsf的managed bean了。在view层,我们可以不用任何java代码了,view被压缩。
原因:seam诞生的初衷,只是想缝合jsf层和ejb层,并提供state management的容器。这也是现在gavin king提倡的web bean概念。
2. mc压扁:
现象:ejb3 entity作为domain model被放进逻辑代码,被扔进client端。model和control混合了。
原因:ejb3 entity的可线性化,使得entity直接成了DTO了。而且,gavin king在例子里很喜欢在entity里放逻辑,一点都不吊贫血模式,现在充血entity成了seam下的特点。
(gavin king的反骨是很明显的,在seam里我们还能体会到他的叛逆精神,譬如,不管多少专家呼吁应用的stateless性,gavin king却始终强调stateful时代的到来。)
这么一下mvc变成了一层。也就说,一个标识成seam component的的ejb,即是持久层,也是企业逻辑层,还是表现层。seam example里几乎都是这样的一层结构。
难怪从框架师眼里,seam简直是种颠覆。但对,需要快速开发的程序员来讲,seam让ee应用的开发带了RoR的味道。
不知道大家对这样的压扁怎么看。
我个人的看法是,seam只是个servlet层的framework。它虽然可以整合jsf和ejb,但是事实上,每个seam component都是依附于ejb生存周期的。简单点说,就算一个seam component标志seam scope为application,如果你的ejb是stateless,这个seam component还会是非常短命。ejb container才是老大。从这个角度来看,seam是完全可以独立出来的。今年年初,一个spring社团的牛人加入jboss seam开发队伍,整合了seam和spring。使seam的发展方向变得更加的宽广了,即seam可以完全不需要ejb。由于这个seam component的独立性,seam做的应用结构就可以象橡皮糖样,你想拉开就拉开,你想压扁就压扁。
以下是我的一种结构拉伸。
合并的jsf和seam只用于表现层,状态管理完全用seam 的不同scope,逻辑层统统stateless,持久层ejb的dao和entity。具体点说就是jsf和seam放war,逻辑层一个独立ejb jar,持久层一个独立ejb jar.
如果大家有其他的拉伸方案,欢迎一起讨论 |
|