flex 的數據通訊


【轉載】

文章分類:Flash編程
http://hi.baidu.com/zwnjiejie/blog/item/7d338c1eca7df5fe1ad57607.html
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效率更高。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章