Shale的面向服务架构
Shale之所以没有成为Struts的一个新的发行版,其最后一个原因与逻辑没有关系:而是与该框架将新方法接纳到Web开发中的能力有关系。Shale在很多方面与Struts存在不同之处,其中有两点最为突出:
Struts与JSF集成,而Shale则是建立在JSF之上。
Struts实质上是一个巨大的、复杂的请求处理器;而Shale则是一组可以以任何方式进行组合的服务。Shale对JSF的依赖性具有深远的、令人惊讶的意义,而且大部分情况下是积极的意义。随着这个系列的深入,我将深入研究这些意义。在讨论其他方面之前,有必要对造成Shale与Struts之间差异的第二个方面进行详细的讨论。
如果您多次使用过Struts,那么会意识到它很大程度上可以看作一个请求处理器,通过它可以接受请求,并指示框架如何处理请求。您可以指出采取哪种动作,使用什么模型,将哪种视图显示给用户,采用什么验证规则,显示哪种表单...Struts是完全可以配置的。然而,所有这些的核心是一个请求处理器,为每个请求提供服务。这样的处理器是Struts中最重要、也是最复杂的部分,因为对于在处理一个请求的过程中涉及的所有工作,它都必须进行处理或托管,在Struts代码基中几乎没有哪一部分与这个请求处理器没有关系或不受它的影响。
因此,Struts基本上难于作出改变。如果想修改处理请求的方式,或改变处理请求过程中各部分的顺序,那么将面临巨大的困难。实际上,不得不重新编写Struts代码基。更改请求处理器的行为倒是稍微可行,但是大部分是不容变动的。这是Shale试图解决的关键问题之一(如果您需要Web框架有那种程度的灵活性的话)。
Shale没有像Struts请求处理器那样的中心组件,它只是一组数量很多的服务。可以自由组合这些服务,每个服务与其他服务之间是松散耦合的。通过一组良好定义的接口(有时候实际上就是Java接口类,有时候只是组件之间某种形式的契约),配置Shale的行为很容易。这使得Shale是可扩展的、灵活的,甚至是“聪明的”。很容易更改它,不费吹灰之力就可以扩展它,并可以使它迅速适应新的编程方法。像这样松散地组装组件或服务通常被称作面向服务的架构,或简称SOA。当然,这听起来有点儿玄乎,不过您大可不必因此而觉得Shale不好!
安装Shale
可以从逻辑上和概念上理解Shale与Struts的不同之处,但是要想在脑海里弄清楚这两种伟大的框架有什么不同,则需要亲自动手去实践一番。很自然,每一种Web框架首先都需要下载和安装。不过幸好,在这个过程中通常可以了解到很多东西。那些安装和设置起来比较困难的项目和产品,通常也难于配置,难于在它上面进行部署,并且(最坏的情况)难于长久运行。虽然安装过程很难作为评价一个Web框架好坏的最可靠手段,但是至少肯定应该成为这个标准的一部分。在这一节中,您将学习手动地安装Shale,对于一些难点有一定的体会,并了解为了使Shale运行,系统上需要些什么东西。
注意,我还提到了Shale的简便安装选项,但是我强烈建议您至少试一试手动安装,了解它提供的较深层的信息。
先决条件
Shale的先决条件和需求相当多。和大多数与Apache和Jakarta相关的项目一样,Shale的安装要依赖于一些其他的Jakarta项目。下面是为了使Shale得以运行所需的所有东西的完整列表:
Java Runtime Environment(JRE)和 Java Development Kit(JDK) 1.4或更高版本
Java Servlet API 2.4 或更高版本
JSP 2.0 或更高版本
JSF 1.1 或更高版本
JSP Standard Tag Library(JSTL) 1.1或更高版本
Jakarta Commons BeanUtils 1.7或更高版本
Jakarta Commons Chain 1.0或更高版本
Jakarta Commons Digester 1.7或更高版本
Apache Logging 1.0.4或更高版本
Apache Ant 1.6.3或更高版本
Apache Ant只是在构建Shale时要用到,但是无论如何,如果您要进行较多的Java开发,那么系统上还是需要(很可能已经有了)一个版本的Ant。如果想跟踪Shale中的bug,那么需要FindBugs 0.8.5或更高版本和JUnit 3.8.1或更高版本。由于在第1部分中我只是讨论Shale的安装和使用,因此您还不必关心FindBugs或JUnit,除非您想早点儿装上这两个项目。
附件和它们的依赖项
和Struts一样,Shale还有一些附件(在Shale中常被称作可选Shale组件),这些附件各自又有其依赖项:
Jakarta Commons Validator 1.2或更高版本
Spring Framework 1.2.2或更高版本
Struts Tiles Framework(独立版本)
如果说这份列表显得有些长并且令人生畏的话,那么没错!Shale使用大量较低级的库、helper类、实用程序组件和来自其他项目的类。如果必须逐个安装这些组件,配置Shale使用它们,并将所有这些组件组装成可以部署的某种形式的话,即使是最专业的开发人员也会对Shale望而生畏。此外,由于Shale在它的开发圈子内仍然相当年轻,对于这些依赖项的获得和配置仍然有些稚嫩;然而,Shale确实是非常可行的,而且不需要花费您想象中那么多的精力。
首先,如果您正在用某种框架从事某种Web开发,那么应该已经有了一些作为依赖项的项目。所以这份列表比它初看上去要容易管理得多。例如,任何Web开发人员都应该已经有JRE和JDK,也应该有一个servlet引擎,例如Jakarta Tomcat。如果已经有一个servlet引擎,那么也应该有Servlet API和JSP引擎。另外,大部分servlet引擎(至少就当前版本而言)都包括一个JSTL,并且很多都附带了JSF。最后,大多数开发人员很可能在他们的机器上已经安装了Ant。因此,这份列表很快就只剩下这些了:
JSF 1.1或更高版本(servlet引擎中可能已经附带了)
JSTL 1.1或更高版本(servlet引擎中可能已经附带了)
Jakarta Commons BeanUtils 1.7或更高版本
Jakarta Commons Chain 1.0或更高版本
Jakarta Commons Digester 1.7或更高版本
Apache Logging 1.0.4或更高版本
考虑到Tapestry实际上提供了将它的所有依赖项附带下载的选项,因此“太多依赖项”的问题很快就不成为问题了。
| 共6页: 上一页 [1] 2 [3] [4] [5] [6] 下一页 | ||
|