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

首頁 > 開發 > 綜合 > 正文

Whidbey中客戶端回調機制(一)

2024-07-21 02:16:27
字體:
來源:轉載
供稿:網友
whidbey對客戶端回調的簡化

有很多理由讓我期待vs.net的下一個版本:whidbey,其中之一就是增加了很多對客戶端腳本的支持。包含了新的屬性和一個clientscriptmanager類來管理客戶端腳本。然而,也許最受歡迎的就是whidbey支持回調遠程服務器正在使用的客戶端腳本。















圖 1. 回調的流程: 當它被服務器和客戶端兩者處理時,你可以控制回調的流程









通過刷新或回發提交一個頁面來實現數據查詢是一項很平常的技術。使用asp時,開發者使用腳本來控制客戶端提交的數據,但這樣通常使得asp代碼很難進行維護。像大多數的web applications,對服務器以提交回發形式提交數據引起一個完全的請求- 回應周期,服務器會生成一個完全新的頁來回應請求, 然后瀏覽器會生成新的頁以代替已存在的頁。頁面重繪(page-redrawing)使得使用者得到服務器的回應的數度變得很慢。開發者減輕這種問題的接口問題的一個方法是藉由使用遠程腳本(remote scripting),這種遠程腳本使用包含java applets 的dhtml組合在已存在的頁面上動態生成向服務器更新數據的請求。

除此之外,開發者還可以使用(只適用于ie請求)客戶端腳本和xmlhttp向服務器后臺數據發出請求。

但是這兩個方法的實現時很困難的,這需要非常的細心和努力,尤其是編譯。

開發者期待在最初asp.net release 版本中得到一些變化,他們得到一些,如: 服務器控件、 viewstate,自動回發(automated postback)以及基于事件的asp.net編程模型解決了許多問題。尤其是smartnavigation(僅僅在ie應用程序里)。 但是為了實現跨平臺應用程序,開發者繼續依賴遠程腳本。這個問題,在asp.net v2.0( whidbey) 里已經得到根本的改變。



whidbey 對客戶回調的支持



在whidbey 版本中,客戶端可以調用服務器方法來提交數據,并且得到結果,而不用提交表單。這些調用你只要寫很少的一些特別的代碼,使用后臺的xml http 來實現對服務器請求。



圖一 顯示應用程序邏輯流程。

你寫了一個對服務器發出請求的客戶端函數(步驟2),并且定義了一個服務器事件(步驟1 c) 處理這個請求。 callbackmanager 就像是一個中轉站,處理步驟3到步驟6的一系列過程。包括從客戶端到服務器的請求的發出和數據從服務器到客戶端的返回。

另一個客戶端函數(步驟7) 處理服務器的返回信息。你寫了兩個客戶端函數用來想服務器發出一個請求并且處理服務器的返回信息。



實現查詢
假定你需要建立一個頁面來實現從3 張數據庫表中查詢數據:region, country, and city。 ( 見圖 2 )





這是一個" dependent list " 問題的典型的例子。 當一個用戶選擇一個地區,則程序應當用在這個地區的國家來綁定country list。 同樣,當用戶選擇一個國家時,city list應該為僅僅包含被選擇的國家相應的城市。( 見圖 2)


當然可以使用正常postback 技術來實現這寫功能,但是你必須忍受每次向服務器發出請求而重繪整個頁面的性能代價。然而,因為你能維護全部頁布局代碼,因此你可以提供一種更好、更快的方法來實現這個功能,這就是使用遠程回調(remote callbacks),每次只發送相應的標識并且僅僅得到那些相應的數據。







下載這篇文章代碼,代碼包括callback.sql數據庫腳本,用于建立本文用那些數據。可以使用sql server或者msde 數據庫。 首先運行數據庫腳本,( 你可以根據需要更改,來使用其它數據庫)。然后啟動visual studio.net whidbey建立例子。

創造工程,選擇模板類型" asp.net web site "( 見圖3)。 這建立一個新頁default.aspx 。如果想也可以給它重新命名。







模板選擇: 在visual studio 里的模板選擇對話中選擇asp.net網站項目


在default.aspx頁面增加 dropdown controls如圖4中所示。



你可以查看并且復制所有來自這篇文章下載代碼用<asp:table>包括的代碼。

為了實現遠程回調這個功能,必須實現icallbackeventhandler 接口。 在頁面增加以下的代碼。

<%@ implements interface=
"system.web.ui.icallbackeventhandler" %>
this interface has a single public event definition that you must implement:

public string raisecallbackevent(
string eventargument) {
// server side handling here...
}
遠程回調使客戶端產生 raisecallbackevent. 因此,你應該處理并且返回基于客戶端發出的eventargument相應的信息。 你可以從方法簽名看見這種方法參數為一個string并且返回一個string。
菜鳥學堂:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 察雅县| 富锦市| 阳江市| 大名县| 德兴市| 偏关县| 天气| 太湖县| 盐亭县| 林芝县| 平凉市| 新巴尔虎右旗| 普兰店市| 安乡县| 元谋县| 玉溪市| 登封市| 庄河市| 鹤峰县| 康定县| 杭锦后旗| 武鸣县| 黔东| 定南县| 彭阳县| 长治县| 上犹县| 永定县| 延寿县| 汾阳市| 三门县| 牙克石市| 塔城市| 隆子县| 望都县| 宣威市| 北辰区| 西乡县| 扎兰屯市| 迁安市| 夏河县|