AMF協(xié)議概念簡(jiǎn)述
AMF協(xié)議的最基本概念則是在XML的文本數(shù)據(jù)中了解到的。隨著對(duì)這個(gè)協(xié)議的學(xué)習(xí),發(fā)現(xiàn)它的使用已經(jīng)不再僅僅局限在一種方式中。在很多其他領(lǐng)域也有了它的展現(xiàn)?,F(xiàn)在我們就來(lái)認(rèn)識(shí)一下這個(gè)協(xié)議吧。
Action Message Format協(xié)議的簡(jiǎn)稱,AMF協(xié)議是Adobe公司自己的協(xié)議,主要用于數(shù)據(jù)交互和遠(yuǎn)程過(guò)程調(diào)用,在功能上相當(dāng)于WebService,但是AMF與WebService中的XML不同的是AMF是二進(jìn)制數(shù)據(jù),而XML是文本數(shù)據(jù),AMF的傳輸效率比XML高。AMF使用HTTP方式傳輸,目前主要是用于ActionScript中,即實(shí)現(xiàn)Flex和Server之間的通信。目前有二種版本--AMF0和AMF3
AMF協(xié)議***的特色在于可直接將Flash內(nèi)置對(duì)象,例如Object, Array, Date, XML,傳回服務(wù)器端,并且在服務(wù)器端自動(dòng)進(jìn)行解析成適當(dāng)?shù)膶?duì)象,這就減輕了開(kāi)發(fā)人員繁復(fù)工作,同時(shí)也更省了開(kāi)發(fā)時(shí)間。由于AMF采用二進(jìn)制編碼,這種方式可以高度壓縮數(shù)據(jù),因此非常適合用來(lái)傳遞大量的資料。數(shù)據(jù)量越大,Flash Remoting的傳輸效能就越高,遠(yuǎn)遠(yuǎn)超過(guò)Web Service。至于XML, LoadVars和loadVariables(),它們使用純文本的傳輸方式,效能就更不能與Flash Remoting相提并論了。
同樣是輕量級(jí)數(shù)據(jù)交換協(xié)議,同樣是通過(guò)調(diào)用遠(yuǎn)程服務(wù),同樣是基于標(biāo)準(zhǔn)的HTTP和HTTPS協(xié)議, Flash Remoting為什么選擇了使用AMF而放棄了SOAP與Flash 播放器通信呢有如下原因:
1 SOAP將數(shù)據(jù)處理成XML格式,相對(duì)于二進(jìn)制的AFM太冗長(zhǎng)了;
2 AMF能更有效序列化數(shù)據(jù);因?yàn)锳MF協(xié)議的初衷只是為了支持Flash ActionScript的數(shù)據(jù)類型,而SOAP卻致力于提供更廣泛的用途;
AMF從Flash MX時(shí)代的AMF0發(fā)展到現(xiàn)在的AMF3。AMF3用作Flash Playe 9的ActionScript 3.0的默認(rèn)序列化格式,而AMF0則用作舊版的ActionScript 1.0和2.0的序列化格式。 在網(wǎng)絡(luò)傳輸數(shù)據(jù)方面,AMF3比AMF0更有效率。AMF3能將int和uint對(duì)象作為整數(shù)(integer)傳輸,并且能序列化ActionScript 3.0才支持的數(shù)據(jù)類型, 比如ByteArray,XML和Iexternalizable。
AMF(Action Message Format)是一種binary format的資料型態(tài),透過(guò)AMF over HTTP的方式將flash端資料編碼后傳回server,server端的remoting adaptor接收到資料后則會(huì)譯碼回正確的native對(duì)象,交給正確的程序處理。 AMF協(xié)議除了用于Flash remoting外,也廣泛的用于 Local Connection 與 Flash communication server,它***的特色在于可直接將flash native object。
例如Object, Array, Date, XML,傳回server端,并且在server端自動(dòng)進(jìn)行轉(zhuǎn)譯成適當(dāng)?shù)膶?duì)象,例如flash 的Array傳回PHP時(shí)就會(huì)自動(dòng)轉(zhuǎn)換為 Associative Array;這個(gè)特色對(duì)開(kāi)發(fā)者***的好處在于不需要再人工處理serialization 與 deserialization的繁復(fù)工作,不但精確度更高,同時(shí)開(kāi)發(fā)也更省時(shí)間。 由于AMF協(xié)議是binary format并且編碼時(shí)經(jīng)過(guò)高度壓縮,因此非常適合用來(lái)傳遞大量的資料,根據(jù)flashorb網(wǎng)站的測(cè)試(主要針對(duì)web service與flash remoting),當(dāng)資料量越大時(shí),flash remoting的傳輸效能就越高,遠(yuǎn)遠(yuǎn)超過(guò)web service的表現(xiàn),因此同樣的道理也可得知xml, loadVars, loadVariables 等使用plaine text format的傳輸方式自然也無(wú)可比擬。