Flex项目技术架构前的假想

Posted on 2008-01-30 09:08 久城 阅读(4153) 评论(4)  编辑  收藏 所属分类: Flex&ActionScript
最近接触一个Flex项目,我一个新员工,接触不到架构,只能在这里假想。

背景:
外包项目,已完成系统设计,画面(所有mxml的Demo)基本完成。

40多人,分8个小组作业。每一个小组一个组长,每两个小组一个试样负责人。上面还有几层领导分别负责不同的工作,管事儿的是部长。

作业内容包括详细设计,编码和测试。

我的问题:
项目进行十分缓慢,最大的问题就是技术框架未定。由于大家都是第一次做Flex的项目,没有什么经验,对于一个新手来说,要想做好详细设计,首先要有编码的概念,但是现在,我没有。
面对分到的模块,我不知道数据是如何封装的,是如何传递的,数据如何处理,在哪里处理,更重要的是,如何与数据库交互。这些问题没有确定,对于一个Flex新手而言,真的很困难。

与后台交互的分析:
这里要感谢cimmicola对我的讲解!

1. 下策  直接采用flex的httpservice,服务器端手动的拼装xml,或者使用webservice。然后在客户端手动的解析xml。这是这几天做Demo时的做法,我相信这样项目最终不会这样做的。这样做,对Flex新手而言,开发的复杂程度较低,但是工程化程度也很低。

2. 中策  使用自己的框架,已经带有序列化消息转发层,(不知道有没有,但感觉这样一个大公司应该会有),比如可以将java对象序列化成xml数据或者json,这样可以直接通过httpservice来请求服务器端数据,避免自己拼装xml。这样的框架目前开源的也有很多,其中把java对象序列化成json数据的方法有很多人都写过,在学习Extjs的时候,就用到过。以前一直不理解java为什么要序列化,现在才真正体会到一点点。

3. 上策  使用hessian或者remoteobject。讲讲两者的区别。hessian和ro都是基于二进制的序列化协议。即将服务器端数据对象,比如 java".net"php等转化到某个2进制的数据,从而在客户端再次反序列化成as 数据对象。并且这两种方式都能直接暴露服务器端方法(通过配置),因此可以看作是直接请求远程对象的方法那样使用,当然这个过程仍然是异步的。因此他们的 好处就是,请求容易,服务端实现容易,传输速度快,数据量大,客户端直接识别这样的好处。hessian是开源组织的通讯协议,起源很早,而且实现的语言很多,甚至包含C++,ruby等。他并不是为flash而生的。java上的实现是以servlet形式实现的,因此他是以继承自他的servlet这样的框架规范,来控制你的返回值的序列化,从某种含义说,他仍然算是传统web框架。因为开源,因此可以对他框架可以灵活修改。
ro是基于adobe的amf通讯协议,当然现在也开源了,实现ro的有很多服务,比如最常听说到的LCDS,或者他的开源简化版BlazeDS,amfPhp,webrob等等。LCDS 是java实现,也是官方出品,自然功能最强大了,他的ro部分(这只是LCDS最基础的功能)类似spring的aop,直接对配置的java类进行切 入,因此对于设计模式来说,他打破了传统的web请求模式,纯粹通过访问一个messagebroker这个servlet来访问java类。因此如果不 太容易接受新架构或者对新架构不能灵活改变的话,会有些麻烦,比如说,他获取不到传统request对象。当然这也是可以完全通过改造程序框架得到解决 的。

最后
项目还在进行中,我还在缓慢的学习Flex的过程中。
可以感觉到领导们都很忙,而最底层的人却很清闲,包括我,还有时间在这里写BLOG呢。
很想帮上忙,却帮不上什么,只希望这个项目的技术框架早一些定下来。


欢迎来访!^.^!
本BLOG仅用于个人学习交流!
目的在于记录个人成长.
所有文字均属于个人理解.
如有错误,望多多指教!不胜感激!

Feedback

# re: Flex项目技术架构前的假想  回复  更多评论   

2008-01-30 13:21 by 鱼中鱼
在安装Flex builder 的时候需要apach conifgura文件是怎么回事?

怎么操作?

麻烦了

wangqianyfz@163.com

# re: Flex项目技术架构前的假想  回复  更多评论   

2008-01-30 13:36 by 咖啡屋的鼠标
我的上一个项目就是用的第一种方法,然后用AS写了一个底层通讯的类,总的来说代码是比较清晰的,唯一的问题是前后台的数据传递,Flex端不管是解析XML(伟大的E4X!)还是使用JSON对象都很方便,可是后台就不太方便了。mapping那块很麻烦,还对重构不太友好。或许可以考虑写一个CodeGen来辅助。

我个人是倾向第三种解决方案。试用了一下BlazeDS还是不错的,省掉了很多麻烦。不过没有在真实项目用过还不知道在细节上会不会有严重的问题。如果采用这种方式,我觉得像写Servlet一样写一些门面类,让Flex通过门面来访问是比较稳妥的一个方案,不要暴露太多后台的类给前台。

写模块的时候mxml写view,as写model和controller(必要的时候as也可以写点view,因为编译速度快),尽量减少代码行数,不要写没用的类结构。较大而且独立性比较强的模块就用Module,Module直接写在mxml中是没用的,得使用ModuleLoader。

# re: Flex项目技术架构前的假想  回复  更多评论   

2008-01-30 13:46 by 久城
@鱼中鱼
没遇到过这种情况,不知道你装的是什么版本,如果你安装的是FLEX BUILDER 3 BETA3的STANDALONE版本的话,一定不会有这个现象的。建议下载重新安装一下试试。
@咖啡屋的鼠标
多谢指点!:)你也可以说是老手了,我还在不停的写DEMO呢。别人也推荐我用BlazeDS,都说很好很强大,但最终项目用什么还是领导们说了算嘿嘿。目前项目view层的模块化实现的挺好,如你所说的,mxml写view,as写model和controller,但是画面的逻辑还是写在view里。

# re: Flex项目技术架构前的假想  回复  更多评论   

2008-01-30 16:54 by 地球玩家
框架有问题?!进www.cnflex.org看看吧

只有注册用户登录后才能发表评论。


网站导航:
 

Copyright © 久城