`
biaowen
  • 浏览: 74432 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Cocoon原始动力

阅读更多
关于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语句中的业务逻辑)。也可以用像、之类的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数据和灵活的格式转换需求的应用。
分享到:
评论

相关推荐

    cocoon

    Cocoon,这个名字在IT行业中可能指的是Apache Cocoon项目,它是一个基于XML的Web开发框架,由Apache软件基金会维护。Cocoon的设计理念是提供一种组件化、可配置和可扩展的方式来构建Web应用,强调内容管理和重用。在...

    Apache Cocoon V2.1.4

    Apache Cocoon是一个强大的开源项目,源自Apache Software Foundation,专注于构建Web应用程序和服务。Cocoon V2.1.4是该项目的一个稳定版本,它基于W3C(World Wide Web Consortium)的开放标准,如XSLT...

    cocoon-2.2.0.zip

    Cocoon 2.2.0 是一个开源的、基于组件的Web开发框架,它由Apache软件基金会开发并维护。这个框架的核心理念是实现关注点分离(Separation of Concerns),以便于开发人员能够专注于各自的专业领域,从而提高开发效率...

    COCOON Online Disk Manager 3.1

    《COCOON在线磁盘管理器3.1:便捷云端文件操作的创新实践》 COCOON Online Disk Manager 3.1是一款强大的在线文件管理工具,它以直观易用的界面,模拟了我们熟悉的Windows资源管理器,让用户在处理云端文件时,能...

    COCOON Counter 6 Professional v1905

    《COCOON Counter 6 Professional v1905:商业级站点统计系统的深度解析》 COCOON Counter 6 Professional v1905是一款备受赞誉的网站统计系统,专为商业级应用设计,旨在提供全面、准确的网站数据分析。这款统计...

    COCOON Db Tools Final Release 完整篇

    **COCOON Db Tools Final Release 完整篇** COCOON Db Tools 是一款强大的在线文件管理系统,专为数据库管理和操作设计。它提供了一种直观且高效的界面,让用户能够轻松地修改数据库的表结构、更新数据,并支持多种...

    cocoon-2.1.1源码代及编译环境

    Cocoon最初的型态是一个简单的Java servlet,全部使用标准W3C组件:用文档对象模型(DOM)来解析文档,用XML来捕捉和格式化数据,用XSLT来转换数据和合并/操纵XML文档,并用XSL来管理文档的表示以便通过Web传送。...

    COCOON ASP.net 探针 v1.0

    COCOON ASP.NET 探针v1.0是一款针对ASP.NET环境的高效监测工具,主要功能在于测试和分析ASP.NET应用程序的运行状态以及服务器的相关属性。它为开发者和运维人员提供了一种强大的方式来诊断和优化他们的ASP.NET空间...

    COCOON Online Disk Manager 4 DEMO

    《COCOON Online Disk Manager 4 DEMO:探索服务器管理与安全的融合》 COCOON Online Disk Manager 4 DEMO是一款专为服务器管理设计的高效工具,旨在提供全面而强大的控制功能。尽管其在COCOON DM3阶段曾被误用或...

    COCOON ASP系统探针 v2.5.00

    【COCOON ASP系统探针 v2.5.00】是一款专为ASP环境设计的监控工具,它主要用于监测和分析服务器的运行状态。在最新版本v2.5.00中,开发者针对用户需求增加了测试网络连接速度的功能,这使得该探针的实用性得到了显著...

    COCOON IP查询器 v1.1

    【COCOON IP查询器 v1.1】是一款用于查询IP地址信息的软件工具,主要功能可能包括获取IP地理位置、网络运营商、IP段归属、开放端口等信息。这个工具可能对网络管理员、安全研究人员或者普通用户在了解网络连接详情时...

    cocoon-2.1.3.jar

    jar包,官方版本,自测可用

    COCOON ASP探针 v2.9.00

    功能描述:测试服务器基本信息;测试服务器组件支持情况;测试服务器磁盘使用情况;测试服务器运算能力;测试客户端基本情况;测试客户端浏览器组件支持情况;测试客户端运算能力;测试网络连接速度;...

    Cocoon 2 简介

    提供静态文件和动态生成的响应 使用任意数量的处理将用户请求透明地映射到物理资源 执行简单和多级 XSLT 转换 将参数动态传递到 XSLT 变换 ... 这大大增加了使用 XML 和 ...Cocoon 让您能以最少的麻烦生成动态网站

    cocoon-spring-configurator-2.0.0.jar

    jar包,官方版本,自测可用

    cocoon2教程

    Generator从数据源获取原始内容,通常是XML形式。Transformer则使用XSLT将生成的内容转换为所需格式,例如HTML或PDF,对应的图标文件如`i/h-section.gif`、`i/xsection.gif`和`i/section.gif`可能与生成HTML页面的...

    cocoon-2.1.8.jar

    jar包,官方版本,自测可用

    COCOON Counter 6 Professional

    《COCOON Counter 6 Professional:全面剖析网站统计之王》 在信息化时代,网站数据分析成为了企业运营和网络营销的重要工具。"COCOON Counter 6 Professional"就是这样一款专为网站统计设计的强大软件,它提供了...

    cocoon-maven-plugin-1.0.0-m1.jar

    jar包,官方版本,自测可用

Global site tag (gtag.js) - Google Analytics