以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  什么是 Cocoon?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=99)


--  作者:dancewing
--  发布时间:11/4/2003 3:32:00 PM

--  什么是 Cocoon?
Cocoon 是一种 Java 服务器框架,它允许使用 XSLT(XML 样式表语言转换 (XML
Stylesheet Language-Transformation))转换动态发布 XML 内容。通过依靠 XML 描述
内容以及使用 XSLT 将内容转换成多种格式,Cocoon 提供了用于构建内容、逻辑和表示
在很大程度上彼此分离的应用程序的平台。
  
Cocoon 使用管道的概念来描述将内容发布到 Web 的过程。它包含各种各样的可重用组
件,这些组件可以配置成使用最低限度的 Java 开发生成复杂的行为。例如,通过单独
使用 XML 和 XSLT,Cocoon 可用于:
  
提供静态文件和动态生成的响应
使用任意数量的处理将用户请求透明地映射到物理资源
执行简单和多级 XSLT 转换
将参数动态传递到 XSLT 变换
生成各种各样的输出格式,包括 XML、HTML、PNG、JPEG、SVG 和 PDF
这大大增加了使用 XML 和 XSLT 中现有技巧进行工作的功能。Cocoon 让您能以最少的
麻烦生成动态网站。
  
Cocoon 1 和 Cocoon 2
  
Cocoon 是一个开放源码项目,它是作为 Apache XML 工作的一部分开发的。Cocoon 2
完全重写了原始的 Cocoon 应用程序,并且是建议使用的版本。新用户应该一开始就使
用 Cocoon 2,同时鼓励 Cocoon 1 的现有用户进行升级。
  
Cocoon 2 项目的目的是吸取 Cocoon 1 开发中的教训并使用它们来设计一个更有效和更
可伸缩的平台。特别是,Cocoon 1 依靠文档对象模型(Document Object Model (DOM)
)API 在组件之间传递 XML 数据。DOM 是传递数据的一种低效方式,因为通常的 DOM
树会消耗几倍于原始 XML 文档的内存。这在很大程度上限制了 Cocoon 的可伸缩性。Co
coon 2 是围绕 SAX API 构建的,SAX API 是操纵 XML 数据的一种轻量级方法。
  
两个 Cocoon 版本之间的另一个主要区别集中在应用程序管理上。在 Cocoon 1 中,个
别的 XML 文档通过包含 Cocoon 处理指令信息声明了应该如何处理它们。这将文档绑在
特定处理上,极大限制了以不同方式重用内容的灵活性。Cocoon 2 将处理的管理划分到
一个称为网站地图(sitemap)的配置文件。这将处理逻辑与内容本身分离,依次分离内
容、逻辑和显示。
--  作者:dancewing
--  发布时间:11/4/2003 3:33:00 PM

--  什么是 XSP
XML Server Pages(XSP)是一种能够创建动态 XML 数据源以便将数据传输到 Cocoon
2 管道的 Cocoon 2 技术。通过使用 XML 标记和应用逻辑的组合来描述这些数据源,然
后由 Cocoon 2 引擎自动将这种组合编译为 Java 类。

XSP 为使用 Cocoon 2 开发应用程序提供了一个灵活的平台。例如,Cocoon 2 应用程序
可以显示现有应用程序数据库中的信息,而且启用了更为多样的数据发送选项。通过提
供一种通过 XML 界面显示数据源的方法,XSP 允许在诸如中间件和文档发布那样的应用
程序集成环境中使用 Cocoon 2。


--  作者:dancewing
--  发布时间:11/4/2003 3:34:00 PM

--  再谈Cocoon兼谈JSP    hax(原作)
发信人: HAX(海曦), 信区: WebDevelop
标  题: 再谈Cocoon兼谈JSP
发信站: 饮水思源 (2002年06月06日01:17:17 星期四), 站内信件
  
著名的 IBM DW 中文网站,推出了Cocoon 2的简介教程,从而再次把我们
的目光吸引到Cocoon上。以下是我在CSDN的XML讨论区发表的个人看法,
贴过来涨点人气。
  
IBM的这个教程非常好,强烈推荐。BTW,IBM的DW网站比CSDN有用多了。
  
关于Cocoon,希望有一本《XSP/Cocoon/XML核心技术内幕》,基本上
编译了一些基本的Cocoon文档,有一定的参考价值。这也是我看到的
国内唯一的一本Cocoon的参考书。但是该书如同其它国内书籍一样,
对于基本理念的阐述不够详细和清晰。
  
Cocoon的原始动力是为了实现Content-Style-Logic的三层分离,这是
一个Web Engineer的很好的实践。
  
Cocoon也源自于以前的ServerPages技术(主要是针对JSP,当然ASP和
PHP也有同样的问题)的缺陷。尽管JSP提出了JSP Model 2,来实现
Model-View-Controller分离,即用JavaBean表示数据(内容),用
Servlet控制业务逻辑,用JSP实现显示逻辑和表现层,但还是有些实践
上的缺陷。关于这个问题的描述,在2000年10月的文章《JSP 技术 -
- 是友还是敌?》(http://www-900.ibm.com/developerWorks/cn/
java/w-friend/index.shtml)中有详尽的讨论。
  
