Flex和.NET協(xié)同開發(fā)利器FluorineFx Flex與.NET互操作
通過這些方式來完成與服務(wù)端的通信是非常方便和簡單的,但有他的缺點(diǎn)就是通信數(shù)據(jù)量較小,如要傳輸大量的數(shù)據(jù)或是實(shí)現(xiàn)不同對象的序列化傳輸,它們則滿足不了我們的需求,需要尋找另外一種通信協(xié)議,另一種高效的傳輸協(xié)議來代替SOAP協(xié)議傳輸?shù)姆桨?,那便是AMF(ActionScript Message Format)協(xié)議。
開源項(xiàng)目FluorineFx就是專門針對.NET平臺與Flex通信提供的AMF協(xié)議通信網(wǎng)關(guān),我們可以通過FluorineFx很方便的完成與.NET的通信。
FluorineFx官方提供了安裝包的下載和在線文檔,可以幫助我們有效的利用FluorineFx來開發(fā)。
FluroineFx官方網(wǎng)站:http://www.fluorinefx.com/
FluroineFx下載地址:http://www.fluorinefx.com/download.html
FluroineFx在線文檔:http://www.fluorinefx.com/docs/fluorine/index.html
OK,下面我們來看看使用FluroineFx通信的.NET和Flex配置。開發(fā)環(huán)境選擇如下:
.NET:Microsoft Visual Studio 2008 + .NET Framework 3.5
Flex:Adobe Flex Builder CS3 + Flex SDK 3.2
FluroineFx:FluorineFx v1.0.0.15 (點(diǎn)擊可下載)
一、.NET服務(wù)端的開發(fā)
通過Microsoft Visual Studio 2008 創(chuàng)建創(chuàng)建解決方案,并添加FluroineFx服務(wù)器庫,如下圖示:
FluorineFx服務(wù)庫添加成功后會發(fā)現(xiàn),項(xiàng)目模板會自動為我們創(chuàng)建一個(gè)Sample類和一個(gè)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 網(wǎng)站到解決方案,添加成功后網(wǎng)站會自動引用FluorineFx服務(wù)庫的dll。如下圖:
到這里我們可以簡單的測試FluorineFx的.NET服務(wù)端是否成功創(chuàng)建。通過在瀏覽器中查看FluroineFx網(wǎng)站中的Console.aspx或是將網(wǎng)站設(shè)置為啟動項(xiàng)目并設(shè)置Console.aspx為啟始頁運(yùn)行網(wǎng)站都可以,程序便會運(yùn)行到FluorineFx的控制臺,展開左邊項(xiàng)目的Services節(jié)點(diǎn)便會看到上面模板為我們創(chuàng)建的類和方法,點(diǎn)擊方法節(jié)點(diǎn)在右邊就可以進(jìn)行簡單的測試了,如下圖示:
OK,到這里.NET的服務(wù)器端就開發(fā)完成了,這里我們需要記住幾點(diǎn),在接下來的Flex開發(fā)中需要根據(jù)這些參數(shù)來進(jìn)行配置。
FluorineFx的.NET網(wǎng)站目錄:F:\Demo\FlexDotNet\Web
FluorineFx的.NET網(wǎng)站虛擬目錄:/Web
FluorineFx的.NET網(wǎng)站URL:http://localhost:2836/Web
接受Flex客戶端請求的URL:http://localhost:2836/Web/Gateway.aspx
有了上面這些東西配置Flex就簡單了,首先創(chuàng)建Flex項(xiàng)目,并將項(xiàng)目路徑指向前建立的FluorineFx網(wǎng)站的根路徑:
如上圖,將Application type設(shè)置為:Web application,Application Server type設(shè)置為:ASP.NET,然后“Next”。進(jìn)入下一個(gè)創(chuàng)建項(xiàng)目向?qū)Ы缑妫瑢erver設(shè)置為:"Use Internet Information Services (IIS)",Web Application root同樣指向FluorineFx網(wǎng)站的根路徑,Web Appliation URL則設(shè)置為上面我們獲取到的路徑便OK,詳細(xì)見下圖:
按照上面步驟配置好后通過點(diǎn)擊“Validate Configuration”進(jìn)行配置驗(yàn)證,如過驗(yàn)證結(jié)果是: The web application root and the URL are valid.則代表配置正確,可以直接點(diǎn)下一步只到完成項(xiàng)目的創(chuàng)建。
Flex項(xiàng)目創(chuàng)建完畢,下面在通過一些相應(yīng)的配置就可以通過FluorineFx和.NET通信了。開發(fā)項(xiàng)目屬性設(shè)置面板,設(shè)置其Flex Compiler為下圖所示(-services的配置也可以設(shè)置為相對路徑):
設(shè)置Flex Server為如下配置,可以點(diǎn)“Validate Location”驗(yàn)證設(shè)置的正確性:
最后設(shè)置輸出路徑就完成了Flex端的配置了:
到這里Flex端的配置就全部完成,下面我們通過FluorineFx庫模板為我們生成的Sample為例來測試下該環(huán)境是否可以通過,在Flex的mxml文件下通過<mx:RemoteObject>標(biāo)簽來訪問遠(yuǎn)程對象,詳細(xì)如下:
2 source="FlexDotNet.ServiceLibrary.Sample">
3 <mx:method name="Echo" result="onResult(event)">
4 </mx:method>
5 </mx:RemoteObject>
這里需要注意的是destination需要設(shè)置為與remoting-config.xml中的destination的id一致,source則配置為遠(yuǎn)程對象的全路徑(名稱空間+類),通過<mx:method>標(biāo)簽配置遠(yuǎn)程對象下的方法并設(shè)置其成功調(diào)用后的結(jié)果處理函數(shù),下面便可通過id去調(diào)用遠(yuǎn)程方法了。
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的代碼定義:


