要认识flash remoting,就必须先知道amf(actionscript message format)。
AMF is the
Action Message Format.
AMF
is a proprietary data format created by Macromedia (now Adobe) and used
by different mediums: Flash Remoting, ByteArray, IExternalizable,
NetConnection, NetStream, LocalConnection, Shared Objects and more.(引用自
osflash.org)
ActionScript Messaging Format (AMF) is a binary protocol meant to allow a Flash application,
sitting on the user's browser, to communicate with the backend web server. AMF enables developers
to build powerful flash-based applications driven by databases and rich business layers.
(引用自
amfnet.openmymind.net)
其实,可以简单地理解amf就是对flash的action script脚本中定义的数据类型(包括布尔,数字,数组,类等等)的二进制的格式约定(可能说的有些偏差,基于现在的水品,先这样理解吧:-)。因为二进制的传输是高效的,无歧义的,可以高压缩的,这可能是macromedia(现adobe)采纳的原因吧(Maybe:-)。
下面的信息来自(
ria.richtechmedia.com/category/%e9%8f%88%e7%b5%90/tutorials/page/2/)
Flash remoting是一種連接flash client 與 server端的技術,它的功用就像是 web service, xml, loadVars一般,可以在兩者之間交換資料,達到動態置換內容的目地。
Flash remoting特別的地方在於它採用macromedia獨家的AMF(Action Message Format),這是一種
binary format的資料型態,透過 AMF over
HTTP的方式將flash端資料編碼後傳回server,server端的remoting
adaptor接收到資料後則會解碼回正確的native物件,交給正確的程式處理。
AMF除了用於Flash remoting外,也廣泛的用於 Local Connection 與 Flash communication
server,它最大的特色在於可直接將flash native object,例如Object, Array, Date,
XML,傳回server端,並且在server端自動進行轉譯成適當的物件,例如flash 的Array傳回PHP時就會自動轉換為
Associative Array;這個特色對開發者最大的好處在於不需要再人工處理serialization 與
deserialization的繁複工作,不但精確度更高,同時開發也更省時間。
由於AMF是binary
format並且編碼時經過高度壓縮,因此非常適合用來傳遞大量的資料,根據flashorb網站的測試(主要針對web service與flash
remoting),當資料量越大時,flash remoting的傳輸效能就越高,遠遠超過web
service的表現,因此同樣的道理也可得知xml, loadVars, loadVariables 等使用plaine text
format的傳輸方式自然也無可比擬。
至於在server端,目前macromedia官方支援的平台有三種,分別是 Java
Coldfusion(但實際上Coldfusion應該只算是java的subset,它是一種 scripting tag
library)與.NET,但由於AMF格式已被玩家反組譯成功,因此很快的就在Open
Source圈出現各種「民間版」的remoting替代方案,其中比較有名的是:
-AMFPHP: 這是php版的remoting
-OPENAMF: java版的remoting
-Flap: Perl 與Python版的remoting
-FlashORB: 商業版的remoting替代方案,目前支援java與.net
另外,我补充一些:
amf.net:.net版的remoting
fluorine:.net版的remoting