FleXtense 帮助 Flex 应用程序访问 Web Services

阅读数:158 2008 年 3 月 25 日

话题:Java语言 & 开发

大多数 RIA 应用都会通过连接服务器来获取数据,FleXtense是这类应用的辅助工具之一,它对 RIA-比如 Flex 应用访问 web services 提供帮助。FleXtentse 2.0 计划在 2008 年四月正式发布。为此,InfoQ 采访了 FleXtense 的缔造者 Murat Cim 和 Ozkan Yilmaz,了解到关于 FleXtense 是如何协助 RIA 开发的细节。

首先,Cim 解释了创建 FleXtense 的动机:

FleXtense 通过自动生成能访问 web services 的 ActionScript 通讯类,来让 Flex 开发者更容易地使用 web services。我们从 Flex 的最初发布版本就对其饶有兴趣。我们一直在使用.NET 来开发 web 应用程序。慢慢地,我们开始意识到 Flex 有一个缺点,那就是它不提供对 web services 的访问能力。这让我们相信,如果能创建一个程序,一个能够帮助更有效地使用 web services;并能够添加更多特性,比如使用 web services 自定义实体和集合的程序,那将对 Flex 非常有帮助。这是促使我们创建 FleXtense 的初衷。

FleXtense 能够带给 Flex 开发者最大的好处是:

通过强类型数据结构来使用 web service,使用它支持的数据结构和易于使用的接口来维护快速并安全的代码。

Cim 还谈到在开发 FleXtense 时遇到的挑战:

最大的挑战是,此前从未有过类似的应用程序实例可作参考,所以我们不得不完全依靠自己设计软件的框架和结构。另外一个障碍是,action script 3.0 不支持完全面向对象的编码环境。

接着,Yilmaz 就 FleXtense 是如何开发以及如何工作的问题谈了一些细节:

在开发 FleXtense 过程中,我们用的是 Visual Studio 2005 开发工具。FleXtense 具体所做的工作就是:读取并分析你所提供的 web service 的 WSDL,据此创建出将在 Flex 的 action script 中使用的新 proxy 类。而这些类,通过我们的核心通讯库,使你能够借助强大的面向对象环境来连接到 web service。

FleXtense 为 WSDL 文档中每个定义了的 web service 创建一个同名的 ActionScript 类,这些 web services 中的方法因此可以通过与其同名的类来访问。比如说,对于某个叫做 UserService 的 web service,FleXtense 会为其创建一个名叫 UserService 的 Actionscript 类,相应生成的代码可作如下调用:

   var service:UserService = new UserService();     ...    service.getUser.send() 

还有一些为 web service 的 ActionScript 类自动生成的公有方法,比如“send”、“addResponder”和“addFaulter”。其他一些主要的生成类有:Result Event Class、用于枚举定义的 Enums Class、用于 WSDL 中数组元素的 Collection Class、用于自定义元素的 Entity Class 以及 Base Data Type Array。对于那些使用过开源 web service 引擎Apache AXIS的开发者来说,这些代码生成的部分会相当熟悉。

最后,Yilmaz 提供了由 FleXtense 生成的类作为范例,该类是针对Amazon Web Service而生成的。读者可以通过访问这里体验这个类的 Flex 演示程序。

查看英文原文:FleXtense Helps Flex Applications Access Web Services