(转) Flex的几个值得借鉴的项目
1、Merapi
经过近一年的开发、测试、接受反馈,以及重构,备受瞩目的Merapi项目已经作为开源项目正式发布;Merapi这个名称来自于Java岛中的一个火山,同时它被设计为一座沟通Java应用和AIR应用的软件桥梁,通过这个桥梁可以将用户的系统资源以及第三方硬件暴露给AIR应用,从而使AIR应用做到以前做不到的事情。
Merapi的使用方法很简单,在AIR和Java应用间的通讯是通过一个存在于AS和java中的类merapi.Bridge来完成的,两者最简单的交互方式就是发送和接受消息,详细的使用方法见这里;使用SVN工具从该项目的googlecode上下载到源码,仔细研究Merapi的核心类Bridge,就可以发现,两者的通讯是通过Socket来进行的,Merapi的服务端即Java端merapi-core.jar是作为一个SocketServer来运行,默认的端口12345,服务地址默认是localhost,这个配置可以通过./config/merapi-native-config.xml来修改,Merapi的客户端即Flex端是作为一个Socket客户端来运行的,默认连接也是localhost,端口12345,当然如果服务端修改了,客户端也可以通过config/merapi-client-config.xml来修改,两端间传递的消息是AMF3协议的对象(需要类映射),从而可以进行高效的数据传输。
关于Merapi的使用实例可以在这里进行下载,比如可以利用Java的截屏功能和图形文件生成功能,来通知AIR获取生成的图形文件,从而实现AIR进行截屏的功能。Merapi项目为AIR的应用领域开辟了广阔的而且前所未有的天地,从而进一步接入包括操作系统相关的硬件资源,比如WII、GPS、USB、相机、扫描仪,甚至通过AIR来控制机器人、家用电器等等。
编者点评:Merapi是在AIR平台之外的另一个奇迹,它做到了AIR想做但是没有做到的事情,从目前的这种工作机制来看,它能满足复杂系统实时、高效的数据传输,尤其适合传统Java桌面应用迁移到RIA的场景,只要将服务以消息暴露出来,就可以在AIR中充分展示RIA的魅力了。
2、OpenScales
从事webGIS开发的Flash/Flex程序员一定不要错过这个消息,一个新的开源GIS项目OpenScales成立了。
用官方的话来说:该项目旨在提供一个用户友好的、响应迅速的工具来操作空间数据,例如地理栅格视图、向量数据编辑,管理缩放和定位之间的平滑转换等等,作为一个用AS3写的开源工具,Openscales设计目的是为了易于在你的Flex/AIR应用中使用,它虽然小但是是GIS的有力核心。
简而言之,OpenScales就是个各种地图数据的引擎和呈现工具,这些地图数据包括 WMS(Web Map Service), WMS-C, and WFS(Web Feature Service Interface Standard)协议的数据,以及其他标记内容;Openscales是融合了多个开源AS3/JS 的GIS项目,而且以flexlayers项目作为代码基础,从其路线图来看,要做成一个超级适应性的GIS引擎。 相比Modestmap来说,该项目的特色在于面向与专业的GIS开发者,和强大的适应性和可配置性,每一种地图数据和标记都可以作为单独的layer来呈现,而不在像modestmap那样只有固定的地图数据和结构,从而只适用于比较需求简单的情况,而且适合GIS基础不深厚的开发者。 从该项目的UML地图来看,可以看出它的大概结构,目前虽然他的
3、ModestMaps
ModestMaps是一套基于As3.0(ActionScript2.0与ActionScript3.0)脚本与Python脚本开发出来的一套类库,是遵循BSD许可协议(参见Unix知识)在Falsh里进行地图显示与用户交互的。
目的是为初学者设计者与开发人员提供一个最轻量级的,可扩展的,可定制的和免费的地图显示类库,这个类库能帮助开发人员在他们自己的项目里能够与地图进行交互。ModestMaps提供一个核心健壮的带有很多hooks与附加functionality函数的要素开发包。
例子请参见:http://www.modestmaps.com/example.html(NASA Blue Marble satellite mages,)
http://www.modestmaps.com/tutorial-actransit/actransit.html(AC Transit Oakland bus lines.)
这里有一个讨论组(discussion group:http://getsatisfaction.com/modestmaps)一个跑车爱好者(采集数据) 一个通讯专门为版本的更新与补丁提供帮助 这些使得地图瓦片提供者继续为modestmaps效力。当然了 如果你想发布你自己的地图瓦片服务的话 你也可以按照如下说明 第一 地图坐标转换计算 第二 制作瓦片数据 如果你感兴趣利用modestmaps作为一个地图服务端工具来使用的话 那么你可以参照ws—compose(利用Python脚本写的一个HTTP接口)进行开发(http://www.modestmaps.com/examples-python-ws/)。
自从2008年12月以来 modest maps不早包含了对Google maps的支持了 如果你想用googlemaps的话 你可以使用Google's Maps API for Flash or the Google Static Maps API来进行开发,这些与flash,Python都比较类似。
下面我们来看看ModestMaps到底能做什么 不能做什么
第一:ModestMaps能做到:
1.显示基于地图瓦片的地图 比方说来自的OpenstreetMap,来自NASA Blue Marble,来自Yahho!,来自Microsoft或者其他地方的地图服务瓦片。
2.支持对地图瓦片进行任意地理空间投影设置
3.支持漫游与缩放
4.支持跟踪地理兴趣点(地理标识)的位置
5.支持ActionScript 2.0 代码与flashlite协同工作(这个不是很清楚)
第二 ModestMaps不能做到:
1.不提供默认的地理标识的显示
2.不提供默认的按钮进行缩放与平移地图操作
3.不提供其他的api 使得能够进行商业区搜索与数据库查找功能
4、增强的flash组件-UMap(http://www.afcomponents.com/components/umap_as3/)
5、基于地理数据的BI工具spatialKey新版发布
国际知名RIA咨询公司UniversalMind近日发布了其主打产品SpatialKey的2009年5月版,在该版本中加入了一些新的特色以改进可用性、增强了过滤功能、改善了数据导入功能、增加了报表界面截图的共享功能等等。
SpatialKey是下一代信息可视化、地图、分析和报表系统,它设计用来帮助社 会机构快速评估出基于地理的信息,这些信息对于实现组织的目标、作出流程处理的决策以及报表需求都至关重要。简单来将就是它提供了一个将地理相关的业务数 据进行可视化的工具,这个工具可以为公众做很多智能化、人性化的工作,从而解决业务上的分析手段问题。
这个工具的大概工作流程如下:
- 首先准备一些数据,这些数据可以是excel数据,也可以是数据库,但是最终都要导成以回车符和逗号分隔字段的.csv文件;
- 然后按照Spatialkey的向导将其导入,并设定相关字段,比如字段类型、指定地理字段等等;
- 选择生成报告的模版,有三种形式供选择:Dashboard Creator、Simple Timleline、Full Screen Map,分别代表小器件生成器、简单地图及时间线、全屏地图;
- 进入模版使用已经上传的数据进行定义要展示的方式,并保存下来;
当然要使用这些功能首先要注册的,目前用户注册是免费的,免费用户最多可以上传10个.csv文件,每个文件最多允许10000条记录,最大25列或者25 个字段。在Spatialkey网站主页顶部就是注册入口,观看它的视频可以对该产品的特点有一个大的了解,如果要想亲自动手体验一下,可以看看它的教程 和HowTo来了解一下如何上手。
笔者点评:SpatialKey是目前业界GIS和BI产品结合 的罕见而且较为成功的案例,它用简单的方式解决了BI领域中的大难题,对数据的预处理问题,并将数据通过多种可视化手段呈现在页面上,这从另一角度又体现 了RIA的优势或者说是Flash的优势;该产品处处闪烁着技术上的亮点:大数据量的处理(最多支持25万条记录)、可配置可保存的dashboard、 dashboard面板之间的互动、多种图形组件例如热量图网格图、深度钻取柱图、历史数据回放等等都无一不显示出该公司的巨大技术实力(这公司可以是有 不少技术牛人呢),更难能可贵的是,这个新颖的BI系统还是由一些不太懂BI的人做的。
如果要说建议或者不足的话,我认为还是有改 进的地方,进入创建Dashboard的场景后,竟然找不到保存的图标,点了半天才发现它被归类到Option菜单下,这个菜单名称是不是改改成Flie 或者Report呢?此外,对.csv文件的格式化和验证是不是有个模版或者校验工具来检查一下是不是更好,更能保证数据的正常使用呢?此外在 Chrome(Flashplayer9)下上传文件失败报异常,在IE7/FP10正常。
6、介绍针对企业级Flex开发的开源项目FlexibleShare和AnvilFlex
近日,开源的企业内容管理(ECM)系统供应商Alfresco发布了FlexibleShare+AIR Build1 版:一个基于Flex的开源的dashboard/portal容器,用来做文档管理、协作、商业智能/图形展示/报表;对于从事门户开发、内容管理系统开发,而又想迁移到Flex平台的开发者来说,这也许是个好消息,Alfresco为大家做了基础工作,并已经有了完整框架可以使用,这又是对Flex向薄弱领域发展的积极探索。
FlexibleShare从字面意思就能看出,这个是一个可配置、可插拔的模块系统的简称,它是Alfresco的另一个Flex表现层应用FlexSpaces的门户形式,及通过模块化的整合方式来使用FlexSpaces的各种系统;FlexibleShare的技术架构依赖两个关键部分,一个是LCDS,一个是Anvil项目,这是一个开源的Flex门户框架,2008年年底创建,Anvil的设计目的是为了使开发企业级Flex项目更加容易,并提供了一个门户环境来运行Flex应用。现在Anvil已经成为如何构建企业应用的典型案例,并正在努力使它更简单、更方便的创建Flex应用的定制环境。
Anvil项目的源码可以在SourceForge上下载到,目前该项目处于起步阶段,版本是0.5.1。下载了这个30兆的.zip包,解压后就能看到里面的例子和源码了,而且有一个getting-started.txt文档来供上手;这个编译环境需要几个环境变量设置,做过Java开发的都比较熟悉,FLEX_HOME环境变量指的是FlexSDK的路径,根据指南,访问 http://localhost:8080/anvilPortal/AnvilPortal.swf(我的环境是Tomcat5.5,使用FF3访问,IE7不行)就可以看到这个小例子了。根据例子来看Anvil采用了FlexMDI框架,并将其改造,将其中的某个系统作为模块动态加载进来成为一个MDI窗口。
编者点评:Anvil的价值有两个:一个是将应用和模块的编译通过自动化的方式进行构建,一个是提供了应用程序管理Module的方式,这是目前开发大型Flex应用所必须要解决的问题,我想这个框架对于企业级开发Flex项目来说,是很有参考价值的;跟这个类似的项目还有flex-shell,是RIAForge上的一个开源项目,它同样解决了类似问题,而且对于不同用户权限的管理提供了丰富的控制;最后还要说明的是,基于Flex的CMS系统究竟价值何在,是否是最好的选择,还需进一步探讨,但是至少从技术上讲可以做到,至于其他方面,比如性能、体验等问题,只能亲眼看到才能做出评价了。