通過WebService、HTTPService、URLLoader以及FielReference等組件或類來完成Flex與.NET服務端的通信是非常方便和簡單的,但有他的缺點就是通信數據量較小,如要傳輸大量的數據或是實現不同對象的序列化傳輸,它們則滿足不了我們的需求,需要尋找另外一種通信協議,另一種高效的傳輸協議來代替SOAP協議傳輸的方案,那便是AMF(ActionScript Message Format)協議。
開源項目FluorineFx就是專門針對.NET平臺與Flex通信提供的AMF協議通信網關,我們可以通過FluorineFx很方便的完成與.NET的通信。
FluorineFx官方提供了安裝包的下載和在線文檔,可以幫助我們有效的利用FluorineFx來開發。
FluroineFx官方網站:http://www.fluorinefx.com/
FluroineFx下載地址:http://www.fluorinefx.com/download.html
FluroineFx在線文檔:http://www.fluorinefx.com/docs/fluorine/index.html
OK,下面我們來看看使用FluroineFx通信的.NET和Flex配置。開發環境選擇如下:
.NET:Microsoft Visual Studio 2008 + .NET Framework 3.5
Flex:Adobe Flex Builder CS3 + Flex SDK 3.2
FluroineFx:FluorineFx v1.0.0.15 (點擊可下載)
一、.NET服務端的開發
通過Microsoft Visual Studio 2008 創建創建解決方案,並添加FluroineFx服務器庫,如下圖示:
FluorineFx服務庫添加成功後會發現,項目模板會自動爲我們創建一個Sample類和一個Echo方法,如下:
2 {
3 /// <summary>
4 /// Fluorine sample service.
5 /// </summary>
6 [RemotingService("Fluorine sample service")]
7 public class Sample
8 {
9 public Sample()
10 {
11 }
12
13 public string Echo(string text)
14 {
15 return "Gateway echo: " + text;
16 }
17 }
18 }
接着添加FluorineFx 網站到解決方案,添加成功後網站會自動引用FluorineFx服務庫的dll。如下圖:
到這裏我們可以簡單的測試FluorineFx的.NET服務端是否成功創建。通過在瀏覽器中查看FluroineFx網站中的Console.aspx或是將網站設置爲啓動項目並設置Console.aspx爲啓始頁運行網站都可以,程序便會運行到FluorineFx的控制檯,展開左邊項目的Services節點便會看到上面模板爲我們創建的類和方法,點擊方法節點在右邊就可以進行簡單的測試了,如下圖示:
OK,到這裏.NET的服務器端就開發完成了,這裏我們需要記住幾點,在接下來的Flex開發中需要根據這些參數來進行配置。
FluorineFx的.NET網站目錄:F:\Demo\FlexDotNet\Web
FluorineFx的.NET網站虛擬目錄:/Web
FluorineFx的.NET網站URL:http://localhost:2836/Web
接受Flex客戶端請求的URL:http://localhost:2836/Web/Gateway.aspx
有了上面這些東西配置Flex就簡單了,首先創建Flex項目,並將項目路徑指向前建立的FluorineFx網站的根路徑:
如上圖,將Application type設置爲:Web application,Application Server type設置爲:ASP.NET,然後“Next”。進入下一個創建項目嚮導界面,將Server設置爲:"Use Internet Information Services (IIS)",Web Application root同樣指向FluorineFx網站的根路徑,Web Appliation URL則設置爲上面我們獲取到的路徑便OK,詳細見下圖:
按照上面步驟配置好後通過點擊“Validate Configuration”進行配置驗證,如過驗證結果是: The web application root and the URL are valid.則代表配置正確,可以直接點下一步只到完成項目的創建。
Flex項目創建完畢,下面在通過一些相應的配置就可以通過FluorineFx和.NET通信了。開發項目屬性設置面板,設置其Flex Compiler爲下圖所示(-services的配置也可以設置爲相對路徑):
設置Flex Server爲如下配置,可以點“Validate Location”驗證設置的正確性:
最後設置輸出路徑就完成了Flex端的配置了:
到這裏Flex端的配置就全部完成,下面我們通過FluorineFx庫模板爲我們生成的Sample爲例來測試下該環境是否可以通過,在Flex的mxml文件下通過<mx:RemoteObject>標籤來訪問遠程對象,詳細如下:
2 source="FlexDotNet.ServiceLibrary.Sample">
3 <mx:method name="Echo" result="onResult(event)">
4 </mx:method>
5 </mx:RemoteObject>
這裏需要注意的是destination需要設置爲與remoting-config.xml中的destination的id一致,source則配置爲遠程對象的全路徑(名稱空間+類),通過<mx:method>標籤配置遠程對象下的方法並設置其成功調用後的結果處理函數,下面便可通過id去調用遠程方法了。
2 <![CDATA[
3 import mx.rpc.events.ResultEvent;
4 internal function onClick():void
5 {
6 service.Echo(txtInput.text);
7 }
8
9 internal function onResult(evt:ResultEvent):void
10 {
11 txtResult.text = evt.result.toString();
12 }
13 ]]>
14 </mx:Script>
下面是完整的Flex客戶端mxml的代碼定義:
本文示例截圖:
原文出處:http://www.cnblogs.com/beniao/archive/2009/01/19/1375086.html