基本上 Flex與後台 (Application server)交換資料的方式有下列四種:
(節錄自 d.CAT Blog)
-HttpService
-Web Service
-Remote Object
-FDS (Data Service, Messaging)
分別介紹如下:
1、HttpService
這是最簡單也最常見的資料交換方式,就是透過 Http get/post 來傳純文字資料,大部份 web application 都是這樣運作的。
這個方式的好處是非常普及,所有的後台系統一定都可以吃的下這種資料,但缺點則是 complex data type 要經過複雜的序列化與解序列化程序才能在 client/server間交換。
以 .NET 來說,任何一個 asp.net 的頁面都可以透過 get/post 與 flex client 交換資料。
2、WebService
WebService 也是很常見的選擇,好處是規則共通方便不同技術平台交換資料,缺點則同樣是某些複雜資料結構無法輕易的交換,在編碼與解碼的過程中往往會出現意外,例如 Date 的表現方式。
以 .NET 來說,使用 web service 應該是再方便不過的選擇,只要把 asmx 檔案準備好再從 flex client 呼叫即可。
3、Remote Object
這就是傳統的 Flash Remoting, 透過 AMF 以 binary 的方式來回交換資料,主要優點是體積小且支援 flash native object,例如 Array, Value Object 等都可直接傳送,在 server 端也會自動對應到正確的 type。
但由於 Flex 2 (或者應該說是 Flash Player 9 / AS3)使用的是新式的 AMF3 格式,而目前 Adobe 官方販售的 flash remoting for .net (與 open source 的 fluorine只支援舊版的 AMF0,因此沒辦法直接裝了就用。
edit: Fluorine 現在已支援 AMF3。
變通方法則是直接操作 flash.net.NetConnection 並指定使用 AMF0 與 server連線即可;Renaun 寫了一個小工具方便大家操作,可以下載直接使用。
附帶一提,這個小工具也同時適用於 AMFPHP/OpenAMF等各種 AMF0-only 的remoting gateway,所以如果你寫 Flex 2 又想透過 remoting 連接既有的各種 server remoting gateway, 抓這個就沒錯了。
4、FDS (Data Service, Messaging)
Flex Data Service 是 Flex 2 裡新出現的技術,主要目地是希望提供更自動的方法來讓 client 與 server 交換資料,它的核心實際上仍然是 AMF 與 RTMP (對,就是 Flash Media Server 用的那種),部份功能也與 FMS 重疊,但它著重在 Data Sharing 與 Exchange 這部份。
目前 FDS 只有 Java 的版本,也就是 server 端要用 java 寫,但 Adobe 宣稱將來會有 FDS for .NET 版。
不過好消息是,有一家叫 theMidnightCoders 的公司搶先推出了 FDS 相容版本,不但同時支援 AMF0 與 AMF3,更支援部份 FDS 的功能(主要是資料同步的部份,與server端的衝突處理與資料儲存)。
以 .NET 來說,付費的選擇中 weborb 算是目前最優的選擇,價錢只有官方版的一半,但功能更完整;而免錢的選擇則當非 Fluorine 莫屬。