但是如果我们跟上技术发展的步伐,就会看到这个问题由于标签库技
术的成熟和servlet过滤器机制的诞生而得到解决。TagLib早就有了,
但是直到临近JSTL即JSP Standard Tag Library的正式发布,其威力
才真正显现。
  
从角色任务上看,程序员主要负责JavaBean、Servlet和编写自定义标
签库(现在可以使用JSTL从而大大减少负担);设计者编写“不包含
java代码”的JSP,实际上是若干种标记的混合,HTML+JSTL+自定义标
签。我认为这种框架比较适合于以Java程序员为主的团队,以及业务
逻辑复杂的应用。
  
注意,正如JSP的内嵌Java代码可以实现业务逻辑,JSP的TagLib技术,
一样可以用于实现业务逻辑。当然使用TagLib将比内嵌Java代码好
许多,因为代码被封装到了TagLib中,因此对于小的应用还是可以使
用JSP,而不用写Servlet。例如使用JSTL的sql tag,来直接处理数据
库(这实际上意味着基本没有或者只有极其简单的包含在sql语句中的
业务逻辑)。也可以用像<c:if>、<c:forEach>之类的tag来处理业务
逻辑,虽然通常应该只被用来处理显示逻辑。固然,这些功能会“引
诱”一些人过度使用TagLib的能力而破坏了设计原则,但对于原型开
发、测试以及轻量级应用,实在是太有用了!如果是企业级应用,相
信有能力做企业级应用的程序员,也会有足够的意识来按照MVC模式开
发。
  
Apache的Struts是一个基于JSP实现MVC的很好的框架,建议有兴趣的
同志研究研究。
  
而Cocoon,用XML表示数据(内容),用XSP(非常类似JSP的XML形式
)编写业务逻辑,用XSLT实现表示层(HTML、WML、某种格式的XML甚
至PDF),并用sitemap(Cocoon 2)集中管理。XSP逻辑单则与JSP的
TagLib从概念到用法非常相似,只是实现方法略有不同。JSP的TagLib
包括一个xml格式的定义文件和实现的Tag类,并被编译使用;而XSP
逻辑单则在运行时(当然可以进行Cache)应用XSLT进行从标记到代码
的转换。
  
(按照我对IBM教程的理解)事实上按照管道的概念,从原始数据到最
终呈现可以有任意层,至于如何分层,每个层的用途,则在于设计者。
这也是为什么Cocoon被定位于Web发布“框架”。
  
一个处理流程可以被描述为:(摘自IBM教程)
从用户接受请求。
确定用来解释该请求并生成响应的适当管道(使用匹配器)。
从可用的预配置的组件构造管道。
指示管道为请求服务。
将由管道生成的响应返回用户,可能对结果进行高速缓存以便以后使用。
  
在JSP Model 2里,Servlet扮演“调度员”的角色,我们用它来控制
任务分派,这有点类似管道所作的事情。事实上,Cocoon就是一个大
Servlet。只是Servlet在2.3之前缺乏管道机制,只能进行简单的
forward和include,如果需要多重处理机制,就不得不依靠扩展库
(比如IBM的WebSphere),或者采用Cocoon。但是现在Servlet有非
常强大的filter机制。这使得Cocoon与JSP越来越有结合的趋势。
  
但Cocoon的特点在于,除了核心功能(Core-Cocoon)之外,它还包括
内部组件(包括Matchers、Generators、Transformers、Serializer
s、Aggregators等)、内部逻辑单(Response、Sitemap、XSP、XSP-
Request、Util、XSP-Cookie、Log等)。这样它就有一个非常适合Web

发布的环境。而使用JSP,相对来说,需要自己进行配置和写部分的
基础代码。
  
从角色任务上看,站点管理员负责定义Sitemap,程序员主要负责XSP
逻辑单,设计者编写XSLT样式表(包括XSLT和目标代码如HTML),因
为程序员和设计者都使用XSLT,其实就是在写格式转换,只是编写者
需要熟悉如何处理输入和输出(如设计者要面对HTML,程序员要考虑
数据库)。此外,在此之前需要有额外的角色来定义所用到的XML或其
他中间格式。我认为这种框架比较适合于非Java程序员为主的团队,
管理员只要熟悉XML,程序员和设计者需要掌握XSLT;以及适合于业务
逻辑相对简单,而着重于xml数据和灵活的格式转换需求的应用。


--  作者:dancewing
--  发布时间:11/4/2003 3:37:00 PM

--  
有兴趣的可以去apache.org看看
--  作者:admin
--  发布时间:11/4/2003 4:11:00 PM

--  
不错不错。。加入精华区
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
7,953.125ms