UML软件工程组织

Struts 的长处和弱点
上传:贝克OWEN 选择自 www.playicq.com
Struts 的长处和弱点

象一些复杂系统一样, Struts 是个解决方案包。它也有其长处和弱点。这里的某些观
点具有主观性,但也希望能对你有些帮助。

Struts 1.0 的弱点,在Struts 1.1 中解决了

1.Logging(记录)
Struts 使用容器的缺省记录系统,没有提供一个自己的记录包来为应用提供记录机制。(Struts 1.1 实现了 Commons-Logging 接口包)

2.每个应用装入一个单独的配置文件
大型项目可能需要使用多个不被整个团队共享的配置文件。(Struts 1.1 支持多配置文件)

3.每个场所装入一个单独的资源文件 大型项目可能需要使用多个不在整个团队共享的资源文件。
(Struts 1.1 支持多资源文件)

4.没有服务管理器
ActionServlet 必须被子类化来提供附加服务,比如用户记录器或者身份认证系统。(Struts 1.1 提供一些新的扩展点和组件)

5.ActionForm red tape Struts 1.0
希望开发人员创建定制JavaBeans 与HTML 输入表单一起使用(Struts 1.1 支持 Map和 DynaBean 来代替定制JavaBean.)

Struts1.1 的弱点

1.没有事件模型
Struts 紧密和HTTP的请求-响应模型结合,这限制了开发人员更好地处理事件

2.调试
不支持自动调试(除错),开发人员不得不手工创建“断点”,并向容器的记录系统写标准输出

3.没有缺省的数据模型或者具体的推荐
访问持久数据模型留给了开发人员

4.单一ActionServlet
一个应用终止可以使用一个单一的ActionServlet,这个限制可能导致配置冲突

5.需要理解Struts组件
开发人员需要理解一些特殊的类以及他们如何交互。

6.不能提供优先技术支持
ASF是个志愿者组织,没有全职人员提供可担保的响应

7.Mailing list已经成为知识的障碍
Struts 有一个日益增长的邮件列表,但要在其中找到最好的间以非常困难。

8.正式发布版本并不快速
Struts正式发布版相对于其他项目来说先得慢了。开发人员必须经常检查“每日构件”或的最新改进。
9.i18n 限制
Struts 的消息资源对建立国际化的资源和错误信息非擦好,但不适合于处理大文本块

10.JSP mindset
因为使用MVC架构, 使得资源对所有表现层都是有效的。这是个长期的弊病对JSP来说。

11.JSP意外本地化
很多系统级消息,象JSP意外,都没有本地化,通常显示为英语

12.标记属性冗长
许多标记扩展要求很多参数,对编程来说很笨

13.perform 和 execute 方法体
Struts 架构的关键是将请求委托给一个 Action类或者叫分发者dispatcher。Action 类是Struts支持的唯一分发者,并仅通过其perform 方法来调用。这将应用限制在只能和perform 方法传递的数据一起工作。即使有办法超出这个限制, perform 方法也是个瓶颈。一个通常的请求要求ActionServlet组装几个ActionForm。但是因为 perform 接受单个ActionForm 参数,如果不经过较大的框架革新是不可行的。Struts 1.1 添加了一个execute方法,它有助于改善perform的其他主要缺陷:因为他返回意外。然而,主要的问题已就存在。

14.模糊的术语
Struts 框架在明显的增长。而给一些应用选项和类的名称却容易让人混淆。例如,web.xml “ 中的validate” 选项却和Action 对象的validate 方法无关,而和如何解析配置文件相
关。同样,神秘的 “ null”选项则表示当消息关键字未找到时,是否返回一个错误信息。有个趋势是在类层次树种使用复合名称。在Action包中的每个类都有个前缀为 “ Action,”这却是多余和容易混淆的。同时,在Struts配置文件中, ActionMappings 定义的元素名是“ Action” 而不是“ ActionMapping” 。如果开发人员引用一个“ action,” 很难区别它们是指Action 类或是配置类的ActionMapping。在 Struts 配置中, “ name” 域标识ActionForward 和ActionForms“ path” 域标识 ActionMapping。“action-mapping元素的 name” 属性则指出使用哪个ActionForm 。ActionForward 的URI域也称为 “ path”,但可以包括伴随path的查询组件。到ActionMapping 的 “ path” 不包括servlet 样式,象 *.do, 但是ActionForward 的path 却包括 *.do 扩展名。应用资源其实是真正的消息资源。
等等。凡此种种,这些小矛盾可以把一些新手搞糊涂,并且使框架难以学习

Struts 的强项

强项 说明
1.以HTTP为中心
Struts设计围绕标准 HTTP 请求-响应模式,为许多Web开发人员所熟悉

2.标准记录
Struts 可以使用容器的缺省记录系统,而不需要配置和理解其他包

3.可选的调试记录
Struts 可选记录大量状态处理时的信息,它们可以有助于进行调试

4.模型中立
Struts 并不倾向于哪个特定的持久层

5.在一个中心配置中汇集实现细节
Struts 配置封装了应用,或者应用模块[Struts 1.1]的实现细节。所以它们可以作为一个整体评价和管理

6.允许为每个场所配置不同的消息资源
不同的语言翻译可以工作在他们自己的消息资源文件版本上。添加一个新场所的支持仅需简单地添加一个资源文件

7.轻量
Struts 仅有几个核心类要学习

8.开源
全部源代码在自由的 Apache 软件许可下,所有的选择都在你

9.强大的开发人员团体
有一个强大的开发人员团体使用Struts。邮件列表时非常活跃的。许多开发人员的扩展是很成功的

10.强大的供应商团体
Struts 已经和其他一些产品合在一起,包括Jcorporate的s Expresso 和IBM的 WebSphere。一些厂商也提供Struts专用工具。

11.强大的产品支持
Struts 有其自身的专业管理的JGuru 论坛。Struts邮件列表至少可以通过两种支持门户进行访问。Struts 已经被许多文章和书籍涉及,并有一些组织提供专业的教程

12.强大的开发团队
超过30个开发人员为Struts 1.1做贡献。Struts团队现在有九个活跃的志愿者,他们全为源代码负责

13.稳定发布版本
Struts正式发布版本要经过长期的测试,并没有最后期限,所以团队可以提供高质量的产品

14.i18n 支持
支持内建的国际化

15.高度兼容
Struts专注于提供公共标准100%兼容的产品
16.全方位的标记扩展
Struts包括一系列通用标记扩展。他们一起可以符合你所有的 JSP 需要,而不用编写脚本程序

17.良好文档的源代码
Struts JavaDoc非常详细,以使你几乎不需要参考源代码。这其实是个高级别的用户指南。

18.建立在设计模式之上
Struts 框架在其架构中实现了一些经典的设计模式,这些模式为许多开发人员所熟知。

19.可扩展性
所有默认的设置都可以配置。核心Struts可以被重写,和子类化。开发人员可以定制关键类如ActionForm 和Action.

 

版权所有:UML软件工程组织