Cocoon 2的全部功能都建立在一个关键概念基础之上,这就是所谓的组件流水线(component pipelines)。正如名字所提供的信息,流水线意味着一系列的事件,它以请求作为输入,处理并转换这些请求,然后做出相应的反应(参见图A)。
流水线组件分为生成器、转换器和连载器:
图A
在这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发布技术,值得各种规模的业务结构认真地加以考虑。