1 <?xml version="1.0" encoding="utf-8"?>
2 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
3 <mx:RemoteObject id="service" destination="fluorine"
4 source="FlexDotNet.ServiceLibrary.Sample">
5 <mx:method name="Echo" result="onResult(event)">
6 </mx:method>
7 </mx:RemoteObject>
8
9 <mx:Script>
10 <![CDATA[
11 import mx.rpc.events.ResultEvent;
12 internal function onClick():void
13 {
14 service.Echo(txtInput.text);
15 }
16
17 internal function onResult(evt:ResultEvent):void
18 {
19 txtResult.text = evt.result.toString();
20 }
21 ]]>
22 </mx:Script>
23
24 <mx:Panel x="53" y="52" width="250" height="200" layout="absolute" title="測試FluorineFx" fontSize="12">
25 <mx:TextInput x="35" y="21" id="txtInput"/>
26 <mx:Button x="35" y="63" label="確 定" fontWeight="normal" click="onClick()"/>
27 <mx:Label x="35" y="95" text="結(jié) 果:"/>
28 <mx:TextInput x="35" y="123" width="160" id="txtResult"/>
29 </mx:Panel>
30 </mx:Application>
31
本文示例截圖:
相關(guān)文章
Flex與.NET互操作 了解FluorineFx的環(huán)境配置(遠(yuǎn)程對象、網(wǎng)關(guān)、通道、目的地)
Flex中的遠(yuǎn)程對象訪問,也就是服務(wù)端提供一個(gè)遠(yuǎn)程服務(wù)對象(RemotingService Object),在Flex客戶端通過相應(yīng)的訪問技術(shù)去調(diào)用遠(yuǎn)程對象的過程。2009-06-06Flex 全屏組件 部分全屏的實(shí)現(xiàn)代碼
一般情況下,F(xiàn)lex全屏是指將整個(gè)舞臺全屏,而不是待定的組件全屏.網(wǎng)上的例子也一般是指這種情況的.2009-09-09FluorineFx.NET的認(rèn)證(Authentication )與授權(quán)(Authorization)Flex與.NE
FluorineFx.NET的認(rèn)證(Authentication )與授權(quán)(Authorization)和ASP.NET中的大同小異,核實(shí)用戶的身份既為認(rèn)證,授權(quán)則是確定一個(gè)用戶是否有某種執(zhí)行權(quán)限2009-06-06Flex tree組件數(shù)據(jù)源、圖標(biāo)等修改
在flex中Tree組件的使用。使用XML作為Tree組件的數(shù)據(jù)源。2009-05-05