Flex與Asp的通訊

2021-08-27 01:17:28 字數 3830 閱讀 4948

flex與asp的通訊

2023年11月09日

前兩天研究了一下flex與.net如何進行資料互動,並寫了乙個文件,後面敘述得還不是很詳細,還可以再研究深一點。本文是關於flex與asp.net通過remoting方式進行通訊的內容,過段時間有空還會把其它的通訊方式也描述一下,順便也會把flex3與fluorinefx資料型別轉換這方面的內容講一下,都是通過在網上找資料和自己研究所總結出來的,應該說講得還是很淺,畢竟學得還不深,繼續努力學習!

一、軟體:

1、flex平台:adobe flex builder 3

2、.net平台:visual studio .net 2008

3、remoting閘道器:fluorine

4、第三方元件:remoteobjectamf0

二、介紹:

1、fluorine是一種開源的amf(actionscript messaging formatter)閘道器,專門負責flex3.0與.net互動時的資料型別轉換。fluorine現支援actionscript 2.0和actionscript 3.0,所以fluorine也可作為flash與.net互動時的amf閘道器。

2、remoteobjectamf0元件是一種基於mxml的第三方元件,用於連線amf閘道器。

3、好處:

(1)互動時資料型別的自動轉換。因為flex與.net的資料型別是不同的,例如flex的date與.net中的datetime型別。這樣就導致flex與.net進行資料互動過程中必須進行資料型別的轉換。這種資料型別的轉換我們可以自己通過編寫相關的**來實現,例如在flex及.net中編寫乙個實體類對其取得的資料進行型別轉換。而利用fluorine這種閘道器來實現資料互動的話,它能夠實現.net與flex中的資料型別的自動對應轉換,這樣從一定程度上就減輕了我們對其資料型別處理的煩惱。

(2)互動效率的提高:利用閘道器進行資料互動的話,它使得flex能夠直接與.net的資料處理類進行通訊,而不必像再通過另一層中間資料互動層來實現,從一定程度上它的互動效率會提高很多。

(3)這是乙個開源的閘道器。

三、基本配置

1、伺服器端的搭建:

(1)安裝fluorinefx,安裝完後在目錄中會有「source」及「samples」兩個資料夾,「samples」資料夾中包含了一些在vs.net環境中使用fluorine的例子。「source」資料夾中包含了有關fluorine的源**。(**未具體去研究)

圖3.1

a)開啟visual studio 2008,分別選擇檔案->新建->**

c)執行專案,獲取.net自帶伺服器生成的埠,及**,本專案中是http://localhost:4166/fluorinetest/

圖3.2

「bin」中的dll就是用fluorine的原始檔所生成的程式集,「templates」是一些模板。「web-inf/flex」中包含了xml都是些配置檔案。「gateway.aspx」是個空頁面,其網頁位址就是fluorine的閘道器位址。

2、客戶端的配置:

客戶端的配置有三種方法,一種是通過嚮導來設定引數,從而建立flex;另一種是通過指定services-config.xml配置檔案來設定;第三種是利用第三方元件remoteobjectamf0來連線,這種方式就不用再去配置services-config.xml。(推薦用第三種方法)

(1)嚮導設定方法:

步驟1.新建flex工程。選擇coldfusion flash remoting。如圖3.3:

步驟2.配置伺服器。deployed to j2ee server。如圖3.4:

(2)services-config.xml配置檔案來設定

修改工程的屬性,如圖3.5:

修改「additional compiler arguments」,設定services-config.xml配置檔案的路徑,可以指向剛才建立的vs.net專案中的「web-inf/flex」中的services-config.xml路徑。也可以將services-config.xml這個檔案拷貝到呼叫檔案的同級目錄中,然後如上面所設。

(3)利用第三方元件remoteobjectamf0來連線,這種方法講到時再進行介紹。

四、通訊過程

