Mach-II 应用程序框架入门

ZDNet软件频道 时间:2004-02-20 作者:ZDNet China |  我要评论()
本文关键词:
ColdFusion的学习和使用是那么不可想象的简单,如今面向对象的思想也终于融入了其中。
本文译自Builder.com,未经许可请勿转载

迄今为止,我已经从事ColdFusion开发五年了。ColdFusion的学习和使用是那么不可想象的简单,而它深深的扎根于面向过程的编程思想。真正的面向对象的开发还没被作为选择的对象。类似Fusebox 4的应用程序框架加入了许多OO(object-oriented)编程的卓越思想(例如封装和继承),然而,它的思想还是基于面向过程的。Fusebox 4要求开发者充分的了解其面向对象部分的优点。


随着ColdFusion的不断发展,Macromedia公司引入了ColdFusion组件 (ColdFusion Component, CFC).这是ColdFusion向真正的面向对象踏出的第一步。CFCs 提供了面向对象编程语言的绝大部分功能。方法(Methods)、内嵌支持(built-in support)、继承(inheritance)、内省(introspection)、创建抽象CFCs(abstract CFCs)和复合组件(composite objects)的能力,以上这些也只是CFCs带来的众多特色功能的一小部分。

Mach-II 是为ColdFusion设计的第一个“彻底”的面向对象的应用程序框架。那么,既然Mach-II是建立在一般的面向对象设计原则基础之上的,其框架提供了与Java,.NET和PHP的接口。然而,什么是Mach-II?同时,作为ColdFusion开发者也许会对其感兴趣,但是为什么一名Java或是.NET开发者也会关心它呢,毕竟这两种平台已经有了它们自己的应用程序框架了啊?

Mach-II总览

Mach-II 是由Hal Helms 和Ben Edwards共同提出的,他们都是杰出的编程人员,同时也是Fusebox的拥护者。当CFCs发布后,他们意识到应该为ColdFusion开发出一个完全的OO框架。并且,他们知道,如果框架遵循一般的OO原则,那么就能在任何支持OO开发的平台下适用。

Mach-II中的"II"代表“隐式调用(Implicit Invocation)”,因为Mach-II是基于事件的,隐式调用的体系结构。作为一个OO开发的新手,当我初次听到它时,感到颇为陌生。也许现在你们也有一样的感觉,那么我将更进一步的做出阐述。

几乎所有普通的软件系统都依靠多组件工作。在许多情况下,一个组件将直接调用另一个,称为显性调用。然而,这不是最灵活的解决方案。

在一个隐性调用系统中,一个组件不直接调用其他的。区别在于,他们发布事件。通过事件句柄,系统的其他部分被注册(也可以注册自身)作为对特定事件的响应。当一个事件被发布,系统调用相关组件进行注册。换句话说,系统自身隐式的调用系统的其他部分响应事件。

这样的应用程序系统是低耦合的,这意味着组件之间几乎不存在依赖性。同时,也意味着系统具有很大的灵活性,因为应用程序的各个组成部分可以在运行时动态进行注册以响应事件。

作为一个OO编程的新手,当我初次接触这些知识时,感到十分生疏。然而,随着我不断的实践这些思想,他们变得更加有意义,我也更清楚他们将带来的好处。

Mach-II基于模型-视图-控制器(Model-View-Controller,MVC)。以ColdFusion为例,控制器是Mach-II框架,它通过XML文档进行定义。Mach-II框架是一组CFCs,它们负责处理应用程序的创建,事件的发布,句柄的注册和该体系结构的其他各个方面的工作。Mach-II MVC应用程序的模型部分包括CFCs,它们用于实现商务逻辑和扩充Mach-II框架组件。视图是一系列标准的ColdFusion模板,它们用于显示模型提供的数据和提供用户接口

Mach-II的 XML配置文件

通过与Struts 和Fusebox 4相似的风格,你可以使用XML文档定义出Mach-II应用程序的各个方面。mach-ii.xml文档包括以下的内容

  • 属性(Properties-- 用来设置应用程序级属性,例如应用程序根目录,缺省事件和异常时的引发事件
  • 监听器(Listeners-- 用于定义应用程序监听器。每一个监听器映射到一个用于响应方法调用的CFC上。事件句柄提示监听器运行特定的任务
  • 事件过滤器(Event Filters-- 事件过滤器是一组CFC,它们在事件过程中操作和过滤数据。例如,拷贝一个事件参数到另一事件或视图的查询域中以备将来使用。
  • 事件句柄(Event Handlers-- 真正的工作在这里完成。事件句柄处理系统发布的各个单独事件。它会提示监听器和发布系统的其他事件。
  • 页面视图(Page-Views-- 在这里定义视图,它是ColdFusion模板,用来输出模型提供的数据(特别是监视器和其他CFCs)。与Fusebox 4的风格相似,视图的输出可以被变量捕捉,然后在另一视图中输出。这样提供了门户和其他复杂规划的简单创建。
  • 插件(Plugins-- 插件用于触发特定的过程,在Mach-II请求执行时间上的不同点生效。例如,你可以定义一段代码,并规定它在某一视图处理的前后执行,或是在某一事件被处理的前后执行。
Mach-II事件周期

正像我说过的,Mach-II使用事件和请求句柄来运作。基本上,一个Mach-II应用程序通过一个事件响应用户的请求。系统发现注册为该事件的事件句柄后,该事件句柄被系统调用,随后通过事件句柄提示监视器组件操作应用程序数据。接着,将有其他事件被发布,相同的处理过程被不断重复,在这些过程中,事件句柄能够以任何可能的方式响应相应的事件。最后,视图被提交,而最后的显示结果将反馈给用户。这样,通过一个及其基础的略述,说明了Mach-II的工作原理。

柔韧性和维护

我希望这篇简短的Mach-II框架入门可以引起您的兴趣。隐性调用系统带来的好处包括更卓越的柔韧性和简易的维护。Web应用程序变得更加复杂,同时,开发者们日益发觉,代码的设计要适应不断的发展变化,是一件不容易的事。
 

Mach-II框架并不适用于每一名开发者。这是一个全新的框架结构,同时要求开发者们牢固掌握面向对象设计的原则,这意味着,对于那些惯于创建面向过程的应用程序的开发者来说,它显然将更加复杂。同样,我初试牛刀时,其运行效果显得比相似的面向过程的代码更慢,然而,其原因可能出于框架本身,也可能是我的拙劣技术还不足以应对这个框架。

无论如何,基于面向对象的开发在持续飞跃性的发展着,作为一个ColdFusion开发者,我认为仔细研究CFMX(ColdFusion MX)中新的OO性能是很重要的。Mach-II显得更具灵活性和适应性。那么,请你们自己研究一下,你们对这个问题是如何看待的。框架源代码,文档资料和实例程序可以在Mach-II的站点中找到。



责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134