Flex與.NET互操作:基于WebService的數(shù)據(jù)訪問_.Net教程
推薦:淺談在.NET應(yīng)用程序中進(jìn)行Erlang風(fēng)格的并行編程Erlang能夠用來編寫高度可伸縮的并行應(yīng)用程序,其中經(jīng)常會(huì)出現(xiàn)數(shù)以百萬計(jì)的輕量級(jí)組件,這種類似于線程的組件被稱之為actor。不幸的是,這往往需要您使用Erlang這種相對(duì)神秘的編程語言重寫所有代碼。不過我們也有其他選擇,例如使用名不見經(jīng)傳的CCR平臺(tái)來進(jìn)
Flex提供了<mx:WebService>、<mx:HTTPService>和<mx:RemoteObject>標(biāo)簽來直接訪問遠(yuǎn)程數(shù)據(jù),這用于與各種不同語言環(huán)境開發(fā)提供的遠(yuǎn)程服務(wù)端數(shù)據(jù)源(如WebService)進(jìn)行數(shù)據(jù)交互通信顯得更加容易.
本文以.NET平臺(tái)下C#語言開發(fā)的WebService作為遠(yuǎn)程數(shù)據(jù)源,詳細(xì)介紹Flex與.NET的WebService的數(shù)據(jù)通信知識(shí)點(diǎn);包括連接WebService,遠(yuǎn)程調(diào)用WebService方法,給WebService方法傳遞參數(shù)等相關(guān)知識(shí)點(diǎn)。三個(gè)標(biāo)簽的使用方法基本上是一樣,這里就以<mx:WebService>標(biāo)簽為例進(jìn)行介紹。
首先看看如下代碼塊:
1 <mx:WebService id="dataService"
2 wsdl="http://localhost/FlashFlex/DataWebService.asmx?wsdl"
3 useProxy="false">
4 <mx:operation name="HelloWorld" result="onSuccess(event)" fault="onFault(event)"/>
5 <mx:operation name="GetBook" fault="onFault(event)" result="onObjectSuccess(event)"/>
6 </mx:WebService>
wsdl屬性指定到要訪問的WebService的wsdl地址既可,其中定義了兩個(gè)操作標(biāo)簽(<mx:operation>),分別對(duì)應(yīng)于WebService中定義的WebMethod方法。result屬性標(biāo)記訪問WebService方法成功后的處理函數(shù);fault則相反,指定于訪問失敗的處理函數(shù)。以上兩個(gè)<mx:operation>對(duì)應(yīng)于WebService的WebMethod方法如下:
1 /// <summary>
2 /// 返回字符串
3 /// </summary>
4 /// <returns></returns>
5 [WebMethod]
6 public string HelloWorld()
7 {
8 return "Hello World";
9 }
10
11 /// <summary>
12 /// 返回一個(gè)簡單對(duì)象
13 /// </summary>
14 /// <returns></returns>
15 [WebMethod]
16 public Book GetBook()
17 {
18 return new Book
19 {
20 Id = 1,
21 Name = "三國演義",
22 Author = "羅貫中",
23 Price = 100
24 };
25 }
如上便是WebService方法定義和在Flex的客戶端(mxml)通過<mx:WebService>標(biāo)簽來訪問WebService的完整流程,下面我們來看看在Flex的客戶端怎么去調(diào)用WebService所定義的方法:
1 <mx:Script>
2 <![CDATA[
3 import mx.controls.Alert;
4 import mx.rpc.events.FaultEvent;
5 import mx.rpc.events.ResultEvent;
6
7 /**
8 * 向WebService發(fā)起請(qǐng)求--調(diào)用HelloWorld方法,dataService為<mx:WebService>的id
9 * */
10 internal function onRequest():void
11 {
12 dataService.HelloWorld();
13 }
14
15 /**
16 * 請(qǐng)求成功處理返回結(jié)果
17 * */
18 internal function onSuccess(evt:ResultEvent):void
19 {
20 Alert.show(evt.result.toString());
21 }
22
23
24 /**
25 * 請(qǐng)求失敗的處理函數(shù)
26 * */
27 internal function onFault(evt:FaultEvent):void
28 {
29 Alert.show("訪問WebService失敗!");
30 }
31 ]]>
32 </mx:Script>
通過上面的調(diào)用,就可以完成一個(gè)Flex和.NET WebService的交互。當(dāng)然我們?cè)贔lash/Flex的客戶端調(diào)用WebService也是可以傳遞參數(shù)的,如下WebService的WebMethod定義:
1 /// <summary>
2 /// 將傳遞進(jìn)來的參數(shù)轉(zhuǎn)化為大寫字符返回
3 /// </summary>
4 /// <param name="value"></param>
5 /// <returns></returns>
6 [WebMethod]
7 public string ConvertToUpper(string value)
8 {
9 return value.ToUpper();
10 }
通過在<mx:WebService>標(biāo)簽下配置<mx:operation>執(zhí)行該方法就可以訪問了,如下:
1 <mx:operation name="ConvertToUpper" result="onSuccess(event)" fault="onFault(event)"/>
1 /**
2 * 向WebService發(fā)起請(qǐng)求
3 * */
4 internal function onRequest():void
5 {
6 //dataService.HelloWorld();
7 dataService.ConvertToUpper("abcdefg");
8 }
另外,我們還可以通過<mx:request>來傳遞參數(shù),這里只需要知道<mx:request></mx:request>里的參數(shù)配置與WebService提供的WebMethod方法參數(shù)同名就OK。
回到前面看看WebService的方法定義,其中一個(gè)方法GetBook是返回的一個(gè)Book對(duì)象,如果是返回的對(duì)象我們?cè)贔lex的客戶端怎么來獲取這個(gè)對(duì)象的值呢?詳細(xì)見如下代碼示例:
1 internal function onObject():void
2 {
3 dataService.GetBook();
4 }
5
6 internal function onObjectSuccess(evt:ResultEvent):void
7 {
8 //直接通過事件的result屬性得到返回值,然后直接訪問屬性便OK
9 Alert.show(evt.result.Name);
10 }
11
12 /**
13 * 請(qǐng)求失敗的處理函數(shù)
14 * */
15 internal function onFault(evt:FaultEvent):void
16 {
17 Alert.show("訪問WebService失敗!");
18 }
如上便完成了服務(wù)端的WebService返回對(duì)象到客戶端的調(diào)用。
分享:ADO.NET實(shí)用經(jīng)驗(yàn)無保留曝光ADO.NET作為微軟最新的數(shù)據(jù)訪問技術(shù),已經(jīng)在企業(yè)開發(fā)中得到了廣泛的應(yīng)用。對(duì)于一線的開發(fā)人員來說,掌握基本的概念和技術(shù)之后,提高應(yīng)用水平和解決實(shí)際問題的最有效手段,莫過于相互交流彼此的最佳時(shí)間經(jīng)驗(yàn)經(jīng)驗(yàn)。在這篇文章中,兩位ADO.NET專家向讀者毫無保
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過程實(shí)現(xiàn)分頁示例代碼
- 相關(guān)鏈接:
- 教程說明:
.Net教程-Flex與.NET互操作:基于WebService的數(shù)據(jù)訪問。