來自于:http://www.riameeting.com
在日常的RIA開發(fā)中,F(xiàn)lex或者基于純Actionscript3的RIA應(yīng)用非常普遍。 在客戶端與服務(wù)端的交互中,大家用的比較多的幾種方式是:純文本內(nèi)容,XML,JSON等。 不過,隨著Adobe將AMF協(xié)議開源,越來越多的人開始使用基于AMF協(xié)議的實(shí)現(xiàn)來與服務(wù)器交互數(shù)據(jù)。 而BlazeDS是Adobe發(fā)布的一個(gè)開源AMF協(xié)議服務(wù)器端Java實(shí)現(xiàn). 通過BlazeDS,你可以開發(fā)基于Flex,Actionscript3的客戶端應(yīng)用程序,并且使用AMF(Advanced Message Format)與服務(wù)器交互數(shù)據(jù)。本文是這個(gè)系列教程中的第一篇,目的是介紹AMF協(xié)議。
AMF協(xié)議是Adobe開發(fā)的一種消息交換協(xié)議,其優(yōu)點(diǎn)包括
- 更小的數(shù)據(jù)傳輸量
由于AMF協(xié)議采用了二進(jìn)制的編碼方式,省去了很多控制符。比如在XML中,我們傳輸一段數(shù)據(jù),需要把許多XML標(biāo)簽都傳輸過去,類似于<item></item>此類的控制符沒有太大的實(shí)際意義,但是很大程度上增加了數(shù)據(jù)傳輸量。
AMF協(xié)議則省去了大部分的可見控制符,采用二進(jìn)制編排方式,效率極高。另外,由于同時(shí)也對(duì)數(shù)據(jù)進(jìn)行了壓縮,因此同樣的數(shù)據(jù),可以極大節(jié)省帶寬。如果你的服務(wù)器每天的流量在1百萬以上的訪問,這些節(jié)省的流量則是想等客觀的
- 更安全的數(shù)據(jù)傳輸
在基于二進(jìn)制編碼的前提下,數(shù)據(jù)被編碼傳輸。雖然不能滿足加密數(shù)據(jù)的需要,但是,可以避免其他人直接查看數(shù)據(jù)內(nèi)容。
- 對(duì)程序員更友好的數(shù)據(jù)接口
AMF本質(zhì)上也是一種遠(yuǎn)程方法調(diào)用的支持協(xié)議,其可以將服務(wù)器端或者客戶端的對(duì)象序列化,當(dāng)數(shù)據(jù)被傳輸?shù)侥康亩藭r(shí),重新反序列化成目的端的內(nèi)存中的對(duì)象。
大家在進(jìn)行XML操作的時(shí)候,會(huì)花費(fèi)很多精力處理XML的編碼與讀取。比如在服務(wù)器,大家需要將數(shù)據(jù)從數(shù)據(jù)庫(kù)或者內(nèi)存中的某處取出,對(duì)其進(jìn)行一定的數(shù)據(jù)編碼,生產(chǎn)一個(gè)XML文檔。發(fā)送到客戶端,在客戶端,則需要將XML解析,將其中的數(shù)據(jù)還原到內(nèi)存中。 這個(gè)過程在使用AMF協(xié)議的時(shí)候,就被省略了。AMF協(xié)議可以很好的支持J2ee開發(fā)中的VO模式。
- 數(shù)據(jù)的傳輸穩(wěn)健性更高
這也許不是AMF協(xié)議自身的功能,而是要?dú)w功于Flash Player.由于我們使用AMF協(xié)議的時(shí)候,一般都是使用基于Flash客戶端。我們?cè)陂_發(fā)過程中測(cè)試傳送100萬條數(shù)據(jù)。如果使用瀏覽器的Javascript引擎接受,不管使用任何編碼協(xié)議,I.E瀏覽器幾乎是要崩潰的,Firefox則是運(yùn)行極為緩慢。而在使用AMF協(xié)議傳輸?shù)紽lash播放器中傳輸這些數(shù)據(jù),對(duì)于客戶端的影響則是要小很多的。最起碼程序還能正常響應(yīng)。
在開發(fā)Flex應(yīng)用程序的時(shí)候,根據(jù)后端服務(wù)器使用的不同情況,目前可以支持AMF的編程語(yǔ)言有
.Net,Java,PHP,Ruby on Rail,python,curl, ColdFusion 等
AMF服務(wù)端支持
.Net |
Java |
PHP |
Ruby on Rail |
Python |
Curl |
ColdFusion |
BlazeDS.net |
BlazeDS |
AMFPHP |
|
PyAMF |
Curl |
CodeFusion |
fluorine |
Granite data services |
Zend |
RubyAMF |
|
|
|
WEBORB |
WebORB |
WebORB
|
WEBORB |
|
|
WEBORB |
對(duì)于.net的Adobe官方實(shí)現(xiàn),目前我們暫時(shí)叫他BlazeDS.net,這個(gè)產(chǎn)品是我們從內(nèi)線獲得的消息,目前在研發(fā),但是不知道什么時(shí)候放出來,應(yīng)該不遠(yuǎn)了。
在下一篇教程中,我將向大家介紹BlazeDS中的一些基本概念,這有助于大家理解并且正確是用BlazeDS.