没有合适的资源?快使用搜索试试~ 我知道了~
一个比较老的框架,共享一个中文文档
资源推荐
资源详情
资源评论
1 介绍和概述
Avalon
的简要历史以及创建它所有的设计原则概述
事情是从 Apache JServ 项目开始的。Stefano Mazzocchi 和其它协助开发
Apache JServ 的人员认识到项目中所用到的一些模式很通用,足以用于创建一
个服务器框架。 在 1999 年 1 月 27 日,星期三(在 JServ 1.0b 发布大约一个
月后),Stefano 拿出一份建议书,建议启动一个名为 Java Apache Server
Framework 的项目。它的目标是成为 Apache 所有 Java 服务器代码的基础。想
法是通过提供一个框架,将跨项目的一些组件和重用代码集中在一起。
Stefano Mazzocchi,Federico Barbieri 和 Pierpaolo Fumagalli 创建了最初
的版本。在 2000 年末,Berin Loritsch 和 Peter Donald 参加到项目中来。那时,
Pierpaolo 和 Stefano 已转向其它项目的开发,Java Apache Server Framework
开始被称为 Avalon。这五个开发者是框架目前版本所使用的设计和概念的主要
负责人。当前版本与 2000 年 6 月发行的版本非常相似。实际上,主要的区别是
对包重新组织,以及将项目划分为子项目。同样的设计模式和接口今天依然存在。
1.1 什么是 Avalon?
Avalon 是五个子项目的父项目:Framework、Excalibur、LogKit、Phoenix、
和 Cornerstone。当听到 Avalon 时,大多 数人会联想到 Framework,但 Avalon
不止包括 Framework。Avalon 开始作为 Java Apache Server Framework 时就
包含框架、工具、组件和一个服务器核心的实现,这些都在一个项目中。
因为 Avalon 的不同部分具有不同的成熟程度,发布周期也不同,我们决定
将 Avalon 划分为前面提到的小项目。这样做也便于新开发者理解和学习 Avalon
的不同部分——这在以前几乎无法办到。
1.1.1 Framework
Avalon Framework 是 Avalon 大伞下的所有其它项目的基础。它定义了接口、
契约(contracts)和 Avalon 的缺省实现。Framework 将大部分工作置于其中,
因此也是最为成熟的项目。
1.1.2 Excalibur
Avalon Excalibur 是一组服务器端组件,您可以在自己的项目中使用它们。
它包括了池(pooling)的实现、数据库连接管理和其它一些组件管理的实现。
1.1.3 LogKit
Avalon LogKit 是一个高速日志记录工具集,Framework、Excalibur、
Cornerstone 和 Phoenix 都用到它。它的模型与 JDK 1.4 Logging package 采用
相同的原理,但与 JDK 1.2+兼容。
1.1.4 Phoenix
Avalon Phoenix 是服务器核心,它管理服务(Service,实现为服务器端组
件,称作 Block)的发布和执行。
1.1.5 Cornerstone
Avalon Cornerstone 是一组 Block 或服务,这些 Block 可以布署在 Phoenix
环境中。这些 Block 包括了 socket 管理和 Block 之间的任务调度。
1.1.6 Scratchpad
Scratchpad 并不是一个真正的正式项目,而是那些还没准备好放入
Excalibur 中的组件的一个临时区域。这些组件品质差别较大,它们的 API 也不
保证会不变,直到它们被提升到 Excalibur 项目为止。
1.2 本概述的重点
在这个概述中,我们把重点放在 Avalon Framework 上,但会介绍足够的
Avalon Excalibur 和 Avalon LogKit 的相关知识,以便让您能够起步。我们将通
过一个假想的业务服务器来展示如何在实践中使用 Avalon。定义一个完整全面
的方法学,或介绍所有子项目的方方面面超出了本概述的范围。
我们将重点放在 Avalon Framework 上是因为它是所有其它项目的基础。如
果您能理解该框架,您就可以理解任何基于 Avalon 的项目。对于 Avalon 中常
用的一些编程习惯结构(idiom),您也会逐渐熟悉。将重点放在框架上并涉及
Avalon Excalibur 和 Avalon LogKit 项目的另一个原因是它们是正式发布并被支
持的。
1.3 Avalon 可用在哪里?
我被问过好几次,要求阐明 Avalon 适合做什么,不适合做什么。Avalon 把
重点放在服务器端编程和让以服务器应用为中心的项目的设计和维护变得更容
易。Avalon 可被描述为一个包含了实现的框架。
尽 管 Avalon 的重点是服务器端解决方案,很多人却发现对普通应用程序来
说它也是有用的。Framework、Excalibur、和 LogKit 中使用 的概念很通用,足
以在任何项目中应用。将重点更直接放在服务器上的两个项目是 Cornerstone 和
Phoenix。
Framework
1. 一个支持性的或封闭性的结构
2. 包含思想的一个基本系统或一种安排
N40008A
框架这个词在应用程序中的含义很广泛。重点放在单一行业的框架被称为垂
直市场框架,例如医药系统或通信系统。原因是同样的框架不能胜任其它行业。
具有很好通 用性,可用于多个行业的框架被称为水平市场框架。Avalon 是一个
水平市场框架。您可以使用 Avalon 的 Framework 构建垂直市场框架。
用 Avalon 构建的最有说服力的垂直市场框架的例子是 Apache Cocoon 出
版框架。Apache Cocoon 第 2 版是使用 Avalon 的 Framework、Excalibur 和
LogKit 项目构建的。它利用了 Framework 中的接口和契约, 让开发者能用更少
的时间理解 Cocoon 是如何工作的。它也有效地利用了 Excalibur 提供的数据源
管理和组件管理代码,这样它就不必重新发明轮子 了。最后,它使用了 LogKit
来处理出版框架中所有的日志问题。
一旦您理解了隐藏在 Avalon Framework 后面的原理,您就能理解基于
Avalon 构建的任何系统。一旦您理解了系统,您将能更快地捕获因为误用框架
所引起的缺陷。
1.3.1 不存在魔术公式
值 得一提的是,任何试图使用某种工具作为成功的魔术公式的做法都是自
找麻烦。Avalon 也不例外。因为 Avalon 的 Framework 是为服务器端解决 方案
设计的,所以用它来构建图形用户界面(GUI)不是什么好主意。Java 已经有
了一个构建 GUI 的框架,称为 Swing。
尽管您需要考虑 Avalon 是否适合您的项目,但您还是能从它的原理和设计
中学到一些东西。您需要问自己的问题是:"项目将用在哪里?" 如果回答是它将
运行在一个服务器环境中,那么 Avalon 将是一个好的选择,无论您是要创建一
个 Java Servlet 或一个特殊用途的服务器应用。如果回答是它将运行在一个客户
的机器上,并且与服务器没有交互,那么可能 Avalon 不太适合。即使如此,组
件模型也是非常灵活,有助于在大型应用程序中对复杂性进行管理。
1.4 原理和模式
Avalon 整个是基于一些特定设计原理来构建的。最重要的两个模式是
反向控
制(
Inversion of Control
)
和
分离考虑(
Separation of Concerns
)。
Component
Oriented Programming、Aspect Oriented Programming 和 Service Oriented
Programming 也对 Avalon 产生了影响。每种程序设计原理都可以写出数卷的书,
但它们都是一些设计思维习惯。
1.4.1 反向控制
反向控制(Inversion of Control,IOC)的概念是指组件总是由外部进行管
理的。这个短语是由Brian Foote在他的一篇论文中最先使用的N4000BF。组件
所需的一切通过Contexts、Configurations和Loggers的方式赋予组件。实际上,
组件生命周期中的每个阶段都是由创建组件的代码所控制的。当您使用这种模式
时,就实现了一种组件与您的系统安全交互的方法。
IOC 与安全性并不等价! IOC 提供了一种机制,允许你实现一个可扩展的安全模型。为了让一
个系统真正做到安全,每个组件都必需安全,没有组件可以修改传递给它们的对象的内容,
而 且所有的交互都必须使用已知的实体。安全性是一个主要问题,IOC 是程序员工具库中的
一种工具,用于实现安全性的目标。
1.4.2 分离考虑
您应该从不同的思考方向来看待您的系统,这一思想导致了分离考虑
(Separation of Concerns,SOC)模式
N4000D8。 一个例子是从同一个问题
空间的不同视角来看一个web服务器。web服务器必需安全、稳定、可管理、可
配置并满足HTTP规范。每种属性都是一个单独的考 虑范围。这其中的某些考
虑与其它考虑相关,如安全性和稳定性(如果一个服务器不稳定,它就不可能安
全)。
分离考虑模式又导致了Aspect Oriented Programming (AOP)
N4000E5。 研
究者发现许多考虑不能在类或方法的粒度上进行处理。这些考虑被称为aspect。
aspect的例子包括管理对象的生命周期、记日志、处理异常和清理释 放资源等。
由于没有一种稳定的AOP实现,Avalon开发团队选择通过提供一些小的接口,
然后由组件来实现,从而实现aspect或考虑。
剩余51页未读,继续阅读
资源评论
hnzhouzm
- 粉丝: 0
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功