BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Flex技术创业公司推动新语言学习

| 作者 Moxie Zhang 关注 0 他的粉丝 ,译者 沙晓兰 关注 0 他的粉丝 发布于 2008年4月25日. 估计阅读时间: 6 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

近来,对于很多新兴创业型公司来说,选用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的开发。

 

查看英文原文:Flex Startup Helps Learning New Languages

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

似乎标题翻译得不对吧? by Zeng Jie

这里的Startup应该是正文中的翻译——创业型公司。也许可以翻译成“基于的Flex的创业公司帮助人们学习新语言”?

基于RIA Flex Flash 平台开发的进销存企业信息管理系统开发经验 by tangu soft

基于RIA Flex Flash 平台开发的进销存企业信息管理系统开发经验
(欢迎转载,转载请注明作者,尊重版权)

关键字: RIA Flex 应用成功案例 实际项目
四,基于Flex的进销存系统演示地址

www.tangusoft.com/Demo/

作者www.tangusoft.com
一. 中小企业进销存系统和运行平台以及技术架构

1. 中小企业进销存系统特点:
a. 目标客户
零售批发中小企业,企业规模人数500人以下,销售额1500万元以下。
b. 数据操作频繁
每天频繁操作销售和采购以及仓库出入库,经常需要查看企业基本信息,包括商品信息,客户供应商信息,应收应付。并且需要快捷的操作系统。
c.存储数据量有限
商品信息大概5000条,客户供应商大概1000,
每天单据信息大概50条,每年单据信息大概20000条
d.并发操作用户数量固定
销售员,采购员,经理,财务,大概20人左右。
e. 用户使用地点不同
需要直接方便浏览器访问系统
f. 客户浏览器处理功能强大
目前客户电脑普遍内存1G, 处理器 双核2.0 以上
g.中小企业普遍软件预算不高
同时也尽量避免盗版软件引起的法律诉讼和纠纷。

2. 运行平台和系统架构
根据中小企业进销存系统的众多特点,同时考虑技术成熟度和新技术风险,我们决定采取以下运行平台和系统架构
运行平台 Linux Apache Tomcat Mysql
系统架构
表现层Flex 3
数据处理和控制层Blazds + Spring + Ibatis

Flex/Flash 具有以下优点
客户端 界面友好,数据表现能力强大,处理能力强大,有一定的缓存数量的能力,减少服务器请求次数,节省不必要的网络传输。
BlazDS 能够处理并发用户的请求,并且能够压缩数据。
Spring 声明性的代码配置,减少系统维护工作量
Ibatis 减少实际编码,考虑以后支持多种商业数据库

运行平台免费,企业零预算。

二,框架和代码生成器
1. 选择成熟的Flex 框架

cairngorm 和 pure MVC 是目前成熟的open source 框架。
基于Adobe 支持和维护cairngorm,所以采用cairngorm
同时cairngorm 对view 表现层 和 control 控制层 的隔离和耦合没有成熟的解决方案,开发过程我们曾经使用ViewControllerHelper ,用addListener监听器监听event 事件的执行,实际过程发现代码维护成本太高,遂中途放弃。
最后我们同时引进universal mind cairngorm作为补充辅助框架。
2. Ibatis 代码生成器
选择Abator
三,解决方案
1. 客户端尽可能使用单例模式
减少不必要的客户端内存开销
2. 适度利用客户端缓存
对于商品以及客户供应商, Flex 缓存这些数据,各模块共享数据。
3. 尽可能的采用lazy load 惰性载入数据
很多Flex 系统采用初始化时候一次性载入系统所需要数据,结果导致延长用户登录时间,用户体验非常的差。
4. 不要过度依赖客户端处理能力
特别是大数据排序或者处理请求大数据能力的时候,flex 很容易导致浏览器停顿和不响应。请把大数据排序放在Java或者数据库端,适度的分页分段向服务器请求数据。
5. 最大有效的利用Flex 3新的类库。
减少开发工作量。
例如利用arraycollection 内置的filerfunction 进行查找数据。
6. 定制开发一些特有的控件
带合计栏的datagrid
能模糊查询的combobox
7.报表开发
使用成熟的jasper report 框架。
8. 用户权限的开发
动态创建用户所能操作的模块,而不是简单控制模块的可见和不可见属性
9. 减少生成swf 大小
使用runtime shared library 编译swf
10. 开发模块组件化
判断标准是没有出现冗余重复模块代,application mxml 文件代码简洁
11. 模块之间的数据和方法调用

A模块引用B模块的数据d和方法f,避免简单的调用B.d 和 B.f
需要采用数据和方法的传递,以免多层次的模块数据和方法调用导致代码的复杂。
12 使用resource bundle
标签和文本以及提示从resource 文件读取。


tangusoft.com/consultant.html

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT