2002-09-11 14:57
ColdFusion MX增加对J2EE、XML和Web服务的兼容
MX是最新发布的ColdFusion应用服务器。同时该产品也就是最新版本的Dreamweaver、 Fireworks和Flash。这也是Macromedia公司头一回把其生产的所有主流产品捆绑为一个功能强大的套件。MX套件中的每一款产品都因为MX命名的缘故而进行了重大修改。本文就专门对ColdFusion深入探讨。
推陈出新
MX下的ColdFusion到底有了怎样的改变呢? MX引擎建立在一个与以往完全不同的平台之上。以前的引擎是用C语言编写的,但是现在的这款新版本引擎则是用Java语言编写的,从而把ColdFusion完全引入了J2EE的势力范围;此外,新产品中增加了若干新标签,有的取代了某些旧标签,有的则应用户的长期要求而增加了某些新功能;种种改进令ColdFusion与今天的最新技术成就保持了同步。
ColdFusion一直就是一种对操作系统友好的平台,它支持Windows (9x, NT, 2000和 XP)、 Linux、HP UX、Solaris和Mac等操作系统。随着新产品加入对J2EE的支持,MX 的伙伴中又增加了IBM的WebSphere和BEA的WebLogic。实际上, ColdFusion软件光盘目前就随带了WebSphere,这一迹象充分表明了Macromedia和IBM的合作关系,同时强调了Java应用服务器目前对ColdFusion的支持。MX for J2EE应用服务器特别版最终实现了Java同ColdFusion开发团队更紧密地融合。
图象和图表处理
从5.0版本开始Coldfusion其实已经拥有了正式的图表处理能力,其实在更早的版本中这些功能就已经由没有文档化的CFX标签所实现了。如果你认为<CFGRAPH>标签并没有太大的益处,那么<CFCHART>标签则会令你打消疑虑。更多类型的图表、可配置的数据处理、多系列数据处理能力、背景批处理创建图表以及同Flash的集成等等最新特性无疑令<CFCHART>成为一种功能相当强劲的工具。
有了上面的新工具你完全生成多种多样的各类图表:金子塔图、锥形图、饼图、条形图、线图、区域、曲线柱形图等等。在图表内处理数据的能力更是提出了一种表示信息的绝佳方式。比方说,用户只要单击地区销售数据的饼图中的某一块就可以显示出该块地区的详细情况,你甚至还可以把其中的数据拖到一个新图中去。
你可以用调度(scheduling)工具产生大量图片或者在确定之前先产生唯一一张的大型图表留待将来访问。同Flash MX 的直接交流功能可以让用户用Flash MX创建定制图象和图表并为其传递数据。
更广泛的XML支持
我们采用XML技术的时间也不算短了。在5.0版本的ColdFusion中,为了访问和操作XML数据,我们只有3个选择:选择同XML数据接口的定制标签、安装和使用COM同解析器协作(这就是我采用的MS XML解析器利用方法)或者根本就不别利用XML。有了MX,XML对象或者数据就会被先行解析为一种本机ColdFusion对象,然后其用法同其他ColdFusion变量别无二至。
图A说明了我们访问Parser COM对象以及之后利用CFSCRIPT把数据装入变量的方法,这还只是若干方法之一。有了MX 你丝毫不用担心CFSCRIPT、定制标签或者第3方解析器的解析问题。
图A
用CFSCRIPT访问COM对象
为了创建XML文档,你只需要用<CFXML>标签即可。而解析现有的XML对象则可以采用XMLParse()函数。
如图B所示, ColdFusion MX令XML的处理变得更为方便。这样做在某些情况下,比如宿主环境(这种情况下你无法安装解析器或者CFX定制标签)就大有裨益。内部XML解析器的另一优点是Web服务器上可以安装更少的组件从而降低了系统崩溃的概率,从而令用户的工作变得更轻松。
图B
ColdFusion MX处理XML
支持J2EE
ColdFusion MX引擎已经被重新构造以支持J2EE Java应用服务器。从而给ColdFusion现有的易用性和RAD增添了新的强大功能和更好的可用性。
支持J2EE平台意味着ColdFusion模版在被初次访问的时候会被编译为Java字节码,相比ColdFusion 5中的同等代码则在今后的执行中获得更快地执行速度。此外,ColdFusion MX还在其CFML模版中包括了JSP标签库。Java可以被写入标签库之后再包含在ColdFusion之内,令Java和ColdFusion的开发可以分头进行。图C所示表明在应用程序中导入JSP标签库可谓方便之极。
图 C
利用<CFIMPORT>包含JSP标签库
就那么简单。实际上<CFIMPORT>标签就只有3个属性,但只有taglib属性是必需的。你还可以用同样的方式利用Java Beans、EJBs和Java API。
J2EE平台还让ColdFusion在更多的平台上找到了自己的一席之地。正如我们早先提到的那样,一个特殊的J2EE版本允许ColdFusion可以运行在WebLogic、WebSphere和Sun ONE等常见的应用服务器上。这种同Java技术的紧密结合填补了ColdFusion开发人员和Java开发人员之间的技术鸿沟。
Web服务
Web服务是现在一个非常时髦的字眼。Web服务潜力巨大而且会给Web应用程序带来革命性的转变。正是以上的原因ColdFusion
MX也提供了创建和采用Web服务的技术支持。MX同微软的.NET在Web服务方面完全兼容。
可想而知, Web服务在ColdFusion中的利用也是基于标签的。而你所需要的无非是知道Web服务的位置和内容或者必要的参数。ColdFusion会为你打点Web服务的SOAP方面。图D演示了Web服务的利用。其他环境下的同一过程也只需几行代码。
图D
Web服务的使用
<CFINVOKE>标签可以同可选的<CFINVOKEARGUMENT>标签一道使用。后者只有在Web服务需要发送参数的时候才会被用到。否则,你只需要调用它并提供一个变量用来保存结果即可。这样不管Web服务返回什么数据你都拥有了一个局部ColdFusion变量。
Web服务的创建就像其访问方式一样方便。采用<CFCOMPONENT>标签即可创建你所需要的Web服务。ColdFusion Components (CFCs)同其他ColdFusion要素的创建方式略有不同。首先,它们具有不同的文件扩展名,.cfc不同于传统的.cfm。CFC是面向对象的,而传统的ColdFusion模版则不是。面向对象令ColdFusion焕然一新。你的代码现在可以提供自身的文档化和有关的支持、利用对象的继承性,同时在单一模版中提供多种方法(定制标签则是一个标签一个方法)和方法级的安全性。图E演示了一个简单的CFC结构。
图E
创建简单的CFC
小结
ColdFusion
MX既是一种新版本的ColdFusion语言同时也为ColdFusion开发人员提供了更强大的开发能力。对那些喜欢ColdFusion的人来说,实际上并没有什么改变,
ColdFusion的开发同以往没有任何不同,只是增加某些新标签。而那些想更深入Java开发的技术人员则会从ColdFusion的易用性和RAD获益,MX在没有放弃ColdFusion的情况下为深入Java提供了一个优秀的平台。你可以编写JSP标签库然后在自己的ColdFusion模版中采用。
ColdFusion MX的新特性是Macromedia公司应对竞争的重要举措。ASP和PHP都是其优点可圈可点的优秀编程语言,但是就开发强大的、可伸缩的Web应用程序来说却并没有比ColdFusion占据任何优势。ColdFusion MX只需要区区树行代码就足以提供Web服务、XML和J2EE平台兼容性,而且开发人员无须再度学习一门新的编程语言或者协议。