Michael Chen's Blog

World in my view is a word of my view.
随笔 - 74, 评论 - 235 , 引用 - 374

Web框架选型思考

经过漫长的商务折磨,终于确定了自己平台规划负责人的角色,任务非常明确:采用开源技术进行组装,开发一个具备业务含义、能够进行快速开发的软件平台。

现有项目的运行情况让我认识到了一点:在持久层与业务逻辑的相对成熟的情况下,WEB层的工作最为繁重,哪怕是引入了Tiles改善布局也如此。Struts天生的缺陷,让整个项目中WEB层显得笨拙不堪,成为整个系统中bad smell最重的的区域。从软件技术大会回来的同事说,很多同行都认为B/S系统中WEB端的工作量是整个系统的瓶颈。这一点看来已经得到了业界的普遍认可。

而现有的这个平台一定是持续使用的。如果不在WEB开发上进行改善,那么这个平台显得毫无意义:在依托面向对象技术的Java平台下,大部分其它的东西都有现成并且健壮的,对我而言都是熟悉的;而在WEB层,一定要有一个具备重用、珍惜每一个可重用WEB组件的框架在支撑。由于我们这个行业的特殊性,再带宽上也应当有所考虑。

基于这些特征,我首先想到的就是面向组件的WEB框架。这里的组件一定是网页上可见的组件,能够天生穿透Java/Javascript/Html,而不是笨拙的在JSP中import javascript;或者采用不堪的JSP tag. 这么看来,具备这一特征的、成熟的框架只有Tapestry了。

然而我对tapestry还有所保留,原因有两点:一个是对大型系统的支持不足。我们要面临的系统达到十几个子系统,3000多种交易。而Tapestry模块的支持区分不足,这一点上,WebWork来的要自然的多,Struts也提供了支持(我实在是难以出口这个词,虽然Struts将我引入了MVC的门,但是我对其丑陋的设计,臃肿的配置文件充满了憎恶)。

第二是Tapestry难以理解的URL,总让人觉得诡异(刚开始觉得挺有意思),不便于书签。好在有成功的项目证明进行修改是可行的,这个工作量也应该不大。

如果我的AMOWA概念有实现,那么我一定会选择Amowa的实现。因为Amowa中异步的概念刚好满足了系统带宽的要求。Web框架的选择过程让我了解到,组件式的web框架在知识积累上有多么重要。试问一下,我们以前做的WEB应用中,web端有多少能够自如的重用?

纵然Tapestry不尽人意,我还是决定选择Tapestry来作为平台的WEB框架(有人会说Tapestry不便于测试,试问又有多少合理的项目会将业务逻辑写在XXXPage中?),对其进行一些改造是必需的,比起持续使用与知识积累带来的好处,这么点工作量算不了什么。

发表于 2004年12月7日 21:46

评论

# re: Web框架选型思考

我们现在也面临着对 Web 表现层框架的选择问题。

不知你对使用 Tapestry 的学习成本和开发时的方便程度是怎么考虑的?毕竟与 Tapestry 思想类似的 ASP.NET 是有强大的 VS.NET 可视化开发支持的,而 Struts 等传统框架在开发和调试工具方面也占有一定优势。Java Web Component 相对 Struts/WebWork 到底能带来多大优势?还是说根本就只是两个思路而已。
2004-12-9 0:42 | Flier Lu

# re: Web框架选型思考

不同意"Struts开发和调试工具方面占有优势"这种说法。Struts开发工具多数集中在配置文件的管理上,而Struts的配置文件非常讨厌,在多人、大项目时表现尤为突出,结合tiles更加明显。另外,由于前台UI采用JSP+Struts tag, 没有任何HTML编辑器能够派上用场;更要命的是,任何在JSP中写好的东西,换到另外一个项目,积累的知识马上蒸发,得重新开始。

Tapestry在以上几个方面都有不错的表现:纯HTML模板,可以用任何熟悉的HTML编辑器来编写;配置文件基本上不相干;我更看好的是tapestry“面向组件的框架”的概念,可以有效的将知识传递下去。这对于一个平台而言是非常重要的。
2004-12-9 9:57 | Michael Chen

# re: Web框架选型思考

这也是我头疼很久的问题:),web框架的选型目前要考虑的问题确实太多了,Tapestry确实不错,但总感觉培训起来有些费劲,不如WebWork更让人易于理解,表现层虽也是tag-lib,但是由于支持ognl表达式而变的很强大。
Amowa的方式是我特别感兴趣的,这种方式来说客户体验会更好。虽然系统中已经开始使用这种异步方式,但是仍然没有抽象到Amowa所需要的方面:)
2004-12-10 12:49 | 清风

# re: Web框架选型思考

to Michael Chen:

请问“在持久层与业务逻辑的相对成熟”?
是指spring + hibernate 吗?
2004-12-21 16:35 | seeu

# re: Web框架选型思考

Java Web Component 相对 Struts/WebWork 到底能带来多大优势?还是说根本就只是两个思路而已。
这句我同意 ,tapestry 和 webwrok 应该说 根本 是两个方向
我想 应该是两个不同的方面 ,如果有一种 框架
既有webwork 的 较好 , 拦截器 , 脱离 request ,这样的思想
又有对像 tapestry web 表现层 组件化的 能力 ,
如果能够 再加上 asp net 那样的工具支持 ,我想 这就是 终极framework 了
2005-2-28 13:00 | green_girl

# re:Web框架选型思考

^_~,pretty good!
2005-4-20 0:12 | 滤纸

# re:Web框架选型思考

^_~,pretty good!csharpsseeoo
2005-5-18 10:08 | 测厚规

# re:Web框架选型思考

Web框架选型思考ooeess
2005-6-16 0:30 | 一氧化碳测定仪

# re:Web框架选型思考

Web框架选型思考ooeess
2005-7-16 5:50 | 红外热像仪

# re: Web框架选型思考

dbforms用过吗?
这个框架只要配置xml就实现了普通的CRUD操作,但是这个框架本身是模板式的,所以可以写自己的模板jsp文件

既然式模本,必然通用性不是很强;对于业务简单的任务来说,还是一个可以选择的框架
有兴趣
可以访问我的blog
blog.csdn.net/pbnow
2006-3-12 18:22 | pbnow

Post Comment

主题  
姓名  
主页
校验码  
内容   
京ICP备 05050892号