与后台通讯,首先要了解AMF协议
生活随笔
收集整理的這篇文章主要介紹了
与后台通讯,首先要了解AMF协议
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Flash 5開始就可以以
XML
或者“變量/值”配對輸出格式向服務器傳送
數據
。雖然這些數據能通過Flash編譯器自動解析或者通過
開發
人員自行編寫的
代碼
手動解析, 但解析的速度慢。因為在解析過程中,XML需要按節點逐層處理數據。而且使用XML和“變量/值”配對格式處理的數據類型只能是字符型,數字也不例外。而Flash Remoting卻能處理復雜數據類型, 比如對象、結構、數組,甚至可以是數據集,配合
DataGrid
組件
可以很方便地顯示數據。
為了處理復雜數據類型,采用一種獨有的方式使Flash與 應用 服務器間可以來回傳送數據勢在必行。于是AMF應運而生。AMF是 Adobe 獨家開發出來的 通信 協議,它采用二進制壓縮,序列化、反序列化、傳輸數據,從而為Flash 播放器 與Flash Remoting網關通信提供了一種輕量級的、高效能的通信方式。
AMF最大的特色在于可直接將Flash內置對象,例如Object, Array, Date, XML,傳回服務器端,并且在服務器端自動進行解析成適當的對象,這就減輕了開發人員繁復工作,同時也更省了開發時間。由于AMF采用二進制編碼,這種方式可以高度壓縮數據,因此非常適合用來傳遞大量的資料。數據量越大,Flash Remoting的傳輸效能就越高,遠遠超過 Web ?Service。至于XML, LoadVars和loadVa ria bles() ,它們使用純文本的傳輸方式,效能就更不能與Flash Remoting相提并論了。
注意:Flash Remoting需要瀏覽器支持Bin ary POST,Flash 播放器在Nets cape 6.x.環境下運行Flash Remoting會不起作用(Flash Remoting調用沒有 效果 也不返回錯誤), Nets cape 7已經糾正了這個b u g 。對于早期Sa fari和Chim era版的蘋果機也有這個問題。
同樣是輕量級數據交換協議,同樣是通過調用遠程服務,同樣是基于標準的HTTP和HTTPS協議, Flash Remoting為什么選擇了使用AMF而放棄了SOAP與Flash 播放器通信呢??有如下原因:
SOAP將數據處理成XML格式,相對于二進制的AFM太冗長了;?
AMF能更有效序列化數據;因為AMF的初衷只是為了支持Flash ActionScript的數據類型,而SOAP卻致力于提供更廣泛的用途;?
AMF支持Flash 播放器 6只需要瀏覽器增加4 KB左右(壓縮后)的大小,而SOAP就大多了;?
SOAP的一些頭部 文件 請求在Flash 播放器 6不支持。那Flash 播放器 6為什么能訪問基于SOAP的Web服務呢?原來Flash Remoting網關將SOAP請求在服務器端與轉換成AFM格式,然后利用AFM與Flash 播放器通信。另外,AMF包中包含onResult 事件 (比如說response事件)和onStatus事件(比如說error事件),這些事件對象在Flash中可以直接使用。
AMF從Flash MX時代的AMF0發展到現在的AMF3。AMF3用作Flash Playe 9的ActionScript 3.0的默認序列化格式,而AMF0則用作舊版的ActionScript 1.0和2.0的序列化格式。 在網絡傳輸數據方面,AMF3比AMF0更有效率。AMF3能將int和uint對象作為整數(integer)傳輸,并且能序列化ActionScript 3.0才支持的數據類型, 比如ByteArray,XML和Iexternalizable。
為了處理復雜數據類型,采用一種獨有的方式使Flash與 應用 服務器間可以來回傳送數據勢在必行。于是AMF應運而生。AMF是 Adobe 獨家開發出來的 通信 協議,它采用二進制壓縮,序列化、反序列化、傳輸數據,從而為Flash 播放器 與Flash Remoting網關通信提供了一種輕量級的、高效能的通信方式。
AMF最大的特色在于可直接將Flash內置對象,例如Object, Array, Date, XML,傳回服務器端,并且在服務器端自動進行解析成適當的對象,這就減輕了開發人員繁復工作,同時也更省了開發時間。由于AMF采用二進制編碼,這種方式可以高度壓縮數據,因此非常適合用來傳遞大量的資料。數據量越大,Flash Remoting的傳輸效能就越高,遠遠超過 Web ?Service。至于XML, LoadVars和loadVa ria bles() ,它們使用純文本的傳輸方式,效能就更不能與Flash Remoting相提并論了。
注意:Flash Remoting需要瀏覽器支持Bin ary POST,Flash 播放器在Nets cape 6.x.環境下運行Flash Remoting會不起作用(Flash Remoting調用沒有 效果 也不返回錯誤), Nets cape 7已經糾正了這個b u g 。對于早期Sa fari和Chim era版的蘋果機也有這個問題。
同樣是輕量級數據交換協議,同樣是通過調用遠程服務,同樣是基于標準的HTTP和HTTPS協議, Flash Remoting為什么選擇了使用AMF而放棄了SOAP與Flash 播放器通信呢??有如下原因:
SOAP將數據處理成XML格式,相對于二進制的AFM太冗長了;?
AMF能更有效序列化數據;因為AMF的初衷只是為了支持Flash ActionScript的數據類型,而SOAP卻致力于提供更廣泛的用途;?
AMF支持Flash 播放器 6只需要瀏覽器增加4 KB左右(壓縮后)的大小,而SOAP就大多了;?
SOAP的一些頭部 文件 請求在Flash 播放器 6不支持。那Flash 播放器 6為什么能訪問基于SOAP的Web服務呢?原來Flash Remoting網關將SOAP請求在服務器端與轉換成AFM格式,然后利用AFM與Flash 播放器通信。另外,AMF包中包含onResult 事件 (比如說response事件)和onStatus事件(比如說error事件),這些事件對象在Flash中可以直接使用。
AMF從Flash MX時代的AMF0發展到現在的AMF3。AMF3用作Flash Playe 9的ActionScript 3.0的默認序列化格式,而AMF0則用作舊版的ActionScript 1.0和2.0的序列化格式。 在網絡傳輸數據方面,AMF3比AMF0更有效率。AMF3能將int和uint對象作為整數(integer)傳輸,并且能序列化ActionScript 3.0才支持的數據類型, 比如ByteArray,XML和Iexternalizable。
總結
以上是生活随笔為你收集整理的与后台通讯,首先要了解AMF协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AS3 Socket 基础知识(很全面)
- 下一篇: as3 中get和set的用法