`
deaboway
  • 浏览: 54180 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Tapestry会成为Web表示层框架的主流解决方案吗?

 
阅读更多

最近几天对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通用WEB框架

    Tapestry通用WEB框架支持,切换皮肤,自主分页,

    深入浅出Tapestry

    资源名称:深入浅出Tapestry内容简介:本书以循序渐进的方式,从Tapestry框架技术的基本概念入手,讲解Tapestry框架在J2EE Web应用程序中的整体架构实现。使读者在学习如何使用Tapestry框架技术的同时,还能够获得在...

    深入浅出tapestry

    在本书还提供了一个以Hibernate+Hivemind+Tapestry 4.0为架构的J2EE Web应用程序示例,为读者提供一个完整的J2EE Web应用程序解决方案。本书还介绍了作者为Tapestry扩展的额外功能,即页面流程,详细阐述了该功能的...

    tapestry教程资料文档合集

    主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf 前3章 ---------------------------- tapestry开发流程.docx ------------------------------- Tapestry开发指南0.8.pdf -------...

    基于Tapestry+Spring+Hibernate框架的Web应用

    在维普上下载下来的。介绍3个框架的整合!!!!!!

    享受Tapestry为web开发带来的乐趣

    享受Tapestry为web开发带来的乐趣

    Tapestry开源框架的详细讲解doc文档(经典)

    Tapestry开源框架的doc文档详细讲解了与当前最流行的web开源框架struts进行了全方位的比较,Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为...

    Java Web层框架之比较—比较JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket.doc

    Java Web层框架之比较—比较JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket.doc

    Brocade Tapestry StorageX解决方案简介

    Brocade Tapestry StorageX(文件资源虚拟管理解决方案)是一个集成的应用程序套件,用于从逻辑上整合异构环境和基于CIFS与NFS文件系统中分散的文件数据,并为管理员提供自动执行数据管理功能的方案。Tapestry ...

    tapestry5以上的帮助事例,帮助文档与spring衔接文档

    Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...

    Tapestry 5 Building Web Applications.pdf

    Tapestry5 英文版入门技术指导!

    Tapestry 5 - Rapid web application development in Java

    Tapestry in action 作者最新作品,包含Tapestry 5.2

    Tapestry源码

    web,tapestry,web开发的好框架 源码

    细说Web应用开发的一致框架Tapestry

    Tapestry框架是一个位于java servlet容器和Tapestry应用程序之间的层。Tapestry不是一个独立运行的服务器;它是一个servlet的扩展,它运行于servlet容器(例如Tomcat)或包含servlet容器的应用服务器中(如Jbose...

    tapestry技术

    Tapestry是一个开源的基于servlet的应用程序框架,它使用组件对象模型来创建动态的,交互的web应用。一个组件就是任意一个带有jwcid属性的html标记。其中jwc的意思是Java Web Component。Tapestry使得java代码与html...

    Tapestry开发指南

    Tapestry是一个开源的基于servlet的应用程序框架,它使用组件对象模型来创建动态的,交互的web应用。一个组件就是任意一个带有jwcid属性的html标记。其中jwc的意思是Java Web Component。Tapestry使得java代码与html...

    tapestry5.2.6 jar包

    tapestry5.2.6 最新jar包,Tapestry框架是一个位于java servlet容器和Tapestry应用程序之间的层

    Enjoy web with Tapestry

    Enjoy web with Tapestry

    tapestry学习入门资料

    强大的tapestry框架的学习入门资料,详细介绍了tapestry的常用开发文档。

    Tapestry 5开发指南(英文)

    Tapestry 5开发指南(英文) Tapestry 5开发指南(英文) Tapestry 5开发指南(英文) Tapestry 5开发指南(英文)

Global site tag (gtag.js) - Google Analytics