最近几天对Web层框架发生了兴趣,特别是看了“一蓑烟雨任平生”的文章之后,也想谈谈自己的看法:
Web层框架分为Rich Client和Thin Client两类思路,下面分别分析:
一、Rich Client
Rich Client的关注者有很多,例如dlee、gigix、Quake。dlee支持XMLHTTP,gigix的blog上看到他准备写一个“Return of Rich Client”,似乎有支持的倾向,Quake比较关注Flex。
当前Rich Client框架解决方案主要有几类,一类是XMLHTTP的解决方案,一类是基于Javascript的解决方案,例如Bindow,一类是Flex之 类的方案,还有一些用java web start的。我可以这样断定,当前的这些Rich Client没有一个有希望成为主流Web解决方案!
当前的Rich Client方案具有如下的缺点:
1、技术过于复杂,实现很不容易
2、不能单独构成一个完整的解决方案,还需要其他很多技术配合完成
这样就算你掌握了这种技术,仍然不能够把整个Web层做出来,还需要掌握其他很多相配合的技术,然后整合一个Web层的完整框架出来。
dlee公司做了那么久积累,自己公司已经形成了完善的围绕XMLHTTP的Web层框架了,但是其他公司没有办法模仿出来,现在也没有人做一个完 善的XMLHTTP框架出来给大家用,不是每一个公司都肯下功夫自己去钻研和围绕XMLHTTP去建立一个框架,并且这种框架也可能并不完全通用。
综上所述,当前的Rich Client框架更适合于特定的公司围绕该技术形成了自己独特的Web层解决方案,而没有可能成为行业的主流Web框架。
这里有一个例外,有人提到Longhorn的XAML,我承认我也看好这个东西,不过Longhorn要2006年才出来,普及还需要至少两年(不 要忘记2001年WindowsXP出来,到现在WindowsXP的普及率只有30%),最乐观估计,XAML的普及也要到4-5年之后了。至于那个时 候XAML是否真的成功,还是未知数,不要忘记MS的hailstorm失败之惨。
二、Thin Client
Thin Client中流派也特别多,各种各样的框架,我都眼花缭乱了。有Struts,Webwork2,Velocity,JSF,JSTL, Turbine,Tapestry,。。。。。。这许多Thin Client框架中,我没有一个熟悉的,除了Struts之外,全部没有用过。所以且容忍我的厥辞和错误。
首先谈谈我唯一用过的Struts。我非常反感Struts,反感Struts僵化的ActionForm,反感Struts的死板的MVC结构,当然最反感的是Struts的Taglib!特别是html tag,这东西一用上,DW里面打开什么都看不到。
接着说Webwork2,这东西现在很多人对它好评,我简单看了看介绍,看起来似乎是和Struts一类的框架,只不过各个方面都全面的改良。
其他的我就更加不熟悉了,不过他们有一个共同的地方,就是统统喜欢用Taglib,而Taglib是我最讨厌,最反感的东西。
我认为JSP里面使用Tag,就是一个错误!我反对在JSP里面使用Tag,我推荐大家在JSP里面写Java代码,没错,就是在JSP里面写Java代码,我就是一直这么干!
很多人可能要跳起来批评我的了,我承认我的观点是让太多人不可思议,仿佛是历史潮流的倒退。但是我请大家想想看,JSP本质上是什么东西?
JSP是嵌入式脚本,是服务器端页面编程语言,没错,就是脚本语言,是页面编程,就是要你嵌入代码的。JSP为什么要出现,PHP为什么要出现,就是因为在页面里面嵌入代码很方便,开发方便,调试方便,连美工做页面都方便。
为什么PHP这么流行?就是因为在页面里面嵌入代码简单,开发非常简单!而且在DW里面,你写代码完全不影响美工调整页面,可以很好的分工。美工也不会吃饱了撑的去动你用<>括起来的代码段。虽然在一个文件里面,大家分工良好,合作愉快。
而且调试还很方便, 你随便一个out.println(..),然后刷一下页面,看看浏览器页面上有什么结果,多方便。
然后看看JSP的Tag给我们带来了什么,nightmare !美工mm用DW打开页面,看到的是一片空白,或者支离破碎的页面,她就纳闷为什么看起来好好的页面怎么就这样子呢?不应该啊!而我们的程序员gg也很努 力的写着让美工mm看起来似乎很亲切的仿佛想html一样的tag,而不得不努力在后台做着tag的映射xml文件和编写麻烦的tag程序,极大的增加了 JSP页面的调试难度,结果却是被mm扁。
有人说了,很多页面显示的重复性工作,你用Tag可以节省页面代码量,那我写Java class不一样吗,然后你在JSP里面调用Java class好了,tag本质上就是java class,有什么区别,就是调用形式不同而已。还生搬硬造了一套既不讨好美工mm的,又让程序员gg别扭的Tag语法,此语法还四不像,好像像 HTML,又不像,好像像java bean,可也不对味。最过分的是每个Web框架还自己搞一套Taglib,JSP2.0还增加更多的Taglib,我看除了把我们的程序员gg当猴耍之 外,没有任何好处。
如果Taglib真能实现页面和代码分离的话,他还总算有点可取之处,然而它根本没有做到,你仍然不得不在JSP里面去写点Java代码,你仍然不 得不在Tag程序里面写点out.println(...),来输出页面内容,既然你做不到分离,那么藕断丝连的,何必矫揉造作的分开呢?增加了我们程序 员gg的负担不说,还让我们的美工mm在DW里面面对一些支离破碎的页面无从下手。Taglib,你罪莫大焉!
从Sun在JSP里面引入Taglib,我就认为他是一个谎言!我认为大家都被Sun欺骗了,我做JSP编程,但凡我写过的JSP,我从来不用 Tag,我觉得写java代码让我很舒服,我不需要再去学习那别扭而无意义的Tag语法,来增加我的工作量,来增加我的JSP页面调试难度。
因此,一切采用Taglib的Web框架,被我毫不留情的排除!然后我的目光落在了一个叫做Tapestry的东东上。然后我发现这东东有点像去年 的此时的Hibernate,仿佛一个地下幽灵,很多人都开始悄悄的讨论他了,并且得到了广泛的好评,但是还没有真正走上台面来被广泛的应用。据说 Tapestry真正实现了页面和代码的分离,并且把OO编程执著的贯彻到了Web层。
dotnet的webforms一出来,让我们大家见识到页面的事件驱动编程模型,算了开阔了思路了,然而webforms频繁的服务端交互也让人 很烦躁,webforms也是用tag方式来定义服务器端组件,通过hidden 域和服务器交互,不适合Internet,只不过MS自己的工具FrontPage自家可以读出来这样的Tag,所以webforms还是在用tag,但 是他向我们证明了一点,OO是可以贯彻到Web层的。
我想要的就是一个可以页面和代码完全分离,不需要使用Tag的Web框架,能够OO当然最好,我似乎隐约的预感到Tapestry是我心目当中真正要的Web框架,他有成为Web框架主流的可能性吗?我不知道,但我已经对它产生了兴趣,我要研究研究它了。
噢,对了,还有一个JSF,Sun的JSF,不过我眼中已经没有Sun了,这几年来,sun都干了些什么?就像我们不能指望JDO2.0一样,我们同样不能指望JSF。
分享到:
相关推荐
Tapestry是一个强大的Java Web应用程序框架,由Apache软件基金会维护。它旨在提高开发效率,提供高度模块化和可重用的组件,以及优秀的错误处理和调试能力。在深入探讨Tapestry的知识点之前,让我们先了解一下这个...
### 基于Tapestry+Spring+Hibernate框架的Web应用 #### 框架概述与整合 在当今的企业级Web应用开发中,选择合适的框架是确保应用性能、可维护性和扩展性的关键。Tapestry、Spring和Hibernate作为三个广受好评的...
- **认证与授权机制**:介绍 Tapestry 5 提供的安全性解决方案。 - **角色与权限管理**:演示如何基于角色进行权限控制。 - **会话管理**:讲解如何管理用户的会话状态。 ##### 7. **性能优化与部署** - **缓存...
在本书还提供了一个以Hibernate+Hivemind+Tapestry 4.0为架构的J2EE Web应用程序示例,为读者提供一个完整的J2EE Web应用程序解决方案。本书还介绍了作者为Tapestry扩展的额外功能,即页面流程,详细阐述了该功能的...
本文将深入对比六种流行的Java Web层框架:JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket。 **JavaServer Faces (JSF)** JSF作为Java EE的一部分,拥有广泛的支持和市场需求。它的优点在于快速上手和丰富...
主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf 前3章 ---------------------------- tapestry开发流程.docx ------------------------------- Tapestry开发指南0.8.pdf -------...
Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得轻而易举。并且开发的应用很容易...
总结起来,Tapestry作为面向组件的Web框架,旨在解决传统Web开发中的复杂性问题,提供更高效、可扩展和易于维护的解决方案。通过学习Tapestry,开发者可以掌握一种新的、更为先进的Web应用开发模式,提升开发效率和...
Tapestry是一个开源的Web应用框架,它颠覆了J2EE Web应用程序表现层技术的传统思维,实现了面向对象编程的表现层技术。Tapestry的作者是董黎伟,毕业于西南交通大学,他是Sun认证Java程序员,曾在JavaEye论坛设立...
Tapestry 5是一个强大的Java Web应用框架,由Apache软件基金会开发并维护,它致力于提供一种更高效、更优雅的方式来构建动态、交互式的Web应用。 这本书详细介绍了Tapestry 5的核心概念和技术,包括组件模型、页面...
Tapestry 5是一款强大的Java Web应用程序框架,由Apache软件基金会维护。它提供了一种声明式编程模型,使得开发者能够创建动态、响应式的Web应用,同时保持代码的整洁和易于维护。本指南将深入探讨Tapestry 5的核心...
Tapestry是由Apache软件基金会维护的一个开源Java Web应用程序框架,它提供了一种高度模块化和声明式的方式来构建动态、高性能的Web应用。Tapestry的核心理念是将界面和业务逻辑分离,使得开发者可以专注于创建功能...
Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、模块化和可重用性,使得开发复杂的Web应用变得更加简单。本文将深入介绍Tapestry 4的相关知识点。 1. **组件化编程**: ...
总之,Tapestry 3是一个功能丰富的Web框架,它的组件化、事件驱动和声明式编程模型为早期的Web开发提供了创新的解决方案。虽然现在更现代的版本如Tapestry 5和Tapestry 6已经发布,但Tapestry 3仍然是理解Web开发...
Apache Tapestry 是一个开源的Java Web应用程序框架,用于构建动态、数据驱动的Web应用。它强调组件化和模块化开发,使得代码易于维护和扩展。`apache-tapestry-5.3.8-bin.zip` 是Apache Tapestry 5.3.8版本的二进制...
Tapestry是一个强大的Java Web应用程序框架,由Apache软件基金会维护。它主要专注于提供组件化、模块化的开发方式,以及高度的可维护性和可扩展性。本压缩包包含了一系列的学习资源,帮助开发者深入理解和掌握...
Tapestry 5.2.6 是一个成熟的Java Web开发框架,它提供了一种高效、模块化和可扩展的方式来构建动态、数据驱动的Web应用程序。这个框架的核心理念是将用户界面与业务逻辑分离,通过组件化的思想实现页面的构建,从而...
Brocade Tapestry StorageX(文件资源虚拟管理解决方案)是一个集成的应用程序套件,用于从逻辑上整合异构环境和基于CIFS与NFS文件系统中分散的文件数据,并为管理员提供自动执行数据管理功能的方案。Tapestry ...