论坛首页 Java版 设计模式

JSF的优雅 带来的项目成本

浏览 12940 次
精华帖 (5) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2008-03-12
推荐LZ用seam2+ejb3+icefaces

你会觉的开发也是种乐趣的.

不过组件扩展还是很令人头疼的.
   
0 请登录后投票
时间:2008-03-12
dboylx 写道
最近在做JSF的项目, 感觉它的想法非常不错, 业务层的解偶, 多样式的表现, 组件式的代码复用 , 设计优雅, 代码简洁...

按土话讲, 这东西"很洋气".

看了FUD的系列文章, 起初感觉不错.

不过, 在完成一个自定义的组件开发后, 却给我带来了更多的思考,

JSF的自定义组件的开发成本高的惊人, 开发难度大,

它的简洁性是体现在 高度封装复杂业务实现,

使用起来非常简单, 几行代码就可以完成相当复杂的业务,

像状态保存与恢复, 事件驱动, 验证, Composite设计, 导航与跳转的简单流程控制.

但面向组件编程总是有不好的地方,

组件可以复用, 但不一定可以百分百满足客户各种细粒度的细节需求,

更要命的是, 有位神仙曾说过"细节决定成败"....

客户总是上地, 他说的话, 您也不能一点不在乎,

为了满足他方方面面需求, 而不得不开发一些自制JSF组件,

既然是开发, 自然要了解JSF的生命周期 与 不同实现的工作原理,

复杂度一下就上来了, 由其还要做AJAX的需求...

自定义组件要不要与现有行业务级架构(一个公司做一个行业的项目肯定会有自己的行业级别的架构)做深度集成也是个问题,

JSF组件的开发成本高, 而且难于测试(一个项目的测试时间往往会比开发时间还要长), 开发周期长

所以一个小需求是否要被满足与实现, 将会变得更加困难,

项目管理者更难在时间,成本与质量上找到平衡点,

项目的技术实现会随着需求的增加而显的束手束脚.

项目难于进展, 长时间没有个交付物的时候, 项目组的人员也会士气低落 .

由于项目的复杂度节节攀高, 公司内的其它员工谁也不敢轻易进入...死项目就是这样产生的


JSF组件开发的不好的应变性, 与带来的好处, 我觉得并不成正比例.

如果这个项目是拿来玩的, 或是开源的, 很适合,

但拿来做项目...无疑会提高项目的风险


以上是我个人做项目的想法...拿出来与人分享.



1.自定义组件的开发的确比较复杂,需要深度了解jsf体系结构,但是它为开发高复用的业务组件带来了机会,对于开发组件的角色应该在公司是横切式的,不仅仅服务于一个项目。

2.我认为和旧的展现层框架比起来它为业务的良好封装带来了机会。

3.是否用简单的几句话就实现复杂的业务得看具体的设计,粗粒度的组件需要更高可用性的外部接口,组合式有时会胜过封装式。

4.感觉jsf不好的地方往往是因为规范带来的弊端,就是没有给出最良好的实践,seam集成jsf的目的基本是解决这样的问题。

5.细粒度的需求如果使用组合式会更好,有时是混合式。不一定要做一个自定义组件。

6.关注细节确实是jsf是否可以被接受的关键。

7.jsf实现的是框架而不是大包大揽的解决方案,客户的变态需要你的多变的解决方案,而不是依赖jsf组件来实现一切
8.往往费劲心思的开发一个组件,不如一个简单的多种类型标签混合使用,80/20原则,变态的地方不是存在项目的每个地方。

9.开发jsf的目的就是让你忘掉request的整个生命周期,当然不包括自定义组件开发者,对于普通开发者必要的了解是有助于开发,而不是必须的。所以我认为项目要使用jsf一定需要一个或几个横切式的开发者
10.javascript的需求最好别和jsf放在一起,除非已经进行了合理javascript组件封装,ajax的使用就是一把双刃剑,得自己掌握了。

11.任何项目的深度集成都会存在复杂的技术问题,和jsf这种技术没有关系,恰恰jsf的灵活插接设计很适合集成的需要,作为开发者要多多了解体系结构了。

12.使用jboss的测试解决方案,可以提供更优良的测试解决方案,但是seam和ejb3需要考虑使用,反过来表现层的单元测试在基于请求式框架中一向都比较难以实现,大部分展现层测试都是跑在容器内进行的,jsf解耦容器对象,为单元测试提供了更好的机制,目前除了jboss的jsfunit,还不知道有没有更好的实现。

13.项目中的困难往往是项目的领导者本身不熟悉jsf的开发模式所带来的,需要不断总结。

14.当你以后的项目都是使用jsf作为基础建设,你的思考不会总是停留在一个项目的成败,很多事情你还没有经历过,不要妄自评断。
   
0 请登录后投票
时间:2008-03-12
个人感觉不是很喜欢组件这种东西,因为每一个组件封装了太多自身未知的东西,我没用过JSP不知道和.NET的DATAGRID这类的组件是否有雷同的地方。如果本身对JSP的常用组件都比较了解的话当时喜欢用,必定我知道它的底细么。感觉如果想用一个东西还是先熟悉它比较好,以降低项目的风险。所以如果让我用JSF可能学习的周期比较长。
   
0 请登录后投票
时间:2008-03-12
fangshun 写道


1.自定义组件的开发的确比较复杂,需要深度了解jsf体系结构,但是它为开发高复用的业务组件带来了机会,对于开发组件的角色应该在公司是横切式的,不仅仅服务于一个项目。

