Flex的起步推动新语言学习

时间:2022-04-22
本文章向大家介绍Flex的起步推动新语言学习,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

近来,对于很多新兴创业型公司来说,选用RIA技术来实现他们的创意和服务已经不是什么新鲜的事情了。正处于起步阶段的基于Adobe Flex技术的Babbel就是其中一个例子。为了让读者能够对如何设计和实现一个应用Flex技术的新起步应用的构架有一个深刻的了解,InfoQ就此采访了Babbel背后运营公司Lesson Nine GmbH的CTO-Thomas Holl。

Holl首先这样描述Babbel:

Babbel是一个基于社区的在线语言学习工具。Babbel.com提供德语、英语、法语、意大利语及西班牙语课程,将社交网络的乐趣融入到有趣并有效的词汇扩充和句型构造的工具中。

而后,他回答了创建Babbel的初衷:

2006年年末时,我们曾试图寻找一个现代的在线语言学习工具,让我们感到惊讶的是,当时还没有一个像Babbel这样的工具。现在的形势看上去已经在慢慢开始转变。但那个时候,能找到的词汇练习都极为基础,界面也不是非常友好。另外,你能买到的CD-ROM或DVD上的多媒体应用不仅昂贵,而且无论是在技术还是内容上都很陈旧。通过控制台进行的教学游戏是Babbel概念的角色模型-这些简单的应用使用起来很有趣并且获得了大众的喜爱。

在Flex与AJAX的比较上,他解释说:

从一开始就很明显,我们的站点应该使用流行的多媒体选项,比如播放音频、动画以及在后台缓存数据使得之对请求的回应更快。去年在我们着手开发的时候,除了Flex框架以外,再没有什么技术更能符合我们对Babbel定下的愿景了。我们也许可以通过AJAX来做很多事情,但那样就不得不处理繁多的JavaScript库,另外,用户体验也还是无法匹及Flash应用。

在众所关注的Babble开发所使用的技术上,Holl和大家分享道:

我们有4个开发人员参与了Babbel的开发,其中2个关注Flex客户端,另外2个则开发了运行在Amazon EC2实例上的基于Ruby On Rails的后端。2007年5月,我们一切从零开始,直到2008年1月发布第一个版本,整个开发历时8个月。 服务器端的实现包括了12000的Ruby代码,Flex客户端的实现大概有50000行代码(包括7000行自动生成的集成代码)。 我们一直遵循一个循环的开发流程,并发现以一周为循环周期对我们来说最适用。除此以外,我们还使用了最实用的工具和流程,例如,使用Subversion来管理版本;采用Trac来跟踪事件(defect tracking)、文档编制(documentation)及交互(communication);通过Ant/Capistrano自动构建/部署(automated builds/deployment )等等。

Holl也谈到了在Babbel的开发过程中所遇到的挑战:

为了实现从客户端对后端服务的访问,我们开始采用简单的定义语言(考虑过WSDL,但基于JSON来的更为简单)来描述这些服务,然后,我们的生成器(generator)将这些定义转化为ActionScript方法,这样一来,客户端可以通过静态类型值对象(类也是自动生成的)来访问从服务器返回的数据(通过HTTP协议以JSON类型返回)。然而,对于某些功能(比如“people search”)将数据以这样的方式封送处理似乎不是很合适,通过编写代码来动态的创建GUI元素纯粹是浪费。我们想充分利用Rails的力量来生成HTML代码,但由于Flex所支持的HTML元素和风格有限,在Flex上显示HTML受到了严重的束缚,而现在,我们通过Rails来生成MXML然后在客户端显示。通过这个方法,服务器同样可以在客户端激发一些动作(比如,收到新信息的时候,需要在客户端显示一个提示)。

关于RIA相关技术和构架,Holl回想道:

另外一个时不时就冒出来的问题是客户究竟可以并且应该拥有多少个不同的状态。这个问题的提出,促使我们进行了几轮优化和测试来寻找对于Babbel来说最好的平衡点。客户在服务器端的相关变化,服务器会在回应下一个客户请求的时候通知客户(这就不再需要push构架),客户收到通知以后再由其本身决定是否要与客户端同步。

什么技术可以推动Bebbel将来的发展?

我们会将我们的语言教学工具努力推向类似游戏的用户体验。下一个大的目标之一是集成语音和视频聊天功能,通过Adobe系列技术,这个功能是极有可能实现的,我们目前正在对其进行评估。之后,我们想在网络和社团特性方面添加大量的功能。另外,团队对于网站内容的管理、以及用户对网站的贡献的可能都需要得到巨大的扩展。我们还想将Babbel带入移动世界,这也意味着会涉及到J2ME、Symbian或iPhone的开发。