国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.NET Framework中使用XML Web Service(1)

2024-07-10 12:58:53
字體:
供稿:網(wǎng)友

摘要:學(xué)習(xí)如何使用 microsoft .net framework 精簡版通過智能設(shè)備應(yīng)用程序同步和異步調(diào)用 xml web service。

目錄

  • 簡介
  • 使用 web 服務(wù)
  • 生成同步 xml web service 調(diào)用
  • 生成異步 web 服務(wù)調(diào)用
  • 更多信息

簡介

microsoft®.net framework 精簡版的一個主要功能是能夠使用 xml web service。microsoft .net framework 精簡版支持以兩種不同的方式使用 xml web service:同步和異步。這兩種方式各有優(yōu)缺點。同步 xml web service 調(diào)用編碼簡單,而異步調(diào)用的編碼略微復(fù)雜。如果 xml web service 長時間無響應(yīng),同步調(diào)用將凍結(jié)應(yīng)用程序,而異步調(diào)用則允許用戶在調(diào)用 xml web service 期間與應(yīng)用程序進行交互。

通過 smart device(智能設(shè)備)項目使用 xml web service 時,將發(fā)生幾秒鐘的初始延遲。如果生成異步調(diào)用,則此延遲不會凍結(jié)應(yīng)用程序的用戶界面。當(dāng) .net framework 精簡版運行時設(shè)置 xml web service 的連接細節(jié)并緩存連接細節(jié)時將發(fā)生此延遲。通常情況下,這會導(dǎo)致應(yīng)用程序無響應(yīng)。以后再調(diào)用 xml web service 時,性能將會顯著提高。

本文說明了如何向 smart device(智能設(shè)備)項目添加對 xml web service 的 web 引用,以及如何同步和異步調(diào)用 xml web service。

本文假設(shè)您在使用 microsoft visual studio® .net 2003 創(chuàng)建智能設(shè)備應(yīng)用程序方面有一定的經(jīng)驗。

使用 web 服務(wù)

要在 smart device(智能設(shè)備)項目中使用 xml web service,您需要在項目中添加 web 引用。項目通過 web 引用來使用 xml web service。在項目中添加 web 引用時,visual studio .net 將自動生成一個“代理類”(其中包含用作 xml web service 每個公開方法的代理的方法)。默認情況下,代理類不會顯示在 solution explorer(解決方案資源管理器)中。應(yīng)用程序使用自動生成的類(而不是使用自己的代碼修改的類)來訪問 xml web service。

要向項目中添加 web 引用,請執(zhí)行以下操作:

  1. 在 solution explorer(解決方案資源管理器)中,選擇要使用 xml web service 的項目。
  2. 在 project(項目)菜單上,選擇 add web reference(添加 web 引用)。
  3. 輸入要使用的 xml web service 的 url,并單擊 go(轉(zhuǎn)到)按鈕。

add web reference(添加 web 引用)對話框

  1. 在 web reference name(web 引用名稱)字段中,輸入將在代碼中用于以編程方式訪問選定 xml web service 的名稱。
  2. 單擊 add reference(添加引用)按鈕以在應(yīng)用程序中創(chuàng)建對 xml web service 的引用。新引用將顯示在 solution explorer(解決方案資源管理器)中選定項目的 web references(web 引用)節(jié)點下。

visual studio .net 在添加 web 引用時生成的代理類還包含用于同步或異步訪問 web 服務(wù)的方法。現(xiàn)在我們來看一下如何實現(xiàn)此目的。

生成同步 xml web service 調(diào)用

生成對 xml web service 的同步調(diào)用時,調(diào)用線程將中斷,直到 xml web service 返回方法調(diào)用的結(jié)果。如果在服務(wù)器中調(diào)用的方法不需要太多的處理時間,且將迅速返回,則同步調(diào)用比較有用。此外,同步 xml web service 調(diào)用比異步調(diào)用容易實現(xiàn)。但是,通過 .net framework 精簡版應(yīng)用程序調(diào)用 xml web service 時將發(fā)生重大延遲,這將使應(yīng)用程序鎖定并使用戶接口凍結(jié),直到返回方法調(diào)用為止。

要生成同步 xml web service 調(diào)用,需要創(chuàng)建一個代理類實例,然后調(diào)用此代理類中的方法,方式與調(diào)用其他類中的方法相同。以下代碼示例演示了如何生成對 xml web service 的 web 方法(用于返回有關(guān) sql server 附帶的 pubs 示例數(shù)據(jù)庫中的書籍的信息)的調(diào)用。然后,代碼將通過 dataset 將數(shù)據(jù)加載到 windows 窗體上的 listview 控件。

此示例假設(shè)您在添加 web 引用(如本文第一部分所述)時將 web 引用命名為 bookcatalog。bookcatalog xml web service 包含 getitems web 方法,該方法將返回一個 dataset 對象。此代碼取自本文附帶的下載中的 button1_click() 事件處理程序。

// ---- 調(diào)用 xml web service ----// 創(chuàng)建 web 服務(wù)代理類的實例bookcatalog.service1 bookcatalog = new bookcatalog.service1();// 創(chuàng)建 dataset 對象的新實例并調(diào)用 web 服務(wù)// 方法 getitems 檢索書籍列表dataset ds = bookcatalog.getitems();// ------------------------------// ----  處理 dataset ----// 遍歷 dataset 并將每個行的 title_id 和 title 字段// 添加至 listviewforeach(datarow drbook in ds.tables[0].rows) {    // 創(chuàng)建一個新 listviewitem 添加到 listview    listviewitem book = new listviewitem();    // 將 title_id 字段指定給 text 屬性    book.text = drbook["title_id"].tostring();    // 將 title 字段指定給第一個 subitem    book.subitem[0].text = drbook["title"].tostring();    // 將書 listviewitem 添加到 listview    listview1.items.add(book);}// ------------------------------

生成異步 web 服務(wù)調(diào)用

通過生成異步 xml web service 調(diào)用,您可以在等待 xml web service 作出響應(yīng)時繼續(xù)使用調(diào)用線程。也就是說,用戶可以在應(yīng)用程序未鎖定的情況下繼續(xù)與其交互,而 xml web service 訪問也將繼續(xù)進行。這是一種更好的設(shè)計模式,通過使用多線程支持,可以更有效地在智能設(shè)備應(yīng)用程序中使用線程。生成異步調(diào)用時,將在不同于運行用戶界面的線程中生成調(diào)用。xml web service 應(yīng)用程序不需要任何特殊配置即可支持異步訪問,也不需要知道調(diào)用方式是同步還是異步。代理類中的每個同步方法都有相應(yīng)的 begin 和 end 方法。例如,如果 xml web service 方法名為 getitems,則異步方法為 begingetitems 和 endgetitems。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 广东省| 石嘴山市| 馆陶县| 建瓯市| 囊谦县| 寿宁县| 措勤县| 宝清县| 馆陶县| 伊川县| 新巴尔虎右旗| 克什克腾旗| 阳朔县| 浦东新区| 津市市| 三都| 调兵山市| 阿鲁科尔沁旗| 吴旗县| 宁远县| 启东市| 托克逊县| 犍为县| 道孚县| 沙田区| 孟津县| 无锡市| 望城县| 平罗县| 兰考县| 兴安盟| 兴文县| 宣恩县| 监利县| 三门县| 天柱县| 淅川县| 靖西县| 全南县| 宿松县| 永顺县|