论坛首页 Java企业应用论坛

Apache Avalon 简介

浏览 13849 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2003-10-10  
Apache Avalon 是一个用于开发服务器端应用的开发框架,其中体现了很多软件业最先进的思想。它的开发处于较低的层次,你可以把它看作是一个用来建造 AppServer 的开发框架(框架的框架)。如果你想要建造自己的开发框架或者 AppServer,Avalon 是一个非常好的起点。
Avalon 的中文文档:
http://www.freecoder.org/~seal/avalon/introduction.html
基于 Component 或者 Service 的设计思想(COP、SOP)比基于 Object 的设计思想(OOP、OOAD)更加接近于业务领域(问题域),而且可以获得简化的体系结构和更好的性能。
如果觉得看不明白可以直接看英文文档:
http://avalon.apache.org/developing/developing-with-avalon.html
看英文文档比看中文文档快,还可以避免产生歧义。

Avalon 文档中对 COP 的定义:
面向组件的编程(Component Oriented Programming ,COP)是把系统分割成一些组件或设施的一种思想。每种设施都有一个工作接口和围绕该接口的契约。这种方式允许容易地更换组件的实例,同时不影响系统其它部分的代码。面向对象编程(Object Oriented Programming ,OOP)和 COP 的主要区别在于集成的层次。COP 系统的复杂性更容易管理,这得益于类之间更少的相互依赖。这提高了代码重用的程度。
COP 的主要好处之一是修改项目代码的一些部分不会破坏整个系统。另一个好处是可以有某组件的多种实现,并可以在运行时刻进行选择。

Avalon 文档中对 SOP 的定义:
面向服务的编程(Service Oriented Programming ,SOP)的思想是把系统划分为由系统提供的一些服务。

服务
1. 为其它人执行的工作或职责。
2. 提供修理或维护的一种设施。
3. 向公众提供工具的一种设施。

Avalon 的设计中最重要的两个模式是反向控制(IOC)和分离考虑(SOC)模式。以下是 Avalon 文档中的描述:
Avalon 整个是基于一些特定设计原理来构建的。最重要的两个模式是反向控制(Inversion of Control)和分离考虑(Separation of Concerns)。Component Oriented Programming、Aspect Oriented Programming和 Service Oriented Programming 也对 Avalon 产生了影响。每种程序设计原理都可以写出数卷的书,但它们都是一些设计思维习惯。

反向控制
反向控制(Inversion of Control,IOC)的概念是指组件总是由外部进行管理的。这个短语是由Brian Foote在他的一篇论文中最先使用的。组件所需的一切通过 Contexts、Configurations 和 Loggers 的方式赋予组件。实际上,组件生命周期中的每个阶段都是由创建组件的代码所控制的。当您使用这种模式时,就实现了一种组件与您的系统安全交互的方法。

IOC 与安全性并不等价!IOC 提供了一种机制,允许你实现一个可扩展的安全模型。为了让一个系统真正做到安全,每个组件都必需安全,没有组件可以修改传递给它们的对象的内容,而且所有的交互都必须使用已知的实体。安全性是一个主要问题,IOC 是程序员工具库中的一种工具,用于实现安全性的目标。

分离考虑
您应该从不同的思考方向来看待您的系统,这一思想导致了分离考虑(Separation of Concerns,SOC)模式。 一个例子是从同一个问题空间的不同视角来看一个 Web 服务器。Web 服务器必需安全、稳定、可管理、可配置并满足 HTTP 规范。每种属性都是一个单独的考虑范围。这其中的某些考虑与其它考虑相关,如安全性和稳定性(如果一个服务器不稳定,它就不可能安全)。

分离考虑模式又导致了 Aspect Oriented Programming (AOP) 。研究者发现许多考虑不能在类或方法的粒度上进行处理。这些考虑被称为Aspect。Aspect 的例子包括管理对象的生命周期、记日志、处理异常和清理释放资源等。由于没有一种稳定的 AOP 实现,Avalon 开发团队选择通过提供一些小的接口,然后由组件来实现,从而实现 Aspect 或考虑。
   发表时间:2003-10-26  
Avalon 以前看过,许多思想都是很好的,但一直没有机会在项目中应用,感觉他比较底层,如果有一个比较好的实现就好了
0 请登录后投票
   发表时间:2003-10-27  
newroc 写道
Avalon 以前看过,许多思想都是很好的,但一直没有机会在项目中应用,感觉他比较底层,如果有一个比较好的实现就好了

Avalon 确实比较低层,它是用来帮助建造开发框架或者 AppServer 的,不是直接帮助开发应用程序的。Avalon 中体现了 SOP、AOP 的很多思想。WebService 就是一种 SOP 的体系结构。
Avalon 提供的组件是很丰富的,我们目前也只用到 Avalon 一部分功能,其它功能还有待我们进一步探索。
0 请登录后投票
   发表时间:2003-10-31  
Erazor 写道
现在做Tapestry的Howard L。Ship也自己推出了一套系统HiveMind。
也是这种结构,不过据他说是集百家之长,而且更优更强。Tapestry马上可能要用HiveMind做底层结构重写。(Ps:Tapestry可是号东东啊,大家可别被Struts和JSF等等蒙蔽了双眼啊:))

最后,最新的技术中,这种微内核的结构都要融入IoC的技术。比较有代表性的有
PicoContainer

呵呵,你也再用Tapestry,能不能类似于上面的样子,简单介绍介绍

你对PicoContainer也在研究吗?我现在的一个项目,正考虑把它用于管理dao,而不再使用factory。
0 请登录后投票
   发表时间:2003-10-31  
avalon简直太老了,而且非常麻烦,其他好用的多的是:
type1 IoC:carbon,keel..
type2 IoC:spring,webwork2..
type3 IoC:pico..
0 请登录后投票
   发表时间:2003-11-02  
另外,一定要把tapestry放在spring框架内吗?
我是新手,正决定使用哪个框架比交好,望赐教。
0 请登录后投票
   发表时间:2003-11-03  
keel是基于avalon的,这个比较容易上手
0 请登录后投票
   发表时间:2003-11-03  
Haiqing 写道
另外,一定要把tapestry放在spring框架内吗?
我是新手,正决定使用哪个框架比交好,望赐教。

no
0 请登录后投票
   发表时间:2005-01-26  
keel是基于avalon的,他的核心负责人也是原来expresso的负责人。
expresso是96年就开始了,虽然是基于struts的,但扩展的很好,很实用啊,我们就在用他,感觉很爽。
0 请登录后投票
   发表时间:2005-01-26  
别用 Avalon 了,已经被 Apache 废弃了。我们也不准备再用了。其实我们原来也仅仅用到了 Avalon 的 Configuration 和 Log 这两块的功能。我们以前也并不认为 Avalon 是一个非常理想的容器。

大家都改用 Spring 好了。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics