FluorineFx 开发/部署心得体味

    本文主题是备忘一些在开发/部署(发布)FluorineFx项目时需要注意的地方。顺便也写一点个人心得体会(我也知道这些都是废话,但就是按捺不住要写两句 --; )。

 

    最近公司在项目中使用了Flex,我一直都在使用URLLoader/HTTPService之类的普通方式,进行flex与服务器(.net) 之间的通信(主要是XML/Text传输)。因为我觉得URLLoader/HTTPService(XML/Text传输)这些方式很简单、方便、灵活。但并非其他的方式如SOAP(WebService)、JSON、AMF等等之类的就不好,主要是我觉得一般的应用嘛,XML/Text就够了。但随着项目的扩大深入,功能逻辑愈加复杂,代码量飙升,XML/Text多了,处理起来就不爽了。最主要是性能,这点网上也有很多文章提及,但这不能怪flex(xml/text)。嘿嘿~好比开个摩托车跑长途,甭管是谁来开都一样累。一样道理,XML/Text量大了,服务端处理、网络传输、客户端脚本处理等等都很麻烦,不管什么技术(JS/AS/Java/PHP/...),谁都没办法嚣张了。对此,我只能说,大车小车各有所用,按需而用。对于普通的、简单的、小型的等等性质的应用,使用XML/Text进行原生态的处理和传输是最简单、方便、灵活的。但对于那些服务端逻辑复杂、客户端展示也很复杂、数据量又大的这类应用,我们应该寻求其他更好的解决方案,比如使用一些优秀的框架、工具、之类,来帮助我们优化传输、处理原始XML/Text、改善代码体系结构、实现复杂功能等等。所以我选择了FluorineFx,至于为什么选择FluorineFx,原因不是FluorineFx有多么多么的好(我并不想给FluorineFx打广告),而是我因为选择了AMF3协议,网上传说在flex中这个AMF3的性能是XML/Text/JOSN等的几何倍数,虽然我没试过,但相关的流言和文章把我说动了。项目用的是.net平台,而.net平台支持AMF协议的框架不多,就大家所以熟知有WebORBFluorineFxAMF.NET 。 WebORB是收费的,暂时不考虑。AMF.NET已经几年不更新了,我不敢用。剩下还有选择的余地吗? 再加上网上大吹特吹说FluorineFx,什么远程调用、什么对象序列化、二进制传输、RTMP可以做视频聊天,反正说得很强大,我更心动了。就按着网上牛人们说的步骤:下载、安装、配置、编码、运行、部署(发布),一路走了一遍。感觉还行,就是在配置那些config.xml文件和Flex Builder3 参数的时候,涌起了当年做J2EE时配置webwork、Spring和eclipse参数的感觉,一边痛骂一边怀念。幸好一切都还算顺利,况且还有baidu和google 。

 

    主要是配置和部署的时候,比较麻烦和精细,一不小心系统就没动静了。对于配置Web.config和那些*-config.xml文件,网上已经有很多介绍了,如果E文好点,可以看FluorineFx安装目录里自带的图文并茂的帮助文档。安装目录里还自带了全面的应用FluorineFx的例子,这些例子都可以在VS2005/03/08里打开并运行,是学习的好对象。多试多弄,就会了。

 

    关于Flex Builder 3配合VS3005开发的事,有几个地方需要注意和理解。因为j2ee/eclipse的那一套和C#/.net的那一陀搅在一起,很多人都不理解了。.net项目和flex项目可以 不在 同一个目录下,我个人就不喜欢它们同在一个目录下,当然你要让它们同也可以。Flex Builder 3用的是eclipse的那一套,有工作空间的概念,所有的flex项目都在工作空间中,把flex项目设在与.net项目相同的目录下,不符合实际工作环境。 我的做法是.net项目和flex项目分开,然后把flex的输出路经设置到.net目录下。例如我的.net项目在E:/MyProjects/AMFProject目录下,那么我在Flex Builder 3中打开flex项目的项目属性对话框(很遗憾没能上传图片)。

 

1、在项目属性对话框里有一个“Flex Build Path”选项,选择“Flex Build Path”后,就可以看见一个叫Output folder 的输入框,我在Output folder 的输入框里填入E:/MyProjects/AMFProject/FlexBin。 这样当我编译flex项目后,那些.swf文件就会自动输出到.net项目的目录里,以供.net项目使用。

 

2、在项目属性对话框里有一个“Flex Server”选项,选择“Flex Server”后,可以看见分别有Root folder、Root URL、Context root 三个输入框。

    “Root folder”这个框里填入.net项目所在的根目录,即“E:/MyProjects/AMFProject”。

    “Root URL” 这个输入框,在开发中过程中可以乱填写,只要符合URL书写就可以,但是!在编译发布时,可不能乱写,一定要写上你的远程服务器的域名(或IP)和端口(如果有),否则部署将失败,切记!比如http://servername:80或http://ip:80

    “Context root”输入框里填写的是站点的根目录名称,比如我应该填“/AMFProject” ,但如果在部署时,我更改了站点根目录名称,那么FluorineFx将失效,那什么办?那我要重新在“Context root”文本框里填写“/新站点根目录名称”,并重新编译发布。这点比较麻烦,但这也没办法,因为这些swf是在编译时(并非运行时)获得站点根及上下文信息的,然而在服务器端并没有动态编译flex生成swf的支持。

 

    有关WEB-INF/flex下的services-config.xml的配置也有些地方需要注意。<endpoint>元素的uri属性值,在开发过程中使用默认值就可以了(通常是uri="http://{server.name}:{server.port}/{context.root}/Gateway.aspx")。但在发布时,要在大花括号“{}”里,换上你将部署到的服务器名、端口、站点根名称,然后重新编译,才可以发布部署。原因是 Flex Builder 3要根据services-config.xml中的信息才能成生成有效的swf。上面也提到flex项目属性中“Root folder”文本框里填写的是.net项目所在的根目录。其实Flex Builder 3在编译时,就会寻找这个“Root folder”的路径值下的WEB-INF/flex目录,并读取目录下相关的config.xml文件。

 

  最后再提醒一点,远程的IIS服务器的配置也要认真正确。我曾经因为没有将部署在IIS里的项目文件夹设置成虚拟目录,而导致FluorineFx部署失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值