flex数据交互方式 转

Flex数据交互方法- httpservice, webservice, RemoteObject, socket.

写在前面:

使用SOAP Web Service同Flex交互有很多好处,但是它很慢, 使用定制化XML好一点,却不标准化.

那么最好的ASP.Net 和flex交互方法是什么? 

1. HTTPService 实际上应该叫做XML via HTTPService, 就是用get和post方式进行数据传输,同平常的web form提交大致一 样.好处就是很简单,通用性高. 不管你用asp,jsp, 还是XXP, 任何可以生成标准XML的程序都可以和你的Flex程序进行交互. 处理大量数据时, 速度慢, 下面是个简单的例子:

登录 http://www.helloria.com/showtopic.aspx?topicid=37&forumpage=1&page=1#53 

2. WebService 通用的叫做SOAP, 用datatable返回数据, 没有内建的Paging功能.不直接返回dataset. 并且大型数据交互速度慢.但,它是比较通用的接口, 大多服务器通信都支持, 不过服务器端实现起来比较复杂.

3. Remoting 基于AMF的数据交互, 速度以及性能是最好的. 支持dataset和datatable, 以及OR mapping工具. Fast, reliable and secure, 需要一个Flex Remoting Gateway来做数据de/seralization.

 优点:

1).传输数据类型比较丰富。

2).可以支持AMF0,AMF3两种数据封装类型,AMF3是Flash Player 9或更高级才能支持,有了AMF3,可以直接传送二进制文件流数据。

3).传输效率相对比较高。

4).对各种后台的支持也比较好。

FDS(LCDS) - 是Adobe主推的FlashRemoting服务端,功能强大(当然也支持AMF0,AMF3格式, java和net平台都支持),质量也不错,可惜这个是需要银子的。

Blazeds - 是Adobe另外一个开源的FlashRemoting项目,基于Java平台的,支持AMF0,AMF3格式

Amfphp - 一种基于PHP的RPC工具,支持FlashRemoting中AMF0和AMF3两种格式,开源项目。

Openamf - 一种基于Java的FlashRemoting开源项目,目前只支持AMF0格式。

GDS(Granite Data Services) - 也是一个基于Java平台的FlashRemoting项目,支持AMF3的。

WebORB - 一个支持.net,java,php,ruby等开发平台的FlashRemoting项目,也支持AMF0和AMF3。

FluorineFx - 一个支持.net开发平台的FlashRemoting开源项目, AMF0, AMF3 ,RTMP, RTMPT 。

缺点:

1).需要后台服务端装相应版本的Flash Remoting模块才可以使用。

2).如果使用虚拟主机的话配置起来比较麻烦。

4. Socket: 没什么说的,基于socket通讯的,这也是flash和传统web开发中,通讯方式最不同的地方,socket可以建立持久连接,因此可以用来做网游,多人聊天,视频等应用。 

什么是AMF? AMF0, AMF3 做Flex RIA交互的都知道有3种数据交互方式, HttpService, WebService 和remoting. 

大家又公认Remoting是最有效率的方法! 

那么Remoting为什么会更有效率呢, 这就涉及到数据封装格式. 

AMF是Adobe独家开发的数据封装格式, AMF(Action Message Format) binary format. Remoting传输这种压缩的数据格式, 而且传输的的数据还包括ByteArray等多种形态( 參考AMF3 Specification). 

Flash可以直接访问, 并且由于它是基于二进制的数据传输,所以相对于xml SOAP、json、webService等基于字符串的数据格式,有数据体积小和效率高的特点。 

AMF目前有AMF0和AMF3两种格式,AMF随着ActionScript3的问世,直接从AMF0升级到AMF3.  Flash8以前版本只支持AMF0,flash9支持两种格式。AMF3比AMF0效率更高。

你可能感兴趣的:(Flex)