首页  »  air

用Prism把网络应用本地化

较早之前听说Firefox也要效仿Chrom支持多进程浏览网页了。不过凭Mozilla的底子,要实现应该是相当容易了。这不?Mozilla现在硬生生地把网络应用变成了本地应用!

Prism就是这样一个应用转换器,她可以把GMail,Greader等变成本地的应用程序,以后我不需要在浏览器中打开Gmail也可以收Email了。用Firefox实现这个太简单了,凭她强大的XUL。

先试试创建一个Reader应用。先安装Prism的Firefox插件

打开googleReader后,展开工具菜单,点选Convert website to Application。

picture-5

弹出配置窗口,并于程序界面、快捷方式和程序图标的一些设置。。为了让它看起来更像桌面程序,我就不选生成导航栏,甚至状态栏我也不要了。最后创建程序到桌面。

picture-6

确定后在桌面生成一个google reader.app的应用程序,双击打开就是一个本地的Google Reader应用程序了。。界面截图如下:

picture-8

此刻我想起了Adobe Air,诞生时让无数人惊艳的RIA神器,我开始知道,原来网络应用也可以变成桌面应用。

我知道Prism和Air是两款截然不同的产品,他们主要面对的用户群体也不一样,Prism对网络应用的最终用户友好,而Air是对网络应用的开发者友好,只是我想说,她们的最终目的都是为了最终客户。

Prism + Gear > Air?

不是开玩笑。Prism + Gear组合,仅需要开发一次,网络、桌面版应用均可使用,而Air只适合开发桌面应用,如桌面版的Ebay,就是用Air重新开发一套本地UI的。Prism + Gear(或其他嵌入式DB)后,Air只剩下“用户界面在本地”的优势了。

也许我不应该就Prism这么小的产品长篇大论,因为现在,桌面应用与网络应用的界限已经越来越模糊了。其实Prims只是给每个应用程序创建了一个独立进程罢了。。呵呵。

关于AMF与BlazeDS

AMF是Action Message Format的简称,它是flash专有的数据传输格式,简单的可以理解为类似XML这样的数据格式,不过XML是纯文本,任何一种语言都通用,而AMF是二进制数据,为flash专用.

为什么又有新的数据格式?

有XML不够么?跨语言,世界范围的标准.而且一直以来,我们都是使用XML作为Flash与服务器端通讯的,这个AMF好在哪里,而且还是专用的!

AMF在作为一种数据结构,从通用性上来讲,肯定比不过XML,不过这种协议是专门服务于flash的客户端应用程序,它有两个大优点:
一,比XML等传输协议更优秀的传输性能.AMF能够缓解由基于文本导致的传输瓶颈问题.这可以有证据的哦.
二,更少的数据层抽象代码,甚至不需要反序列化的代码.使用XML类的协议编程时,避免不了有一个数据反序列化的过程,使无意义的数据片段变成有意义的Flash对象,数据模型多的时候可不是一件轻松的事情,想象一下,现在完全不用去管XML,只需要定义一个远程对象即可马上调用,这个过程节省多少成本?!

下图是XML与AMF传输过程的对照:

基于上面两个优点,AMF如今获得许多开发人员的认可,不少服务器端语言也提供了AMF的适配框架,如pythonAMF和下面要介绍的BlazeDS.

BlazeDS

BlazeDSAdobe公司亲自开发并开源的AMF-Java适配框架.为flash提供java服务器端的简单远程调用能力和实现java对象与actionScript对象的转换.

使用BlazeDS很简单,其核心是一个服务器端的主配置文件:WEB-INF/flex下面的config.xml.示例片断如下:

xml 代码
 
  1. <destination id="HelloWorld">  
  2.        <properties>  
  3.          <source>HelloWorld</source>  
  4.        </properties>  
  5.  </destination>  

这样在flash客户端可以通过声明一个远程对象"HelloWorld"来调用服务器端的方法获得返回值.

更详细的使用说明有兴趣的同学看文档吧.

另外不得不提的是BlazeDS在消息处理上面比较优秀,客户端可以发送消息到服务器端的同时,BlazeDS会在服务器端把消息主动push到客户端.具体实现暂时没有考究,不过用来做即时通讯的客户端支持还是挺有用的.

问题

被Spring和hibernate惯坏了的java程序员一定很关心:

BlazeDS的配置文件里面可以使用Spring Bean吗?这是我最关心的事情,因为现在的java web程序大部分都采用spring作为基础架构了,许多第三方的工具和框架都提供了spring的兼容方法.这是BlazeDS不能避免的.不过,现在的blazeDS还不是成熟的版本,不知道以后会不会提供?

使用BlazeDS肯定享受不了hibernate的lazyload了!目前看来是不行的.

 

flex编程小心得

编程 jeff  |  2008-06-19 1 airflexflash

从真正学到初步完成作品不过就两天半,大气不敢出,先记一记过程的一些所得.
一,当你用Shape画完一个矩形后,想要给它加上一些类如mouseOver,mouseOut的事件,你发现这个图形居然不支持.其实你需要的是InteractiveObject类或及子类.嗯.有交互性质的对象才会提供这样的事件.可以使用Sprite来代替掉Shape哦.

二,通过设置useHandCursor=true以及buttonMode=true,可使光标移到该对象上面时光标变为手状.

三,其实Dictionary并不比Object好用.new Object()完全当字典用.Dictionary有点娇气.

