每个框架都有它的适应性,我之所以对Tapestry的感兴趣也是出于当时所负责的项目。
02年下半年我负责公司的一个产品的研发工作,主要目的是提供一套企业应用的开发框架,类似于Portal/EIP,实际上我们的架构在业务的体现 上是以OA形式出现的,对于一个OA产品,关键是要提供一套相对完善的机制来简化实施任务,尽量将客户的个性化要求通过配置工作来实现,而不是进行开发。
在企业的应用中很多应用是基于文档和流程的,比如公司新闻、公司公告、企业知识库、档案管理、项目管理等,主要是信息发布和公文流转应用,我们希望 能把一些通用的业务产品化,然后在实施的时候可以让实施人员灵活配置,包括对业务过程、文档内容中的字段属性、校验规则、业务流转规则、业务规则、组件表 现、页面布局和样式等进行配置,同时可以嵌入脚本来适应用户的定制需求。
文档型应用很多是基于工作流引擎和文档引擎的,支持规则的配置和外挂脚本的嵌入,规则的配置和脚本都写在配置文件里的,业务规则中需要对业务组件的 属性和方法进行操作,外挂脚本也是,这就要求Web的应用开发必须是组件式开发,业务组件的属性和方法是可以写在流程的流转规则和控制规则里,并且可以被 外挂脚本调用,应用程序中各个单元是组件方式。
同时,既然是产品,在表现上必须考虑用户的个性化要求,从组件表现到整体页面都应该允许支持独立的客户模板,要求业务和表现完全分开,并且要支持事件编程。这时传统的Web应用开发方式已经不能满足要求。
在完成工作流引擎的初始版本后,我们开始研究流行的框架,包括Struts、Turbine还有Echo、JSF等,Struts首先被放弃,因为 它的导航机制和我们的引擎冲突,并且用的是Taglib,和我们所要求的“干净”模板需求冲突。Turbine的问题是它的模板定义vm文件采用了它自己 定义的$形式的语法标签(是个完全独立的模板语言,看来设计者以前是个Perl程序员,:),后来我们在用Jetspeed做门户应用的时候,发现它的应 用框架用的是Turbine,当时头就大了,呵呵),这就更与我们的要求背离,Turbine真正好的地方是它的O/R Mapping等服务工具部分。Echo的设计是组件思想,但表现竟然采用类似Swing的编程方式,太疯狂了。JSF倒是提供标准的事件处理机制,但很 难接收它的组件标签方式,实际上还是变相的Taglib,没有什么本质的改进,还是不适合。
后来我们发现了Tapetry,当时的感觉就是这就是我们要的东西,确实它的架构非常切合我们的需求。
每个Tapestry application,我们理解为一个完整的应用模块,由一个.application配置文件进行定义描述,里面定义了这个application所 包含的page和component。每个page也由一个.page配置文件进行定义描述,在Tapestry中,每个page包括一个.page文 件、一个HTML模板(标准的HTML文件)和一个Java类,Java类是可选的。.page配置文件中,可指定与这个page对应的Java类、所引 用的Bean和html中用到的component。
另外在工作流引擎中,Activity活动之间数据的传递机制也在Tapestry中得到完美解决,不再采用request、response和 session方式,page之间传递的是visit对象,visit对象用于在page之间传递application内部专用数据,这和工作流定义的 应用相关数据处理方式非常吻合。
至于页面表现,在页面html文件里,只要在需要插入组件的地方写上“jwcid”之类的属性后进行编码,不会对模板页面的设计造成影响,可以正常显示页面制作人员的工作成果,这样页面和程序可以完全分离。
当看完它的文档后,我们做了一个很简单的例子,效果很好,也非常容易理解,如果不是后来的一些事情公司搁置了这套引擎的开发,也许现在我们已经完成了这个框架,也可以详细的叙述Tapestry的优缺点了。
通过对Tapestry的初步分析,个人觉得Tapestry的思想比较符合我们目前的应用设计和开发思想,由于它封装了Servlet,完全以组 件驱动方式来处理请求、生成页面,并实现了页面和程序的分离,从这些方面看,比Struts、Turbine这些框架要先进得多。
不过毕竟没有非常深入的研究Tapestry,需要通过实际的开发来掌握它,希望能看到更为深入的剖析文章。说句心里话,Tapestry的技术很 好,就是对于Apache,现在都有点不放心了,每个框架都来自己的一套,由于无法集中力量,项目越来越平庸,很多不如专业做某一块技术点的开发项目做的 好。O/R Mapping做的比较早,但已经落后于Hibernate了。
另外采用Tapestry,也要考虑到它的适应场合,如果采用的是胖客户端机制,如我们原来的web应用框架或者dlee他们的应用框架的话,Tapestry框架就可能不是很合适,毕竟它还是基于Thin客户端机制来设计的。
采用哪个框架,实际上取决于项目的特点、公司技术力量、历史经验成果,架构设计人员的目标和喜好,同时要项目组的伙伴容易理解和很快上手,在开发过程中,能有效的适应专业化分工要求、容易测试,这些综合性的因素决定了最终所用的框架结构。
分享到:
相关推荐
Tapestry是一个强大的Java Web应用程序框架,由Apache软件基金会维护。它旨在提高开发效率,提供高度模块化和可重用的组件,以及优秀的错误处理和调试能力。在深入探讨Tapestry的知识点之前,让我们先了解一下这个...
### 基于Tapestry+Spring+Hibernate框架的Web应用 #### 框架概述与整合 在当今的企业级Web应用开发中,选择合适的框架是确保应用性能、可维护性和扩展性的关键。Tapestry、Spring和Hibernate作为三个广受好评的...
Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得轻而易举。并且开发的应用很容易...
本书以循序渐进的方式,从Tapestry框架技术的基本概念入手,讲解Tapestry框架在J2EE Web..., 本书适合Web框架技术的爱好者、Tapestry入门学习者、Tapestry表现层开发人员和关注下一代的Web开发技术的公司与个人用户。
Tapestry 5 是一个基于 Java 的开源 Web 开发框架,旨在简化 Web 应用程序的开发过程。它通过提供一系列高级抽象和组件化方法,帮助开发者更加高效地构建可维护性强且易于扩展的应用程序。本书《Tapestry 5 构建 Web...
Tapestry是Apache软件基金会的一个开源项目,它提供了一种基于Java的声明式MVC(Model-View-Controller)框架,用于构建高度模块化和可维护的Web应用。 Tapestry 5.0的核心理念在于通过组件化来提升开发效率和代码...
Tapestry 5是一个强大的Java Web应用框架,由Apache软件基金会开发并维护,它致力于提供一种更高效、更优雅的方式来构建动态、交互式的Web应用。 这本书详细介绍了Tapestry 5的核心概念和技术,包括组件模型、页面...
Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、模块化和可重用性,使得开发复杂的Web应用变得更加简单。本文将深入介绍Tapestry 4的相关知识点。 1. **组件化编程**: ...
主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf 前3章 ---------------------------- tapestry开发流程.docx ------------------------------- Tapestry开发指南0.8.pdf -------...
Tapestry是由Apache软件基金会维护的一个开源Java Web应用程序框架,它提供了一种高度模块化和声明式的方式来构建动态、高性能的Web应用。Tapestry的核心理念是将界面和业务逻辑分离,使得开发者可以专注于创建功能...
Tapestry 是一款用于构建企业级Java Web应用的强大框架,其第五代版本——Tapestry5,更是以其易用性和灵活性著称。本文旨在通过一个简单的实例来详细介绍如何利用Eclipse、Maven和Jetty在开发环境中搭建并运行一个...
本文将深入对比六种流行的Java Web层框架:JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket。 **JavaServer Faces (JSF)** JSF作为Java EE的一部分,拥有广泛的支持和市场需求。它的优点在于快速上手和丰富...
Tapestry、JSF和Wicket是目前主流的面向组件的Web表现层框架。 2. 传统的面向元素开发方式 在Java Web开发中,Servlet API是最基础的部分。Servlet是一个接收客户端请求并返回响应的Java类,通过Servlet容器(如...
资源名称:深入浅出Tapestry内容简介:本书以循序渐进的方式,从Tapestry框架技术的基本概念入手,讲解Tapestry框架在J2EE Web应用程序中的整体架构实现。使读者在学习如何使用Tapestry框架技术的同时,还能够获得在...
Tapestry是一个开源的Web应用框架,它颠覆了J2EE Web应用程序表现层技术的传统思维,实现了面向对象编程的表现层技术。Tapestry的作者是董黎伟,毕业于西南交通大学,他是Sun认证Java程序员,曾在JavaEye论坛设立...
Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...
Tapestry4作为一款先进的Web应用框架,由Howard Lewis Ship所创造,旨在提供一种更为高效、灵活的Web应用构建方式。与前代Tapestry3相比,Tapestry4在设计上有了重大革新,尤其是在与Hivemind框架的深度集成方面。...
Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它提供了一种基于组件的模型来构建动态、数据驱动的Web应用。本教程将帮助初学者了解Tapestry的基本概念,带你逐步入门并掌握其核心组件的使用...