Apache开源项目,www.apache.org。采用JAVA语言编写,2.2版本基于Spring(另外一个著名的JAVA开源项目)实现。
cocoon是一个通用的基于组件的web开发框架,它着重于分离开发中的关注点,为整个系统各功能单元解耦合,因此使用cocoon的处于不同角色的开发者在互相不了解的情况下也能够进行良好的交互协同。
但凡有过系统分析经历的开发者都明白,在进行系统分析和设计得的时候,对关注点的分离,对系统中各单元的解耦合,是一个焦点也是一个难点。那么cocoon中是怎么实现关注点的分离呢?
cocoon中引入了"组件管道"的概念,这里的管道概念和unix shell 中的管道概念相同,就是将一系列分离的操作串在一起,前一操作的输出为后一操作提供输入,以完成一个较复杂的处理,就像一节一节的管道前后相连,数据在其中流动。处于管道中的每一个组件都负责一个明确的特定的任务。通过将不同的组件加入到管道中形成一个整体,就使得仅仅通过对组件的"堆砌"而不用编程就能提供一个完整的web解决方案成为可能。
cocoon自称为"web应用开发中必不可少的粘合剂",而且是一种在达到关注点分离的同时还能提升开发进度和降低开发冲突的万能胶水。
cocoon被设计为可以与现存的J2EE应用共存和互操作,在不需要修改基础架构的情况下为系统增加新的功能。
cocoon可以和很多数据源交互。包括文件系统、RDBMS、LDAP、纯XML 数据库、SAP和reg; 系统和基于网络的数据源。它可以使输出内容适应不同设备的能力,比如HTML、WML、PDF、SVG、RTF等许多格式。cocoon可以被作为一个servlet运行于web服务器中,也可以通过一个功能强大的命令行接口使用。由于cocoon的抽象设计是经过深思熟虑的,所以可以为开发者提供一个自由的扩展空间以满足自己特殊的需求,而且这些扩展都是高度模块化的,这样就使整个系统是建立在一个相当灵活和清晰的架构平台上,帮助用户达到随需应变的发展要求。
cocoon的组件化和关注点分离的概念得益于它底层所使用的excalibur框架,而excalibur又是Avalon框架的延续。Avalon项目是apache下的一个子项目开始于1999年2004年分割为Excalibur、Loom、Metro、Castle。它倡导反向控制(IoC)和关注分离(SoC)。
此外,cocoon还内建了高级的控制流机制。通过连续的页面流控制隐藏了复杂的请求/应答处理,并使视图层和数据层的分离更加清晰。
下面介绍一下cocoon的主要应用领域。
动态的多频道的web内容发布——cocoon能够与很多数据源相连并提供多种输出格式
自动的创建静态内容——cocoon可以使数据脱离视图而存在
离线模板生成——cocoon提供命令行接口(CLI)、ant task、bean等操作手段
EAI
CMS
Portal
i18n
.....