随着 RIA 技术的不断成熟,对 RIAs 与服务器端技术集成的需求越来越迫切了。来自于 We Are Mammoth 公司的 X2O 框架就是针对 Flex 的这样一种集成方案。InfoQ 有幸采访了 We Are Mammoth 的合作者 Ka Wai Cheung 以了解 X2O 框架如何适应基于 Flex 的 RIA 开发。
InfoQ: X2O 框架是什么?
Cheung:X2O 是一个针对 Adobe Flex 应用的基于 Web 的数据建模平台。它使你可以快速构建数据库驱动的 Flex 应用而无需任何服务器端代码或设置。
通过使用 X2O,你无需创建自己的数据库、构建存储过程、编写服务器端代码、甚至都不用将你的 AS3 代码集成到数据服务中。所有这些事情都由 X2O 帮你做好了。
相反,你只需创建一个数据模型(如果需要的话还可以对其或多或少进行配置)并生成框架。然后你就可以立刻使用生成好的代码及工具去构建你的 Flex 应用了。特别地,你会得到一个安全的 CMS 以管理数据,一个根据你的数据模型而定制的 AS3 SWC 文件及全部文档。X2O 会创建好包含基本的 CRUD 方法的值对象、关系,同时还会根据你的配置生成定制的加载方法。
由于这一切都是通过 Web 实现的,因此无需进行安装。你只需将生成的 SWC 库放到你的 Flex 项目中就行了。你可以修改数据模型并重新生成这一切,这样看来 X2O 就是一个敏捷平台。
InfoQ:为什么要创建 X2O 框架,它要解决什么问题?
Cheung:Flex RIA 开发的一个主要问题是它要求开发者有非常广的知识面。开发者需要精通数据库、某种服务器端语言(如 PHP、Ruby、C#等等)、客户端与服务器端的集成(remoting、web services 或者是 SOAP),当然还要会编写 AS3/MXML 并构建于 MVC/Cairngorm 这样的架构之上。
X2O 通过处理所有繁琐的服务器端编程与集成简化了整个 Flex 的开发过程,而这些工作过去需要几个开发者用几天甚至几周的时间才能完成。这使得 Flex 开发者可以将全部精力集中在 Flex 上,同时还能够完全控制数据的构造方式。
本质上,X2O 使得 Flex 开发者能够专注于其领域,就像服务器端开发者一样,不用了解其他语言。
此外,X2O 是完全基于 web 的。除了你的 Flex 开发环境以外,不需要其他的安装和设置。如果说还有需要解决的问题的话,那可能就是 X2O 将快速的 Flex 开发与云编程结合起来了。
对于简化使用 Flex 进行客户端与服务器端集成的需求越来越多了。针对 Rails 的 WebORB 插件很有趣——但使 X2O 与众不同的却是你无需编写任何服务器端代码,也不用做任何集成。X2O 开发者只需在 Flex 环境下编写代码以推 / 拉数据,同时还能够完全控制数据模型。
InfoQ:X2O 在服务器端的架构如何?
Cheung:一个 X2O 项目的服务器端部分是绝不会暴露给开发者的,因为它总是运行在远程幕后的。简单地说,X2O 会生成一个数据库、存储过程、一个数据访问层和 web 服务层。SWC 文件(开发者需要下载该文件并将其放到 Flex 项目中)直接与 web 服务层集成。开发者只需调用 SWC 文件中的值对象上的方法就行了,其他的代码都被生成好了。我们还对客户端与服务器端之间的请求和响应进行了加密。
正如我之前所说,还会生成一个安全的 CMS 及文档——他们在服务器上作为单独的站点运行。
InfoQ:开发 X2O 都使用了哪些技术,如何使用的?
Cheung:X2O 底层构建在.NET 上。因此我们现在使用了 SQL Server 2005 和.NET 2.0。我们还通过开源的 Flex 框架生成了 ASDocs。
InfoQ:X2O 典型的使用场景是什么?
Cheung:X2O 可以应用于任何数据库驱动的 Flex 项目。过去两年中我们公司(We Are Mammoth)已经使用 X2O 开发了很多东西,从只有静态内容的简单站点到包含很多业务逻辑的拥有大量数据的交互式应用。
我们还发现 X2O 对于原型开发来说非常有用。通常,Flex 中的原型利用率都很低,因为当你开始开发一个“真正”的版本时,大多数原型都会被丢弃。借助 X2O,你可以在几分钟内开发出一个数据模型并立刻将其与真正的、受管理的数据进行集成。这使得我们可以无缝地将原型转换为真实应用。
InfoQ:它是免费的么,它的发布计划如何?
Cheung:X2O 目前还处于公测阶段,在 beta 版期间它是免费的。在这段时间内,我们允许开发者注册并创建两个免费的项目以熟悉 X2O 的工作方式。
我们打算在 2009 年发布 X2O 的完全版本,它会有一个免费版(就像 beta 版一样)和一个付费版。后者在项目限制和功能性上会有所不同(比如部署该框架的开发版本和正规版本)。
评论