Flex与.NET互操作(八):使用FluorineFx网关实现远程访问
關(guān)于遠(yuǎn)程訪問(wèn)在本系列文章中陸續(xù)的寫了不少示例了,本文沒有準(zhǔn)備深入的去探討,為了鞏固FluorineFx網(wǎng)關(guān)的學(xué)習(xí)和使用。于此,本文將使用FluorineFx網(wǎng)關(guān)來(lái)提供數(shù)據(jù)服務(wù)等多項(xiàng)功能來(lái)介紹通過(guò)FluorineFx實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)的相關(guān)知識(shí)點(diǎn)。
?????FluorineFx提供的遠(yuǎn)程訪問(wèn)包括有很多方面的知道點(diǎn),本文只介紹其中的三個(gè)知識(shí)點(diǎn):訪問(wèn)遠(yuǎn)程對(duì)象返回對(duì)象,返回DataTable,返回DataSet對(duì)象.FluorineFx安裝包里自帶有相關(guān)的示例程序,要學(xué)習(xí)更多可直接參考這些示例程序.
?????在實(shí)現(xiàn)訪問(wèn)前我們同樣來(lái)做一些準(zhǔn)備工作,建立好遠(yuǎn)程對(duì)象,如下:
1?namespace?Fluorine.ServiceLibrary?2?{?3?????public?class?Book?4?????{?5?????????public?int?Id?{?get;?set;?}?6?????????public?string?Name?{?get;?set;?}?7?????????public?string?Author?{?get;?set;?}?8?????????public?double?Price?{?get;?set;?}?9?????}10?}?????下面是提供Flex訪問(wèn)的遠(yuǎn)程對(duì)象:
?1?namespace?Fluorine.ServiceLibrary?2?{?3?????[RemotingService]?4?????public?class?FluorineService?5?????{?6?????????///?<summary>?7?????????///?返回一個(gè)簡(jiǎn)單對(duì)象?8?????????///?</summary>?9?????????///?<returns></returns>10?????????public?Book?GetBook()11?????????{12?????????????return?new?Book13?????????????{14?????????????????Id?=?1,15?????????????????Name?=?"《三國(guó)演義》",16?????????????????Author?=?"羅貫中",17?????????????????Price?=?10018?????????????};19?????????}20?21?????????///?<summary>22?????????///?返回DataTable對(duì)象23?????????///?</summary>24?????????///?<returns></returns>25?????????[DataTableType("Fluorine.ServiceLibrary.Book")]26?????????public?DataTable?GetDataTable()27?????????{28?????????????DataTable?dt?=?new?DataTable("Book");29?????????????dt.Columns.Add("Id",?typeof(int));30?????????????dt.Columns.Add("Name",?typeof(string));31?????????????dt.Columns.Add("Author",?typeof(string));32?????????????dt.Columns.Add("Price",?typeof(double));33?34?????????????DataRow?dr?=?dt.NewRow();35?????????????dr["Id"]?=?1;36?????????????dr["Name"]?=?"《三國(guó)演義》";37?????????????dr["Author"]?=?"羅貫中";38?????????????dr["Price"]?=?52.30;39?????????????dt.Rows.Add(dr);40?41?????????????dr?=?dt.NewRow();42?????????????dr["Id"]?=?2;43?????????????dr["Name"]?=?"《西游記》";44?????????????dr["Author"]?=?"吳承恩";45?????????????dr["Price"]?=?39.91;46?????????????dt.Rows.Add(dr);47?48?????????????return?dt;49?????????}50?51?????????///?<summary>52?????????///?返回DataSet對(duì)象53?????????///?</summary>54?????????///?<returns></returns>55?????????[DataSetType("Fluorine.ServiceLibrary.Book")]56?????????public?DataSet?GetDataSet()57?????????{58?????????????DataSet?ds?=?new?DataSet("DS");59?????????????DataTable?dt?=?ds.Tables.Add("Books");60?????????????dt.Columns.Add("Id",?typeof(int));61?????????????dt.Columns.Add("Name",?typeof(string));62?????????????dt.Columns.Add("Author",?typeof(string));63?????????????dt.Columns.Add("Price",?typeof(double));64?65?????????????DataRow?dr?=?dt.NewRow();66?????????????dr["Id"]?=?1;67?????????????dr["Name"]?=?"《三國(guó)演義》";68?????????????dr["Author"]?=?"羅貫中";69?????????????dr["Price"]?=?52.30;70?????????????dt.Rows.Add(dr);71?72?????????????dr?=?dt.NewRow();73?????????????dr["Id"]?=?2;74?????????????dr["Name"]?=?"《西游記》";75?????????????dr["Author"]?=?"吳承恩";76?????????????dr["Price"]?=?39.91;77?????????????dt.Rows.Add(dr);78?79?????????????return?ds;80?????????}81?82?????}83?}?????上面代碼片段中分別提供了返回一個(gè)對(duì)象,DataTable,DataSet對(duì)象的方法。這里只需要記住兩個(gè)關(guān)鍵標(biāo)識(shí)就行,它門是:DataTableType和DataSetType.? 下面通過(guò)Flex的非可視化組件<mx:RemoteObject>來(lái)訪問(wèn)遠(yuǎn)程對(duì)象,OK,下面我們來(lái)看看具體怎么來(lái)調(diào)用。?
1?<mx:RemoteObject?id="ro"destination="fluorine">2?source="Fluorine.ServiceLibrary.FluorineService"3?fault="onFaultHandler(event)"4?<mx:method?name="GetBook"result="onGetBookHandler(event)"/>5?<mx:method?name="GetDataTable"result="onGetDataTableHandler(event)"/>6?<mx:method?name="GetDataSet"result="onGetDataSetHandler(event)"/>7?</mx:RemoteObject>一、返回對(duì)象示例
1?[Binable]2?privatevar?book:BookVO;3?4?privatefunction?onGetBookHandler(evt:ResultEvent):void5?{6?book=evt.result?asBookVO;7?}?????通過(guò)點(diǎn)擊按扭調(diào)用遠(yuǎn)程方法GetBook()完成方法的調(diào)用,直接可以將返回結(jié)果綁定到界面元素上。
1?<mx:Button?label="Book"click="ro.GetBook()"/>2?<mx:TextInput?width="302"text="{boo.Name+book.Author+book.Price}"/>二、返回DataTable對(duì)象
?????返回DataTable和DataSet,將結(jié)果綁定到DataGrid上顯示,先看看DataGrid的定義:
1?<mx:DataGrid?x="10"y="10"width="543"height="147"dataProvider="{books}">2?<mx:columns>3?<mx:DataGridColumn?headerText="編號(hào)"dataField="Id"/>4?<mx:DataGridColumn?headerText="書名"dataField="Name"/>5?<mx:DataGridColumn?headerText="作者"dataField="Author"/>6?<mx:DataGridColumn?headerText="價(jià)格"dataField="Price"/>7?</mx:columns>8?</mx:DataGrid>?????DataGrid的數(shù)據(jù)源為定義的一個(gè)ArrayCollection對(duì)象,詳細(xì)如下:
1?[Binable]2?private?var?books:ArrayCollection; 1?privatefunction?onGetDataTableHandler(evt:ResultEvent):void2?{3?books=evt.result?asArrayCollection;4?}?三、返回DataTable對(duì)象
1?privatefunction?onGetDataSetHandler(evt:ResultEvent):void2?{3?books=evt.result?asArrayCollection;4?}?????如上便完成了通過(guò)FluorineFx網(wǎng)關(guān)來(lái)實(shí)現(xiàn)遠(yuǎn)程訪問(wèn),下面是完整的Flex端代碼,實(shí)現(xiàn)很簡(jiǎn)單這里就不作詳細(xì)講解:
1?<?xml?version="1.0"?encoding="utf-8"?>2?<mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute">3?<mx:Script>4?<![CDATA[5?import?mx.controls.Alert;6?import?mx.rpc.events.ResultEvent;7?import?mx.rpc.events.FaultEvent;8?import?mx.collections.ArrayCollection;9?[Binable]10?private?var?books:ArrayCollection;11?[Binable]12?private?var?book:BookVO;13?14?private?function?onGetBookHandler(evt:ResultEvent):void15?{16?book=evt.result?as?BookVO;17?}18?19?private?function?onGetDataTableHandler(evt:ResultEvent):void20?{21?books=evt.result?as?ArrayCollection;22?}23?24?private?function?onGetDataSetHandler(evt:ResultEvent):void25?{26?books=evt.result?as?ArrayCollection;27?}28?29?private?function?onFaultHandler(evt:FaultEvent):void30?{31?Alert.show(evt.fault.faultDetail);32?}33?]]>34?</mx:Script>35?<mx:Panel?x="42"y="56"width="578"height="226"layout="absolute"fontSize="12">36?<mx:DataGrid?x="10"y="10"width="543"height="147"dataProvider="{books}">37?<mx:columns>38?<mx:DataGridColumn?headerText="編號(hào)"dataField="Id"/>39?<mx:DataGridColumn?headerText="書名"dataField="Name"/>40?<mx:DataGridColumn?headerText="作者"dataField="Author"/>41?<mx:DataGridColumn?headerText="價(jià)格"dataField="Price"/>42?</mx:columns>43?</mx:DataGrid>44?<mx:ControlBar>45?<mx:Button?label="DataTable"click="getDataTable()"/>46?<mx:Button?label="DataSet"click="getDataSet()"/>47?<mx:Button?label="Book"click="ro.GetBook()"/>48?<mx:TextInput?width="302"text="{boo.Name+book.Author+book.Price}"/>49?</mx:ControlBar>50?</mx:Panel>51?<mx:RemoteObject?id="ro"destination="fluorine">52?source="Fluorine.ServiceLibrary.FluorineService"53?fault="onFaultHandler(event)"54?<mx:method?name="GetBook"result="onGetBookHandler(event)"/>55?<mx:method?name="GetDataTable"result="onGetDataTableHandler(event)"/>56?<mx:method?name="GetDataSet"result="onGetDataSetHandler(event)"/>57?</mx:RemoteObject>58?</mx:Application>59?BookVO?如下:?public class BookVO?{?public function BookVo():void?{}?public var Id:Number;?public var Name:String;?public var Author:String;?public var Price:Number;?}
版權(quán)說(shuō)明? 本文屬原創(chuàng)文章,歡迎轉(zhuǎn)載,其版權(quán)歸作者和博客園共有。??
? 作??????者:Beniao
?文章出處:?http://www.cnblogs.com/
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Flex与.NET互操作(八):使用FluorineFx网关实现远程访问的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 信用卡等级划分额度
- 下一篇: Flex与.NET互操作(九):Fluo