四,as3解释xml很好很强大.
tag.subtag 获得子结点
tag.@attribute 获得结点属性值
tag.(@id=1).subtag 按条件查找某一个结点
等等...
我是把整个xml加载到内存当作活生生的业务对象来使用了,动不动就查找一下.很过瘾.

五,Shape,Sprite等非控件类的元件不能直接使用addChild()方法将其加到application下面,在flash cs3下可以,flex下的做法是创建一个UIComponent作为这些元件的容器,将这些元件加到该容器中才可行.新手最头疼的是这个,有可能半天搞不清楚为什么明明加了就是不显示,实际上提示了TypeError.

六,通常情况下可以忘记flash的层次结构,最后加进来的元件总在最上面.我的做法是把元件都初始化完,有需要的时候就addChild,需要隐藏就removeChild完事.省去设置层数的烦恼.

七,可以这样来设置鼠标的样式,不过我试完之后发现不适合我 :)
[Embed(source="图标名")]

private var MouseIcon:Class;

private function iinitApp(event:Event):void{

CursorManager.setCursor(MouseIcon);

}

七,文档很重要,特别是livedoc和我最重要的api文档.
http://livedocs.adobe.com/flex/3/
http://livedocs.adobe.com/flex/3/langref/index.html

空气啊空气

编程 jeff  |  2008-03-03 77 ajaxairria

毫无疑问,Adobe Air的凌空出世绝对是给RIA领域注入了新鲜血液,名副其实,给开发者带来了新鲜空气。

几天前得知Air的1.0版本的释出,看了些Demo,大喜过望,然后翘起二郎腿就暇想着以后桌面程序开发的几种杀手技:

一、使用现有的浏览器端的Ajax技术开发桌面应用程序。用已经很成熟的Extjs2.0.2来开发可以一举两得,既可在Web上跑,又可在桌面上跑。如果没用过Extjs,没所谓,最原始的Html + Js + Css就可以了,不过为了可以使用离线存储和更多的UI功能,建议使用Adobe自家的spry框架。

二、如果你早早你学了Flex,那也没关系,Air对Flex的兼容更好,毕竟Air和Flex是同门师兄弟。

三、Flash?Action Script?太好了,还是自家人。

四、远程调用方面,Ajax够用了,非得要Webservice的话,还不如用现在流行的REST风格(流行得有点畸形了,都是为REST而REST)的Webservice,基于HTTP,对于Javascript而言,还是XMR罢了。

可以看出Air的野心有多大了吧,直接把Web移到桌面上来了,开发者还不需要学习新的语言或框架,仅对我而言,吸引力还是相当大的。

可是我测试Air应用的时候(包括Extjs2.0.2的Air Sample及著名的Agile Agenda)发现都不能接受中文输入,我使用的是五笔加加和Google拼音。居然连粘贴也不行。不知是否和我机器有关系,真宁愿是我RP有问题。如果真的是不兼容中文输入法,那么,这个“空气”就真的变成空气了。。只能下回再见了~~~

Meta

关于本博客...

关于黑莓手机、apple、twitter、互联网、web2.0以及生活的碎言碎语。请在twitter上 follow我,欢迎同好者talk to me bbmyth AT gmail.com。博客Hosting在 webfaction。

赞助商链接

我看我听我读

最新评论

标签

python 空间 开发 计划 年假 工作 诗歌 音乐 西片 恐怖 惊变 django mysql rss 文艺片 太阳 彩色 电影 apache 部署 factcgi lighttpd javascript editor MYMeditor sql 日志 java hibernate orm 数据库 英伦 摇滚 原创 中间件 朋友 erlang 并发 函数式编程 旅游 云南 丽江 发呆 学习 编程 技术 lucene 全文搜索 中文分词 乐队 模板 分页 成功 google pagerank 中文 更新 个性化 秋天 互联网 web ext json ajax 事业 职业 读书 开源 香港 澳门 忧郁 冬天 compass dvd 广州 地下 暴力 美学 声音玩具 独立 备份 数据 琐事 博客 生活 体验 卖唱 接口 设计模式 图表 wiki moin 遇窃 air ria 需求 设计 信息 健康 感悟 人生 真诚 life jquery 杭州 灾害 2008 中国 灾难 哀悼日 jmesa grails flex flash 捐赠 scrum 软件过程 快速开发 plone cms nuexo zope 左小诅咒 demo prototpye AMF actionscript 汉诺塔 算法 递归 结婚 感情 opensource 网络 beautifulSoup 管理 大理 香格里拉 休假 鼻炎 许巍 感性 2009 随想 cpug 聚会 出差 北京 api 创业 商城 blackberry 手机 TD 交流 处事 为人 房子 经济 手机仿真 在线服务 嵌入式 海鲜 p2p easymule apple 技巧 thing gtd task gfw vpn 穿墙 代理 软件管理 翻译 mac 英语 caffeine 休眠 搬家 主机 prism firefox mozilla 免费 php codeigniter url blogspot mindmap mindnode htmlparse easyurl 产品 黑莓 rim 试手机 豆瓣 twitter 微博 杂记 时空 亲人 dabr webfaction host 快速查看 safari appale 桌面 snow 升级 leopard finder 权限 glims python主机 合租 ruby主机 快捷键 itunes 时间管理 原型 画图 招聘 hosting 写作 软件 家庭 广州技术沙龙 postgres 云计算 fuckgfw 内容审检 谷歌 chrome linux odbc database freetds R 统计 书签 浏览器 bookmark tinymce 文件管理 分享 忙碌 旅行 马来西亚 图维导图 freemind 工具 pinax develope shell dropbox barcamp

日志分类

友情链接

博客归档

PowerBy