免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Flex與ASP.NET通過Remotiong方式進行通信
         前兩天研究了一下Flex與.NET如何進行數(shù)據(jù)交互,并寫了一個文檔,后面敘述得還不是很詳細,還可以再研究深一點。本文是關(guān)于Flex與 ASP.NET通過Remoting方式進行通訊的內(nèi)容,過段時間有空還會把其它的通訊方式也描述一下,順便也會把Flex3與FluorineFx數(shù)據(jù) 類型轉(zhuǎn)換這方面的內(nèi)容講一下,都是通過在網(wǎng)上找資料和自己研究所總結(jié)出來的,應(yīng)該說講得還是很淺,畢竟學(xué)得還不深,繼續(xù)努力學(xué)習(xí)!

一、軟件:

1、Flex平臺:Adobe Flex Builder 3

2、.Net平臺:Visual Studio .Net 2008

3Remoting網(wǎng)關(guān):Fluorine

4、第三方組件:RemoteObjectAMF0

二、介紹:

1、Fluorine是一種開源的AMF(ActionScript Messaging Formatter)網(wǎng)關(guān),專門負責(zé)Flex3.0.Net交互時的數(shù)據(jù)類型轉(zhuǎn)換。Fluorine現(xiàn)支持ActionScript 2.0ActionScript 3.0,所以Fluorine也可作為Flash.Net交互時的AMF網(wǎng)關(guān)。

2、RemoteObjectAMF0組件是一種基于MXML的第三方組件,用于連接AMF網(wǎng)關(guān)。

3、好處:

1)交互時數(shù)據(jù)類型的自動轉(zhuǎn)換。因為Flex.NET的數(shù)據(jù)類型是不同的,例如FlexDate.NET中的DateTime類型。這樣就導(dǎo)致Flex.NET進行數(shù)據(jù)交互過程中必須進行數(shù)據(jù)類型的轉(zhuǎn)換。這種數(shù)據(jù)類型的轉(zhuǎn)換我們可以自己通過編寫相關(guān)的代碼來實現(xiàn),例如在Flex.NET中編寫一個實體類對其取得的數(shù)據(jù)進行類型轉(zhuǎn)換。而利用Fluorine這種網(wǎng)關(guān)來實現(xiàn)數(shù)據(jù)交互的話,它能夠?qū)崿F(xiàn).NETFlex中的數(shù)據(jù)類型的自動對應(yīng)轉(zhuǎn)換,這樣從一定程度上就減輕了我們對其數(shù)據(jù)類型處理的煩惱。

2)交互效率的提高:利用網(wǎng)關(guān)進行數(shù)據(jù)交互的話,它使得Flex能夠直接與.Net的數(shù)據(jù)處理類進行通信,而不必像再通過另一層中間數(shù)據(jù)交互層來實現(xiàn),從一定程度上它的交互效率會提高很多。

3)這是一個開源的網(wǎng)關(guān)。

三、基本配置

1、服務(wù)器端的搭建:

1)安裝FluorineFx,安裝完后在目錄中會有“Source”及“Samples”兩個文件夾,“Samples”文件夾中包含了一些在VS.Net環(huán)境中使用Fluorine的例子?!?/span>Source”文件夾中包含了有關(guān)Fluorine的源代碼。(代碼未具體去研究)

2)安裝好Fluorine之后,系統(tǒng)自動在VS.Net 2008新建網(wǎng)站中增加一個模板:FluorineFx ASP.NET Web Application。選擇該模板,創(chuàng)建一個.NET網(wǎng)站。

                                                                              3.1

a)打開Visual Studio 2008,分別選擇 文件 -> 新建 -> 網(wǎng)站
     b)
選擇已安裝模板“FluorineFx ASP.NET Web Application”。

c)運行項目,獲取.NET自帶服務(wù)器生成的端口,及網(wǎng)址,本項目中是 http://localhost:4166/FluorineTest/

3)利用VS的模板進行創(chuàng)建后,系統(tǒng)會自動加載一些引用,以及創(chuàng)建相關(guān)文件,并進行簡單配置。創(chuàng)建完后的項目結(jié)構(gòu)如圖所示:

3.2

Bin”中的Dll就是用Fluorine的源文件所生成的程序集,“Templates”是一些模板?!?/span>WEB-INF/flex”中包含了XML都是些配置文件?!?/span>Gateway.aspx”是個空頁面,其網(wǎng)頁地址就是Fluorine的網(wǎng)關(guān)地址。

2、客戶端的配置:

   客戶端的配置有三種方法,一種是通過向?qū)碓O(shè)置參數(shù),從而創(chuàng)建Flex;另一種是通過指定services-config.xml配置文件來設(shè)置;第三種是利用第三方組件RemoteObjectAMF0來連接,這種方式就不用再去配置services-config.xml。(推薦用第三種方法)

1)向?qū)гO(shè)置方法:

步驟1. 新建Flex工程。選擇ColdFusion Flash Remoting。如圖3.3

步驟2. 配置服務(wù)器。Deployed to J2EE server。如圖3.4
2services-config.xml配置文件來設(shè)置

修改工程的屬性,如圖3.5

修改“Additional compiler arguments”,設(shè)置services-config.xml配置文件的路徑,可以指向剛才建立的VS.Net項目中的“WEB-INF/flex”中的services-config.xml路徑。也可以將services-config.xml這個文件拷貝到調(diào)用文件的同級目錄中,然后如上面所設(shè)。

3)利用第三方組件RemoteObjectAMF0來連接,這種方法講到時再進行介紹。

四、通信過程

1、在VS.Net中編寫數(shù)據(jù)處理類HelloWorld.cs文件(可以新建一個FluorineFx ServiceLibrary類庫文件,將所有的數(shù)據(jù)處理類放到庫中上,然后在網(wǎng)站中調(diào)用此類庫,這里就不創(chuàng)建了)。HelloWorld.cs文件的代碼如下所示:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using FluorineFx;

namespace FluorineHelloWorld

{

    /// <summary>

    ///HelloWorld 的摘要說明

    /// </summary>

    [RemotingService()]

    public class HelloWorld

    {

        public HelloWorld()

        {

            //

            //TODO: 在此處添加構(gòu)造函數(shù)邏輯

            //

        }

        public string FromFluorine(string userName)

        {

            return "您好," + userName + "!此消息來自Fluorine Flash Remoting";

        }

    }

}

RemotingService屬性并不是必需的,不過使用該屬性,在配置了服務(wù)瀏覽器的Web應(yīng)用上可以通過Console.aspx查看遠程服務(wù)類文件,以及調(diào)用該服務(wù)的ActionScrip。例如可以在上頁類文件中設(shè)置斷點,然后將Console.aspx設(shè)置為起始頁,啟動項目。頁面會跳轉(zhuǎn)到Fluorine.aspx頁面,當(dāng)調(diào)用FromFluorine()函數(shù)時,就會中斷。下圖是對函數(shù)所進行的調(diào)用結(jié)果。

4.1

2、配置Flex工程中的services-config.xml。主要是設(shè)置這個endpoint屬性。讓其指向之前得到的網(wǎng)關(guān)地址,另外就是設(shè)置了“destination”。

<?xml version="1.0" encoding="UTF-8"?>

<services-config>

    <services>

        <service id="remoting-service"

                 class="flex.messaging.services.RemotingService"

                 messageTypes="flex.messaging.messages.RemotingMessage">

            <destination id="fluorine">

                 <channels>

                    <channel ref="my-amf"/>

                </channels>

                <properties>

                    <source>*</source>

                </properties>

            </destination>

        </service>

    </services>

    <channels>

        <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">

            <endpoint uri="http://localhost:4166/FluorineTest/Gateway.aspx"

            class="flex.messaging.endpoints.AMFEndpoint"/>

        </channel-definition>

    </channels>

</services-config>

3、如下創(chuàng)建一個MXML文件。

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

    <mx:Script>

        <![CDATA[

            import mx.rpc.events.FaultEvent;

            import mx.rpc.events.ResultEvent;

           import mx.controls.Alert;

        public function clickBtnHelloWorld():void{

             sampleRemoteObject.FromFluorine(this.txtHelloWorld.text);

        }

            public function RemoteResult(re:ResultEvent):void

            {

                var str:String = re.result as String;

                Alert.show(str);

            }   

            public function RemoteFault(re:FaultEvent):void

            {Alert.show("Message:" + re.fault.faultString,"出錯");}         

        ]]>

    </mx:Script>

    <!--這里Source 對應(yīng).NET類,前面是命名空間,后面是類名 source = 命名空間.類名-->

    <mx:RemoteObject

        id="sampleRemoteObject"

        destination="fluorine"

        source="FluorineHelloWorld.HelloWorld"

        showBusyCursor="true">

        <!--這里是.NET中的方法,name = 方法名 -->

        <mx:method name="FromFluorine" result="RemoteResult(event)" fault="RemoteFault(event)"/>       

    </mx:RemoteObject>

    <mx:Panel horizontalAlign="center" verticalAlign="middle" width="250" height="200" layout="absolute">

        <mx:TextInput x="35" y="10" id="txtHelloWorld" />

        <mx:Button x="82.5" y="40" label="調(diào)用" id="btnHelloWorld" click="clickBtnHelloWorld()"/>

    </mx:Panel>

</mx:Application>

這里創(chuàng)建了一個RemoteObject對象,并設(shè)置了其id屬性,“destination”指向services-config.xml中的“destination”的id,source對應(yīng)VS.Net類,前面FluorineHelloWorld是命名空間,后面HelloWorld是類名?!?/span>showBusyCursor”是指在交互時鼠標(biāo)的狀態(tài)是否為設(shè)置為繁忙。

RemoteObject中創(chuàng)建了一個method方法,“name”屬性跟所要調(diào)用的VS.Net類中的函數(shù)名相同,“result”設(shè)置返回結(jié)果后的處理事件,“fault”設(shè)置交互過程中出錯后的處理事件

4、運行Flex,結(jié)果如下:

4.2

4.3

五、使用RemoteObjectAMF0來連接fluorine網(wǎng)關(guān)

1、上面連接網(wǎng)關(guān)是利用了Flex自帶的RemoteObject組件來實現(xiàn),利用這個組件來實現(xiàn)的話,需要在創(chuàng)建項目時對項目進行配置,或者利用配置文檔進行配置,這些在上面已經(jīng)做了詳細的介紹?,F(xiàn)在介紹的是利用RemoteObjectAMF0組件來實現(xiàn)。這個組件是一種基于MXML的第三方組件,用于連接AMF網(wǎng)關(guān),同時它是一個開源的組件。

2、下載RemoteObjectAMF0后解壓,在“src”文件夾中就可以看到關(guān)于該組件的源代碼,它基本上是對flex中的RemoteObject組件進行的重寫。可以將“src”文件夾中的“com”文件夾全部拷貝到flex的工程中,也可以將其編譯成庫文件再引用到Flex工程中。

3、這時將“com”文件夾拷貝到了工程中。要使用該組件,默認情況下,要在MXML文件中的“Applications”標(biāo)簽中加入命名空間“xmlns:renaun="com.renaun.rpc.*"”。

4RomoteObjectAMF0組件的定義語法如下所示:

<renaun:RemoteObjectAMF0 endpoint="http://localhost:4166/FluorineTest/Gateway.aspx" id="sampleRemoteObject" source="FluorineHelloWorld.HelloWorld" showBusyCursor="true">

    <renaun:methods>

       <renaun:method name="FromFluorine" result="RemoteResult(event)" fault="RemoteFault(event)"/>

    </renaun:methods>

</renaun:RemoteObjectAMF0>

RemoteObjectAMF0組件的“endpoint”屬性指明AMF網(wǎng)關(guān)地址,“source”屬性指明類的名稱空間,<名稱空間:method>組件的name屬性指向類中的方法,必須與類中的定義相同,result事件處理返回的數(shù)據(jù)。

5RemoteObjectAMF0的調(diào)用方法跟上面講RemoteObject時差不多,比如都可以通過sampleRemoteObject.FromFluorine(this.txtHelloWorld.text);去調(diào)用.NET中的FromFluorine()方法。
 
六、復(fù)雜數(shù)據(jù)類型的通訊http://xingfustar.cnblogs.com/)
    
     Remoting支持傳送數(shù)組、List、HashTable、Dictionary等多種復(fù)雜數(shù)據(jù)類型,本文以數(shù)組,Dictionary,HashTable為例,講解復(fù)雜數(shù)據(jù)類型的通訊。

(一)數(shù)組(http://xingfustar.cnblogs.com/)

1、.NET服務(wù)器端程序(http://xingfustar.cnblogs.com/)

     假設(shè)我們要做段程序,來獲取所有的用戶姓名。修改上節(jié)中的代碼,增加一個GetUsers方法。代碼如下:
        public string[] GetArray()
         {
            
string[] array = new string[]{"張三","李四","王五"};

            
return array;
         }

2、Flex客戶端程序(http://xingfustar.cnblogs.com/)

     在 Design 模式下添加,添加一個 Text文本控件,id為txtUsers,txt屬性為空,添加一個 Button控件,id為btnGetArray,Label屬性為 GetArray
    
     在 Source 模式下, 修改 mx:RemoteObject 標(biāo)簽,添加 
    <mx:method name="GetArray" result="RemoteResult(event)" fault="RemoteFault(event)"/>
     修改腳本中 RemoteResult 方法,增加一個Case條件,代碼如下
            public function RemoteResult(re:ResultEvent):void
             {
                
switch(re.currentTarget.name)
                 {
                    
case "HelloWord":
                         var str:String
= re.result as String;
                        
this.txtHelloWord.text = str;
                        
break;
                    
case "SayHello":
                         str
= re.result as String;
                        
this.txtSayHello.text = str;
                        
break;
                    
case "GetArray":
                        
for(var i:int=0; i<re.result.length; i++)
                         {
                            
this.txtUsers.text += re.result[i].toString() + ", ";
                         }
                        
break;
                 }
             }
     在 mx:Button (GetArray 標(biāo)簽中添加屬性 click="sampleRemoteObject.GetArray()"

     運行Flex程序,在瀏覽器中查看效果 


(二)Dictionary(http://xingfustar.cnblogs.com/)

1、.NET服務(wù)器端程序(http://xingfustar.cnblogs.com/)

     接下來我們做個Dictionary的例子,假設(shè)上例中,我們不光要獲取用戶姓名,而且我們還要得到他對應(yīng)的年齡,我們使用Dictionary。修改代碼,添加如下方法:
        public Dictionary<String, Int32> GetDictionary()
         {
             Dictionary
<String, Int32> age = new Dictionary<string, int>();
             age.Add(
"張三", 23);
             age.Add(
"李四", 24);
             age.Add(
"王五", 22);
            
return age;
         }

2、Flex客戶端程序(http://xingfustar.cnblogs.com/)

     在 Design 模式下添加,添加六個 Text文本控件,屬性分別為 id = txtZhangSan,txt = ""; id = txtLiSi,txt = ""; id = txtWangWu,txt = ""; txt = "張三:"; txt = "李四:"; txt = "王五:"
     添加一個 Button控件,id為btnGetDictionary,Label屬性為 GetDictionary
    
     在 Source 模式下, 修改 mx:RemoteObject 標(biāo)簽,添加 
    <mx:method name="GetDictionary" result="RemoteResult(event)" fault="RemoteFault(event)"/>
     修改腳本中 RemoteResult 方法,增加一個Case條件,代碼如下
            public function RemoteResult(re:ResultEvent):void
             {
                
switch(re.currentTarget.name)
                 {
                    
case "HelloWord":
                         var str:String
= re.result as String;
                        
this.txtHelloWord.text = str;
                        
break;
                    
case "SayHello":
                         str
= re.result as String;
                        
this.txtSayHello.text = str;
                        
break;
                    
case "GetUsers":
                        
for(var i:int=0; i<re.result.length; i++)
                         {
                            
this.txtUsers.text += re.result[i].toString() + ", ";
                         }
                        
break;
                    
case "GetDictionary":
                        
this.txtZhangSan.text = re.result["張三"];
                        
this.txtLiSi.text = re.result["李四"];
                        
this.txtWangWu.text = re.result["王五"];
                        
break;
                 }
             }
     在 mx:Button (GetDictionary) 標(biāo)簽中添加屬性 click="sampleRemoteObject.GetDictionary()"

     運行Flex程序,在瀏覽器中查看效果 



(三)HashTable(http://xingfustar.cnblogs.com/)

1、.NET服務(wù)器端程序
(http://xingfustar.cnblogs.com/)

     我們將上例中的Dictionary類型改成HashTable類型,代碼如下:
        public Hashtable GetHashTable()
         {
             Hashtable hash
= new Hashtable();
             hash.Add(
"張三", 23);
             hash.Add(
"李四", 24);
             hash.Add(
"王五", 22);
            
return hash;
         }

2、Flex客戶端程序(http://xingfustar.cnblogs.com/)

     借用下上例內(nèi)容,在 Design 模式下添加一個 Button控件,id為btnGetHashTable,Label屬性為 GetHashTable
    
     在 Source 模式下, 修改 mx:RemoteObject 標(biāo)簽,添加 
    <mx:method name="GetHashTable" result="RemoteResult(event)" fault="RemoteFault(event)"/>
     修改腳本中 RemoteResult 方法,只需在上例 case "GetDictionary": 下一行加上 case "GetHashTable": 即可。
                    case "GetDictionary":
                    
case "GetHashTable":
                        
this.txtZhangSan.text = re.result["張三"];
                        
this.txtLiSi.text = re.result["李四"];
                        
this.txtWangWu.text = re.result["王五"];
                        
break;
     在 mx:Button (GetHashTable) 標(biāo)簽中添加屬性 click="sampleRemoteObject.GetHashTable()"

完整代碼后附
 
七、自定義實體對象的傳遞http://xingfustar.cnblogs.com/)

     本節(jié)是Remoting通訊的最后一節(jié),主要講述自定義實體對象的傳遞,并簡單了解下Flex中類的聲明及DataGrid的使用方法。我們?nèi)苑謨蓚€部分來講。

1、.NET服務(wù)器端程序(http://xingfustar.cnblogs.com/)

     首先,我們編寫一個用戶實體類,包括姓名、性別及年齡,類代碼如下
/*----------------------------------------------------------------
* 版權(quán):
http://XingFuStar.cnblogs.com

*
* 文件名: User.cs
* 文件功能描述: User實體類
*
* 作者:XingFuStar
* 日期:2007年12月11日
*
* 當(dāng)前版本:V1.0.0
*
* 修改日期:
* 修改內(nèi)容:
*---------------------------------------------------------------
*/

using System;

namespace
RemotingSample
{
    
public class
User
     {
        
private string
name;

        
public string
Name
         {
            
get { return
name; }
            
set { name =
value; }
         }

        
private int
age;

        
public int
Age
         {
            
get { return
age; }
            
set { age =
value; }
         }

        
private string
sex;

        
public string
Sex
         {
            
get { return
sex; }
            
set { sex =
value; }
         }

        
public
User()
         {

         }
     }
}

     在我們前兩節(jié)編寫的RemotingSample類中添加 GetUsers 方法,代碼如下:

        public List<User> GetUsers()
         {
             List
<User> users = new List<User>
();

             User user
= new
User();
             user.Name
= "張三"
;
             user.Age
= 23
;
             user.Sex
= ""
;
             users.Add(user);

             user
= new
User();
             user.Name
= "李四"
;
             user.Age
= 24
;
             user.Sex
= ""
;
             users.Add(user);

             user
= new
User();
             user.Name
= "王五"
;
             user.Age
= 22
;
             user.Sex
= ""
;
             users.Add(user);

            
return
users;
         }

     接下來,我們開編寫Flex端,重點在Flex這里

2、Flex客戶端程序(http://xingfustar.cnblogs.com/)

    在Flex工程中,添加一個 ActionScript Class, 我們先在工程中添加一個 名為Module的文件夾 。接下來,右鍵點擊這個文件夾,在其中添加一個 ActionScript Class, 類名為“User”(并不一定要與.NET中的類相同,這里想同是便于理解和管理)
    在新建的類中添加如下代碼:

/*----------------------------------------------------------------
 * 版權(quán):
http://XingFuStar.cnblogs.com
 * 
 * 文件名: User.as
 * 文件功能描述: 用戶實體類
 * 
 * 作者:XingFuStar
 * 日期:2007年12月14日
 *---------------------------------------------------------------
*/
 
package Module
{
    
//這名話是必須的,用這句話來綁定.Net中的類
    [RemoteClass(alias="RemotingSample.User")]
    
public class User
    {
        
public function User()
        {
            
//請不要刪除以下信息
            
//版權(quán):http://XingFuStar.cnblogs.com
        }
        
        
private var name:String;
        
        
public function get Name():String
        {
            
return name;
        }
        
        
public function set Name(setValue:String):void
        {
            name 
= setValue;
        }
        
        
private var age:int;
        
        
public function get Age():int
        {
            
return age;
        }
        
        
public function set Age(setValue:int):void
        {
            age 
= setValue;
        }
        
        
private var sex:String;
        
        
public function get Sex():String
        {
            
return sex;
        }
        
        
public function set Sex(setValue:String):void
        {
            sex 
= setValue;
        }
    }
}

    注意這個類的第一行,有這樣一句話 [RemoteClass(alias="RemotingSample.User")] 這是連接.NET類的關(guān)鍵所在, 添加這句話后,這個類,才與.NET中創(chuàng)建的User類建立了聯(lián)系。

    [RemoteClass(alias="命名空間.類名")] 

    在 Design 模式下添加,添加一個 DataGrid,id為dgUser,新添加的DataGrid自動生成了三個DataGridColumn,修改其headerText,和dataFieldheaderText為DataGrid每行的標(biāo)題,dataField為綁定的實體對象的屬性。
    DataGrid設(shè)計如下代碼所示:

    <mx:DataGrid x="38" y="318" height="116" width="312" id="dgUser">
        
<mx:columns>
            
<mx:DataGridColumn headerText="姓名" dataField="Name"/>
            
<mx:DataGridColumn headerText="性別" dataField="Sex"/>
            
<mx:DataGridColumn headerText="年齡" dataField="Age"/>
        
</mx:columns>
    
</mx:DataGrid>

    繼續(xù)添加一個Button控件,id為btnGetUsers,Label屬性為 GetUsers

    在 Source 模式下, 修改 mx:RemoteObject 標(biāo)簽,添加 
    <mx:method name="GetUsers" result="RemoteResult(event)" fault="RemoteFault(event)"/> 
    修改腳本中 RemoteResult 方法,代碼如下

            public function RemoteResult(re:ResultEvent):void
            { 
                
switch(re.currentTarget.name)
                {
                    
case "HelloWord":
                        var str:String 
= re.result as String;
                        
this.txtHelloWord.text = str;
                        
break;
                    
case "SayHello":
                        str 
= re.result as String;
                        
this.txtSayHello.text = str;
                        
break;
                    
case "GetArray":
                        
for(var i:int=0; i<re.result.length; i++)
                        {
                            
this.txtUsers.text += re.result[i].toString() + "";
                        }
                        
break;
                    
case "GetDictionary":
                    
case "GetHashTable":
                        
this.txtZhangSan.text = re.result["張三"];
                        
this.txtLiSi.text = re.result["李四"];
                        
this.txtWangWu.text = re.result["王五"];
                        
break;
                    
case "GetUsers":    //新加部分
                        var userList:ArrayCollection = new ArrayCollection();
                        
                        
for(var j:int=0; j<re.result.length; j++)
                        {
                            var user:User 
= re.result[j] as User;
                            userList.addItem(user);
                        }
                        
                        
//用來綁定DataGrid
                        this.dgUser.dataProvider = userList;
                        
break;
                }
            }

    在 mx:Button (GetUsers 標(biāo)簽中添加屬性 click="sampleRemoteObject.GetUsers()"

    運行Flex程序,在瀏覽器中查看效果 

附件:源碼
1、.Net端

/*----------------------------------------------------------------
 * 版權(quán):
http://XingFuStar.cnblogs.com
 * 
 * 文件名: RemotingSample
 * 文件功能描述: .NET與Flex通訊DEMO
 * 
 * 作者:XingFuStar
 * 日期:2007年12月11日
 * 
 * 當(dāng)前版本:V1.0.0
 * 
 * 修改日期:2007年12月14日
 * 修改內(nèi)容:增加獲取數(shù)組,Dictionary,HashTable等方法例程
 *---------------------------------------------------------------
*/

using System;
using com.TheSilentGroup.Fluorine;
using System.Collections.Generic;
using System.Collections;

namespace RemotingSample
{
    [RemotingService(
"Fluorine sample service")]
    
public class RemotingSample
    {
        
public RemotingSample()
        {
            
//請不要刪除以下信息
            
//版權(quán):http://XingFuStar.cnblogs.com
        }

        
public string HelloWord()
        {
            
return "Hello Word!";
        }

        
public string SayHello(string name)
        {
            
return "Hello " + name + "!";
        }

        
public string[] GetArray()
        {
            
string[] array = new string[]{"張三","李四","王五"};

            
return array;
        }

        
public Dictionary<String, Int32> GetDictionary()
        {
            Dictionary
<String, Int32> dictionary = new Dictionary<stringint>();
            dictionary.Add(
"張三"23);
            dictionary.Add(
"李四"24);
            dictionary.Add(
"王五"22);
            
return dictionary;
        }

        
public Hashtable GetHashTable()
        {
            Hashtable hash 
= new Hashtable();
            hash.Add(
"張三"23);
            hash.Add(
"李四"24);
            hash.Add(
"王五"22);
            
return hash;
        }

        
public List<User> GetUsers()
        {
            List
<User> users = new List<User>();

            User user 
= new User();
            user.Name 
= "張三";
            user.Age 
= 23;
            user.Sex 
= "";
            users.Add(user);

            user 
= new User();
            user.Name 
= "李四";
            user.Age 
= 24;
            user.Sex 
= "";
            users.Add(user);

            user 
= new User();
            user.Name 
= "王五";
            user.Age 
= 22;
            user.Sex 
= "";
            users.Add(user);

            
return users;
        }
    }
}


2、Flex端

<?xml version="1.0" encoding="utf-8"?>
<!--
* 版權(quán):http://XingFuStar.cnblogs.com
*
* 作者:XingFuStar
* 日期:2007年12月11日
*
* 修改日期:2007年12月14日
* 修改內(nèi)容:增加獲取數(shù)組,Dictionary,HashTable等方法例程。
-->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

    
<mx:Script>
        
<![CDATA[
            import mx.collections.ArrayCollection;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            import mx.controls.Alert;
            
            import Module.User;
        
            public function RemoteResult(re:ResultEvent):void
            { 
                switch(re.currentTarget.name)
                {
                    case "HelloWord":
                        var str:String = re.result as String;
                        this.txtHelloWord.text = str;
                        break;
                    case "SayHello":
                        str = re.result as String;
                        this.txtSayHello.text = str;
                        break;
                    case "GetArray":
                        for(var i:int=0; i<re.result.length; i++)
                        {
                            this.txtUsers.text += re.result[i].toString() + ", ";
                        }
                        break;
                    case "GetDictionary":
                    case "GetHashTable":
                        this.txtZhangSan.text = re.result["張三"];
                        this.txtLiSi.text = re.result["李四"];
                        this.txtWangWu.text = re.result["王五"];
                        break;
                    case "GetUsers":    //新加部分
                        var userList:ArrayCollection = new ArrayCollection();
                        
                        for(var j:int=0; j<re.result.length; j++)
                        {
                            var user:User = re.result[j] as User;
                            userList.addItem(user);
                        }
                        
                        //用來綁定DataGrid
                        this.dgUser.dataProvider = userList;
                        break;
                }
            }
        
            public function RemoteFault(re:FaultEvent):void
            {
                Alert.show("Message:" + re.fault.faultString,"出錯");
            }           
        
]]>
    
</mx:Script>

    
<!--這里Source 對應(yīng).NET類,前面是命名空間,后面是類名 source = 命名空間.類名-->
    
<mx:RemoteObject 
        
id="sampleRemoteObject"
        destination
="fluorine"
        source
="RemotingSample.RemotingSample"
        showBusyCursor
="true">
        
<!--這里是.NET中的方法,name = 方法名 -->
        
<mx:method name="HelloWord" result="RemoteResult(event)" fault="RemoteFault(event)"/>    
        
<mx:method name="SayHello" result="RemoteResult(event)" fault="RemoteFault(event)"/>            
        
<mx:method name="GetArray" result="RemoteResult(event)" fault="RemoteFault(event)"/>
        
<mx:method name="GetDictionary" result="RemoteResult(event)" fault="RemoteFault(event)"/>    
        
<mx:method name="GetHashTable" result="RemoteResult(event)" fault="RemoteFault(event)"/>        
        
<mx:method name="GetUsers" result="RemoteResult(event)" fault="RemoteFault(event)"/>        
    
</mx:RemoteObject>

    
<mx:Text x="38" y="25" id="txtHelloWord"/>
    
<mx:Button x="38" y="51" label="HelloWord" id="btnHelloWord0" click="sampleRemoteObject.HelloWord()"/>
    
    
<mx:Text x="38" y="105" id="txtSayHello"/>
    
<mx:Label x="38" y="131" text="name:"/>
    
<mx:TextInput x="88" y="129" id="txtName"/>
    
<mx:Button x="256" y="129" label="SayHello" id="btnSayHello" click="sampleRemoteObject.SayHello(this.txtName.text)"/>
    
    
<mx:Text x="38" y="181" id="txtUsers"/>
    
<mx:Button x="38" y="207" label="GetArray" id="btnGetArray" click="sampleRemoteObject.GetArray()"/>
    
    
<mx:Label x="38" y="262" text="張三:"/>
    
<mx:Text x="76" y="262" id="txtZhangSan"/>
    
<mx:Label x="129" y="262" text="李四:"/>
    
<mx:Text x="167" y="262" id="txtLiSi"/>
    
<mx:Label x="218" y="262" text="王五:"/>
    
<mx:Text x="256" y="262" id="txtWangWu"/>
    
<mx:Button x="38" y="288" label="GetDictionary" id="btnGetDictionary" click="sampleRemoteObject.GetDictionary()"/>
    
<mx:Button x="157" y="288" label="GetHashTable" id="btnGetHashTable" click="sampleRemoteObject.GetHashTable()"/>

    
<mx:DataGrid x="38" y="318" height="116" width="312" id="dgUser">
        
<mx:columns>
            
<mx:DataGridColumn headerText="姓名" dataField="Name"/>
            
<mx:DataGridColumn headerText="性別" dataField="Sex"/>
            
<mx:DataGridColumn headerText="年齡" dataField="Age"/>
        
</mx:columns>
    
</mx:DataGrid>
    
<mx:Button x="38" y="453" label="GetUsers" id="btnGetUsers" click="sampleRemoteObject.GetUsers()"/>
</mx:Application>


至此,F(xiàn)lex 與 Asp.Net 通過 Remoting 方式進行通訊 的全部文章都已完成,前后經(jīng)歷了一個星期的時間,有很多地方寫的還不完善,希望看過的朋友們批評指教!還是希望喜歡本文的朋友們,轉(zhuǎn)載請注明出處!

版權(quán)由http://xingfustar.cnblogs.com/所有,轉(zhuǎn)載請注明出處

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Flex 如何使用JAVA對象連接SQLServer數(shù)據(jù)庫
java與flex結(jié)合做的登陸(連接數(shù)據(jù)庫) - Flex - Flash - JavaE...
Portable RIAs Tutorial | James Ward - RIA Cowboy
Flex 3處理外部XML的兩種方式 伯樂谷 中華英才網(wǎng)
Flex特效匯總(2)
Flex 與 javascript 交互-wangcheng -JavaEye技術(shù)社區(qū)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服