新手入門AMF協議基礎全解
在Flash領域我們都知道AMF協議,目前AMF協議已經有了兩個版本,從AMF0一直到現在的AMF3,給我們帶來的變化也是很大的。那麼下面我們就將來仔細研究一下這個Adobe獨家開發的通訊協議。也是Flash Remoting的核心技術——AMF協議。
AMF是什麼?它的優點中是什麼?Flash Remoting為什麼選擇了使用AMF而放棄了SOAP與Flash播放器通訊呢?
Flash 5開始就可以以XML或者“變數/值"配對輸出格式向伺服器傳送資料。雖然這些資料能通過Flash編譯器自動解析或者通過開發人員自行編寫的程式碼手動解析, 但解析的速度慢。因為在解析過程中,XML需要按節點逐層處理資料。而且使用XML和“變數/值"配對格式處理的資料型別只能是字元型,數字也不例外。而 Flash Remoting卻能處理複雜資料型別, 比如物件、結構、陣列,甚至可以是資料集,配合DataGrid元件可以很方便地顯示資料。
為了處理複雜資料型別,採用一種獨有的方式使Flash與應用伺服器間可以來回傳送資料勢在必行。於是AMF協議應運而生。AMF是Adobe獨家開發出來的通訊協議,它採用二進位制壓縮,序列化、反序列化、傳輸資料,從而為Flash播放器與Flash Remoting閘道器通訊提供了一種輕量級的、高效能的通訊方式。如下圖所示。
AMF協議通訊方式
AMF最大的特色在於可直接將Flash內建物件,例如Object, Array,Date, XML,傳回伺服器端,並且在伺服器端自動進行解析成適當的物件,這就減輕了開發人員繁複工作,同時也更省了開發時間。由於AMF採用二進位制編碼,這種方式可以高度壓縮資料,因此非常適合用來傳遞大量的資料。資料量越大,Flash Remoting的傳輸效能就越高,遠遠超過Web Service。至於XML, LoadVars和loadVariables() ,它們使用純文字的傳輸方式,效能就更不能與Flash Remoting相提並論了。
注意:Flash Remoting需要瀏覽器支援Binary POST,Flash 播放器在Netscape 6.x.環境下執行Flash Remoting會不起作用(Flash Remoting呼叫沒有效果也不返回錯誤), Netscape 7已經糾正了這個bug 。對於早期Safari和Chimera版的蘋果機也有這個問題。
同樣是輕量級資料交換協議,同樣是通過呼叫遠端服務,同樣是基於標準的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是什麼?它的優點中是什麼?Flash Remoting為什麼選擇了使用AMF而放棄了SOAP與Flash播放器通訊呢?
Flash 5開始就可以以XML或者“變數/值"配對輸出格式向伺服器傳送資料。雖然這些資料能通過Flash編譯器自動解析或者通過開發人員自行編寫的程式碼手動解析, 但解析的速度慢。因為在解析過程中,XML需要按節點逐層處理資料。而且使用XML和“變數/值"配對格式處理的資料型別只能是字元型,數字也不例外。而 Flash Remoting卻能處理複雜資料型別, 比如物件、結構、陣列,甚至可以是資料集,配合DataGrid元件可以很方便地顯示資料。
為了處理複雜資料型別,採用一種獨有的方式使Flash與應用伺服器間可以來回傳送資料勢在必行。於是AMF協議應運而生。AMF是Adobe獨家開發出來的通訊協議,它採用二進位制壓縮,序列化、反序列化、傳輸資料,從而為Flash播放器與Flash Remoting閘道器通訊提供了一種輕量級的、高效能的通訊方式。如下圖所示。
AMF協議通訊方式
AMF最大的特色在於可直接將Flash內建物件,例如Object, Array,Date, XML,傳回伺服器端,並且在伺服器端自動進行解析成適當的物件,這就減輕了開發人員繁複工作,同時也更省了開發時間。由於AMF採用二進位制編碼,這種方式可以高度壓縮資料,因此非常適合用來傳遞大量的資料。資料量越大,Flash Remoting的傳輸效能就越高,遠遠超過Web Service。至於XML, LoadVars和loadVariables() ,它們使用純文字的傳輸方式,效能就更不能與Flash Remoting相提並論了。
注意:Flash Remoting需要瀏覽器支援Binary POST,Flash 播放器在Netscape 6.x.環境下執行Flash Remoting會不起作用(Flash Remoting呼叫沒有效果也不返回錯誤), Netscape 7已經糾正了這個bug 。對於早期Safari和Chimera版的蘋果機也有這個問題。
同樣是輕量級資料交換協議,同樣是通過呼叫遠端服務,同樣是基於標準的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。
文章轉載自網管之家:http://www.bitscn.com/network/protocol/201006/187837.html
資料:http://yunzhongxia.iteye.com/blog/663747
相關文章
- 網路通訊協議基礎(ISIS)——入門協議
- 網路基礎與協議入門——(2)TCP協議重點協議TCP
- 網路基礎與協議入門——(1)HTTP協議重點協議HTTP
- 給0基礎入門Linux運維新手的五個建議!Linux運維
- AE新手基礎入門教程50套從新手到高手
- Http協議入門HTTP協議
- HTTP 協議入門HTTP協議
- 詳解前端HTTP協議入門教程前端HTTP協議
- HTTP協議基礎HTTP協議
- web前端新手入門建議Web前端
- 新手入門之——Linux學習基礎(轉)Linux
- 網路協議入門協議
- internet 協議入門協議
- 協議類基礎——SPI協議
- javaweb基礎--HTTP協議JavaWebHTTP協議
- 新手入門前端,需要學習的基礎內容。前端
- WebSocket協議入門介紹Web協議
- HTTP協議_入門知識HTTP協議
- WEB基礎及HTTP協議WebHTTP協議
- Web基礎與HTTP協議WebHTTP協議
- ICMP協議結構全解(2)協議
- ICMP協議結構全解(1)協議
- 網路協議全瞭解(轉)協議
- webpack 基礎入門 - 瞭解webpackWeb
- Linux新手如何入門?給新手的四點建議!Linux
- 帶你瞭解動態路由協議OSPF基礎路由協議
- 戰鬥數值新手入門指北:MOBA基礎及裝備篇
- RPC協議實踐入門RPC協議
- TCP/IP網路協議基礎TCP協議
- 網路協議基礎知識協議
- 基礎篇-http協議《http 簡介、url詳解、request》HTTP協議
- HarmonyOS Next 網路加速入門:基礎功能全解析
- 【Python入門】新手學Python可行嗎?需要什麼基礎?Python
- RabbitMQ基礎入門MQ
- mongodb基礎入門MongoDB
- MySQL 基礎入門MySql
- ZooKeeper 基礎入門
- Elasticsearch 基礎入門Elasticsearch