Apache Cocoon Web发布框架简介

来源:互联网 发布:淘宝人群导购怎么报名 编辑:程序博客网 时间:2024/05/23 16:04

用户在Web开发技术领域面临多种选择:ASP、JSP、Servlet、PHP等等不一而足。然而,任何商务活动的焦点并不仅仅是哪一种技术能达到最好的性能而是哪种技术能令公司在最短的时间之内交付稳固的应用程序,而我们都知道,员工们可不是一堆爱因斯坦的克隆。因此,我们要寻求一种工作在结构化格式下的技术,它应该足够灵活的适合变化中的应用的需要,而且(也是最重要的)能清晰地界定各种各样的任务。

在这篇文章里,我就要讨论一种此类技术,这就是所谓的Cocoon Web发布框架。首先让我们了解下Web发布框架的基本概念。

Web发布框架

Web发布框架可不是什么新技术了。它是一种使能器,营造和集成各种各样的技术,把它们的力量集中起来提供一个完整而且有效的Web开发框架。在基于Java的体系结构下,大多数Web发布框架多半要利用servlet、JSP乃至XML的强大力量和灵活性。这类框架相当多,比较著名的有:

  • Apache Cocoon
  • Apache Struts
  • Expresso Framework(同Apache Struts集成)

大多数的这类框架采用了流行的MVC(Model-View-Controller:模型-视图-控制器)设计模式。就MVC模式而言,所有的流程都被导引到一个中央控制器。这个控制器把请求转交给适当的处理器。接着,相应的处理器捆绑到系统的业务逻辑(模型)。作为响应,流程再导向中央控制器并转到适当的视图。这一过程有效地实现了视图和业务逻辑的松弛耦合,令创建和维持基于MVC的系统更为容易。现在,我们转过头来专注于Cocoon。

什么是Cocoon?

Apache Cocoon是一种使用而且充分利用了XML强大功能的发布框架。所谓的“充分利用了XML的强大功能”这句话是当前最令人耳熟能详的用语了,几乎每一种新型软件都做过如此一番的真情表白。然而,Cocoon倚赖XML的程度却到了绝对关键的地步,这种框架的绝妙之处正是在于XML利用方面的聪明之举。
你所有需要的就是关于XML、XSLT以及Java的一些基本的知识。然而,对Java和XSLT的理解程度却有必要依据所开发的应用程序的复杂性而变动。

Cocoon是xml.apache.org的组成部分,你可以轻松下载Cocoon的二进制发布版本或者从Apache CVS获取最新开发版本。

Cocoon文档宣称Cocoon最最重要的革新就是其SoC(Separation of Concerns)设计。这一设计把Web发布就的4个主要领域隔离开来:

  • 管理
  • 逻辑
  • 内容
  • 风格

由于这些要素不再相互牵扯,任务即可分配给擅长某一方面技术的有关人员;他们不需要理解其它方面。这样,程序员就不必再关心站点的风格,而Web设计人员也不必关心所涉及的业务逻辑。

Cocoon的工作原理

Cocoon 2的全部功能都建立在一个关键概念基础之上,这就是所谓的组件流水线(component pipelines)。正如名字所提供的信息,流水线意味着一系列的事件,它以请求作为输入,处理并转换这些请求,然后做出相应的反应(参见图A)。
流水线组件分为生成器、转换器和连载器:

  • 生成器(generator)负责接受请求并且根据输入来源创建XML结构。
  • 生成器的输出采用XML格式。采用转换器(transformer)之后这些输出还可以转换为其他类型的XML结构。要得到所希望的结果可能会用到一种或者一种以上的转换器。最常用到的转换器就是XSLT转换器。
  • 转变完成之后,你需要以希望的格式做出响应。连载器(serializer)就是完成该项任务的。连载器的输入是XML;然而,其输出却不一定是XML。HTML连载器最常用来产生网页的连载。连载器不必总是被转换器调用;生成器也能直接调用连载器。

图A

基本的Cocoon流程


在这3种部件之间传递的是SAX事件。Cocoon的另两种组件在其功能中起到了关键的作用,这就是站点地图(sitemap)和匹配器(matcher)。

站点地图

站点地图经常被称做Cocoon的核心。它主要由流水线、组件以及资源的声明所组成。只要请求到来站点地图就会派上用场。没有这张地图,Cocoon就无法解释该如何处理这些请求或者如何找到必要的资源。

站点地图的管理应该由站点管理器处理而且不应该受到程序员的关注。流水线应该是你与之打交道的唯一对象。你可以在以后阶段创建自己的资源或组件。

如何理解站点地图的工作原理呢?现在不妨用你熟悉的XML编辑器打开sitemap.xmap文件,通过这些文件学习下现有的XML结构,或者创建自己的XML。


匹配器

匹配器是一种强大的站点地图组件。站点地图根据匹配器进行匹配操作,辨识进来的请求以及将被用到的资源。当请求到来时,根据第一项正确的匹配进行相应的处理。匹配器的强大功能仰仗于它们对通配符和正则表达式的有力支持,从而令站点地图的创建工作成为一项相对简单的任务。

其他

除了给Web发布带来系统化的、清晰界定的技术措施以外,Cocoon还大大简化了大部分的开发工作。Cocoon随带了的大量连载器、生成器以及其它有用的小发明。因此,创建Acrobat的.pdf文件或通过XML创建可伸缩矢量图形(SVG)都成为了简单的转换操作而已。因为Cocoon对XML的依赖程度令其也能享受到后者所带来的独立性。这样一来,为各种各样的设备(比如WAP或者语音设备等)创建或修改应用程序也随之得到了极大地简化。Cocoon可以很容易地同RDBMS、LDAP以及本机XML数据库之类的数据源交互。

Cocoon项目还有一项重要的副产品XSP(extensible Server Pages)。XSP的宗旨是弥补JSP可能无法起作用的软肋。XSP把逻辑同表示区分开来,这正是JSP试图尝试但却没有达到目标的地方。

反过来,要熟悉Cocoon也得花费点时间。培养相应的开发力量、理解Cocoon的工作原理可不是项简单的任务。考虑到JSP开发人员的数量和JSP的普遍接受程度,适当采用标签库的基本JSP有时相比采用Cocoon的XSP或许是更好一些的选择。Cocoon在功能上还依赖于其他的Apache项目。

小结

Cocoon是一项相当出色的Web发布技术,值得各种规模的业务结构认真地加以考虑。

 
原创粉丝点击