2.我认为和旧的展现层框架比起来它为业务的良好封装带来了机会。

3.是否用简单的几句话就实现复杂的业务得看具体的设计,粗粒度的组件需要更高可用性的外部接口,组合式有时会胜过封装式。

4.感觉jsf不好的地方往往是因为规范带来的弊端,就是没有给出最良好的实践,seam集成jsf的目的基本是解决这样的问题。

5.细粒度的需求如果使用组合式会更好,有时是混合式。不一定要做一个自定义组件。

6.关注细节确实是jsf是否可以被接受的关键。

7.jsf实现的是框架而不是大包大揽的解决方案,客户的变态需要你的多变的解决方案,而不是依赖jsf组件来实现一切
8.往往费劲心思的开发一个组件,不如一个简单的多种类型标签混合使用,80/20原则,变态的地方不是存在项目的每个地方。

9.开发jsf的目的就是让你忘掉request的整个生命周期,当然不包括自定义组件开发者,对于普通开发者必要的了解是有助于开发,而不是必须的。所以我认为项目要使用jsf一定需要一个或几个横切式的开发者
10.javascript的需求最好别和jsf放在一起,除非已经进行了合理javascript组件封装,ajax的使用就是一把双刃剑,得自己掌握了。

11.任何项目的深度集成都会存在复杂的技术问题,和jsf这种技术没有关系,恰恰jsf的灵活插接设计很适合集成的需要,作为开发者要多多了解体系结构了。

12.使用jboss的测试解决方案,可以提供更优良的测试解决方案,但是seam和ejb3需要考虑使用,反过来表现层的单元测试在基于请求式框架中一向都比较难以实现,大部分展现层测试都是跑在容器内进行的,jsf解耦容器对象,为单元测试提供了更好的机制,目前除了jboss的jsfunit,还不知道有没有更好的实现。

13.项目中的困难往往是项目的领导者本身不熟悉jsf的开发模式所带来的,需要不断总结。

14.当你以后的项目都是使用jsf作为基础建设,你的思考不会总是停留在一个项目的成败,很多事情你还没有经历过,不要妄自评断。





您的意思主要是横彻功能组件实现服务于 多个项目吧,

注重自己核心技术的开发, 甚至自己业物型架构的开发。

如果是技术型公司,可以有效率保障自己技术核心竞争力而不被大公司所牵制。

先学习了。
   
0 请登录后投票
时间:2008-03-12
JSF,两年前用过,它的MVC还是不错的,反正那时候用的比struts舒服。但是它的组件是在是太恐怖了,开发维护成本很高。用现成的却没有完全合适的,那时候apache的MyFaces项目有好几个UI的实现,各具特色,要是能整合一下也许会好的多。
   
0 请登录后投票
时间:2008-03-12
说一点我的想法,就如同WINDOWS下的控件,其实开发一个难度也是相当大的,于是,就有了专业开发控件的公司,系统集成者,拿来用就行了.分工合作.
   
0 请登录后投票
时间:2008-03-12
darchen 写道
说一点我的想法,就如同WINDOWS下的控件,其实开发一个难度也是相当大的,于是,就有了专业开发控件的公司,系统集成者,拿来用就行了.分工合作.


看看tapestry,wicket的组件开发吧。 一个html加上一个java class就是一个compoent。that's all.
   
0 请登录后投票
时间:2008-03-12
JSF根本就不优雅,效率很低
   
0 请登录后投票
时间:2008-03-12
太多争论没用
看看组里技术成熟度 定制 开发框架,这样更有效率
   
0 请登录后投票
时间:2008-03-12
dboylx 写道


您的意思主要是横彻功能组件实现服务于 多个项目吧,

注重自己核心技术的开发, 甚至自己业物型架构的开发。

如果是技术型公司,可以有效率保障自己技术核心竞争力而不被大公司所牵制。

先学习了。


很多人开发jsf组件的目的都是想让自己的页面开起来更简洁,更美观。这是一种错误的想法,我并不是反对这种做法,其实这是每个开发者的重要目标,但是如果此仅仅作为jsf自定义组件开发的目的,那么你会需要开发大量的封装组件,对于jsf组件的高复杂性会让你觉得进入痛苦与黑暗。

jsf组件体系是相当的优秀,进入规范的组件有着明确的族系。那么也就是说你要是开发组件就一定要清楚自己属于哪一族类的,有没有角色位置都相同的组件,如果有那么是扩展,增强,还是重新构建,所以组件的开发是很核心的技术,会对你的技术积累有深远的影响。

jsf组件的体系中,很多web标记的渲染都是在组件中进行的,这样从规范来看是图省事,对于组件开发者来说就增加了组件继承式开发的负担,需要大量的阅读。所以这一是对自定义组件开发者有更高的要求,二也是要求组件的实践化道路上有着更好的组件渲染机制和方式。

其实你最后一句话说的很好,其实不仅仅适用用技术型公司,也适用拥有大型项目,或者考虑长远发展的公司。我的实践告诉我,当今流行的很多轻量级框架虽然带来了很强的短线利益,但是在应用集成,技术积累方面大多都是捉襟见肘,一无是处,固执的不肯放下观念,只是一种生产力的倒退,却还在意淫。(这不是说你,是当前流行的现象)
   
0 请登录后投票
论坛首页 Java版 设计模式

跳转论坛: