用action script RIA开发也有很久了。主要谈谈对flash RIA架构的数据交互的经验和想法。
最开始的时候,是使用的flash+xml的方式进行交互。这种方式 是目前常见的,不过过于低级。 开发小于50个表的系统时候 还可以忍受。但是 如果开发大型的系统。每次 数据交互的时候都要写对应的 加标签和解析标签的,写了xml2Table效果也不大好。太繁琐了。感觉开发完全成了体力劳动。
后来,开始了flash remoting和 axis web services的开发,终于让体力劳动结束了。不过 感觉 flash remoting的效率高一些[二进制数据]。在系统开放性和系统效率 之间我选择了系统效率。
还有一个原因是axis在jbuilder下发布很方便。但是eclipse下没有找到那么好的插件,手工部署。而我又对jbuilder不感冒。所以青睐remoting的简单。
在于客户端的数据交互的时候,最开始,remoting提供了一个RecordSet,DataGlue,可以通过此 绑定在 mm的各种控件上,这样做好像开发效率很高,也是mm推崇的方式。 但是开发时也遇到了问题:
1 mm的v2控件是十足的体积杀手[swf体积快速变大]。
2 本着mm提供的dataSet,需要 服务器端提供一个不占连接的 DataSet, 这个DataSet应该是类似asp.net提供的那些
DataTable,而且可以兼容xml格式的DataSet, 而jdbc中常见的只有一个不争气的resultSet,rowset也不尽人意。以前我就打算自己开发一个这样的dataset,但是在sun上说jdbc4.0马上就出来了。我就忍了。可是2年过去了还是没出来。
后来我的解决办法是:
1 我们team自己开发了一套控件来替代mm的控件。
2 自己写了DataTable,xml2Table,Xml2Object等DataSet类来交互。
这个时候,但是自己写的DataSet并没有 得到太大的应用。因为我们马上采用了hibernate。在客户端,我们也写了对应的POJO的 AS类。因此,客户端面对的是对象,不是Table,Array,Item这些东西了。在这种方式下,终于解决了困扰已久的问题,服务器端和客户端基本上都是完全的OO,整个一个C/S的开发方式。大型的程序 都可以系统地开发了。
我们的最终架构:
flash: MVC (M: AS DAO ;V: UIObject;C[system logic])
java: remote inferface+ business logic+ ORM+DB
当然,因为速度上的考虑。有些地方没有像hibernate纯OO。还是用了比较脏的方式。当然项目开发就是这样。平衡胜于完美,可能以后会用ibatis吧。
再说一句,我对 Laszlo和flex一点都不看好,他让web开发又回到了jsp 时代.总体来说,struts,webwork不会马上应用到flash ria的。而且从longhorn的角度来说,以后没有c/s和b/s,只有c/s就是b/s了。