1、在vs.net中編寫資料處理類helloworld.cs檔案(可以新建乙個fluorinefx servicelibrary類庫檔案,將所有的資料處理類放到庫中上,然後在**中呼叫此類庫,這裡就不建立了)。helloworld.cs檔案的**如下所示:

usingsystem;

usingsystem.data;

usingsystem.configuration;

usingsystem.web;

usingsystem.web.security;

usingsystem.web.ui;

usingsystem.web.ui.htmlcontrols;

usingsystem.web.ui.webcontrols;

usingsystem.web.ui.webcontrols.webparts;

usingfluorinefx;

namespacefluorinehelloworld

publicstring fromfluorine(string username) }

} remotingservice屬性並不是必需的,不過使用該屬性,在配置了服務瀏覽器的web應用上可以通過console.aspx檢視遠端服務類檔案,以及呼叫該服務的actionscrip。例如可以在上頁類檔案中設定斷點,然後將console.aspx設定為起始頁,啟動專案。頁面會跳轉到fluorine.aspx頁面,當呼叫fromfluorine()函式時,就會中斷。下圖是對函式所進行的呼叫結果。

圖4.1

2、配置flex工程中的services-config.xml。主要是設定這個endpoint屬性。讓其指向之前得到的閘道器位址,另外就是設定了「destination」。

* 3、如下建立乙個mxml檔案。

這裡建立了乙個remoteobject物件,並設定了其id屬性,「destination」指向services-config.xml中的「destination」的id,source對應vs.net類,前面fluorinehelloworld是命名空間,後面helloworld是類名。「showbusycursor」是指在互動時滑鼠的狀態是否為設定為繁忙。

remoteobject中建立了乙個method方法,「name」屬性跟所要呼叫的vs.net類中的函式名相同,「result」設定返回結果後的處理事件,「fault」設定互動過程中出錯後的處理事件。

4、執行flex,結果如下:

圖4.2

圖4.3

五、使用remoteobjectamf0來連線fluorine閘道器

1、上面連線閘道器是利用了flex自帶的remoteobject元件來實現,利用這個元件來實現的話,需要在建立專案時對專案進行配置,或者利用配置文件進行配置,這些在上面已經做了詳細的介紹。現在介紹的是利用remoteobjectamf0元件來實現。這個元件是一種基於mxml的第三方元件,用於連線amf閘道器,同時它是乙個開源的元件。

4、romoteobjectamf0元件的定義語法如下所示:

remoteobjectamf0元件的「endpoint」屬性指明amf閘道器位址,「source」屬性指明類的命名空間,元件的name屬性指向類中的方法,必須與類中的定義相同,result事件處理返回的資料。

5、remoteobjectamf0的呼叫方法跟上面講remoteobject時差不多,比如都可以通過sampleremoteobject.fromfluorine(this.txthelloworld.text);去呼叫.net中的fromfluorine()方法。

Flex與Webservices的通訊

引用 這一段時間沒事弄了下flex,以下是flex與webservices與簡單通訊 flex中有個的標籤能夠負責flex與webservices之間互動 引數名1 值1 引數名2 值2 元件表示webservice的乙個方法,屬性name值必須與webservice中的定義名稱相同 標籤下傳遞引數...

Flex與javat的通訊

flex三種通訊方式 表1 1 通訊方式 通訊協議 互動資料格式 常用的http 協議 xml webservice soap協議 xml remoteobject flex 自定義的高效二進位制 資料通訊協議 amf 任意 可以是數字,字串,物件,等等 這三種通訊方式的比較如下 表1 2 通訊方式...

Flex與Socket通訊時的

昨天開始玩flex,做socket的helloworld時,發現服務端老是提出,連線不了,資料也傳送不了。這是個安全沙箱問題,可網上千篇一律的解決方案根本解決不了問題。剛剛在從度娘那找到一方法終於解決了。flex與c socket通訊服務端收到的簡單解決辦法 開啟資料夾 c windows syst...