ASP.NET。粒剩粒胤治雠c應(yīng)用_ASP.NET是什么
發(fā)布時間:2020-02-16 來源: 日記大全 點(diǎn)擊:
摘要:本文介紹了ASP.NET AJAX的由來、特性和架構(gòu)以及相關(guān)的服務(wù)端和客戶端技術(shù),并結(jié)合實(shí)際項目開發(fā),證明使用ASP.NET AJAX帶來了更好的用戶體驗和更高的開發(fā)效率。
關(guān)鍵詞:ASP.NET AJAX;控件;服務(wù)端;客戶端
中圖分類號:TP312 文獻(xiàn)標(biāo)識碼:A
1 引言
2005年,在 Web2.0熱潮中,Ajax誕生,揭開了無刷新更新頁面時代的序幕,并迅速以其更好的用戶體驗,更少的服務(wù)器和帶寬負(fù)擔(dān)等傳統(tǒng)Web應(yīng)用無法比擬的優(yōu)勢,成為炙手可熱的Web開發(fā)技術(shù),基于標(biāo)準(zhǔn)化被廣泛支持和應(yīng)用。
然而,Ajax也有很多不足之處:由于其涉及的技術(shù)太多,開發(fā)者仍需要大量的學(xué)習(xí),對于某些比較復(fù)雜的客戶端程序來講,往往需要開發(fā)者對JavaScript以及相關(guān)技術(shù)非常精通;每種瀏覽器中提供的DOM模型均有輕微的差異,在編寫跨瀏覽器的客戶端應(yīng)用程序時往往非常困難; 由于大部分表示層以及少部分業(yè)務(wù)邏輯均被移到了客戶端用JavaScript實(shí)現(xiàn),使客戶端代碼量急劇增大,但JavaScript從語言層面上并沒有完善的面向?qū)ο笾С?使客戶端代碼的質(zhì)量無法保證。
綜上所述,Ajax技術(shù)的優(yōu)勢在于提高用戶體驗,不足之處在于開發(fā)困難。而今應(yīng)用程序的發(fā)展趨勢是:把用戶體驗放在第一位,但與此同時,開發(fā)效率也不容忽視。為了解決這樣的問題,各種Ajax框架如雨后春筍般應(yīng)運(yùn)而生。
2 ASP.NET AJAX簡介?
2.1 Ajax技術(shù)
Ajax在用戶和服務(wù)器之間建立異步操作機(jī)制,可將一些基本的操作交給Ajax引擎,需要從服務(wù)器獲取數(shù)據(jù)時才通過Ajax引擎直接向服務(wù)器請求。圖1為傳統(tǒng)Web應(yīng)用模型與Ajax Web應(yīng)用模型的工作模式比較:
圖1傳統(tǒng)Web應(yīng)用模型與Ajax Web應(yīng)用模型的工作模式比較?
2.2 ASP.NET AJAX框架
像所有的優(yōu)秀技術(shù)一樣,Ajax已經(jīng)催生出大量框架,但歸結(jié)起來不外乎三類:回調(diào)框架、UI框架和完整框架:
回調(diào)框架一般由少數(shù)的幾個客戶端及服務(wù)器端庫文件組成。它只允許開發(fā)者從客戶端調(diào)用服務(wù)器端代碼片段,并以序列化方式傳送輸入和輸出參數(shù)。
UI框架一般都是從現(xiàn)有的專業(yè)控件庫演變而來,它們往往提供給開發(fā)者一些高級網(wǎng)格控件、圖表控件和樹控件等等。這些控件都會支持異步回發(fā)機(jī)制并在客戶端生成用于自動刷新頁面的JavaScript代碼。
完整框架提供包含控件和應(yīng)用程序服務(wù)在內(nèi)的極為豐富的編程模型,更適宜于同時應(yīng)用于客戶端和服務(wù)器端。
ASP.NET AJAX框架屬于第三種類別,在實(shí)現(xiàn)Ajax功能的同時又極大地簡化了開發(fā)過程。使用 ASP.Net AJAX,甚至只需拖拽幾個控件,就可以使Web 頁面具有精彩的AJAX 用戶界面效果,同時大量地降低應(yīng)用服務(wù)器層的資源消耗。圖2為傳統(tǒng)ASP.NET頁面與ASP.NET AJAX頁面的工作原理比較:
圖2傳統(tǒng)ASP.NET頁面與ASP.NET AJAX頁面的工作原理比較
ASP.NET AJAX主要的設(shè)計目標(biāo)有兩個:第一,對現(xiàn)有的ASP.NET服務(wù)器端模型進(jìn)行擴(kuò)展,讓其可以生成實(shí)現(xiàn)富客戶端的JavaScript代碼;第二,為ASP.NET增加客戶端編程模型,讓純粹的客戶端編程變得更加簡單。
這樣,ASP.NET AJAX的特性就可以相應(yīng)地分為服務(wù)器端和客戶端兩個部分,前者包含ASP.NET 2.0 AJAX Extensions以及ASP.NET AJAX Control Toolkit(開發(fā)者社區(qū)協(xié)作的產(chǎn)物,其中包含了數(shù)十種非常有用的ASP.NET AJAX服務(wù)器端擴(kuò)展器控件以及多種獨(dú)立的ASP.NET AJAX服務(wù)器端控件),后者包含Microsoft AJAX Library。ASP.NET AJAX 的架構(gòu)如圖3所示:
圖3ASP.NET AJAX 服務(wù)器和客戶端架構(gòu)
ASP.NET AJAX客戶端部分是一組JavaScript庫。這些庫在任何方面都沒有綁定到 ASP.NET――非ASP.NET開發(fā)人員也可以在自己的Web頁面里使用。客戶端庫沒有提供太多的特性(例如,不包含任何可以直接拖放到Web頁面的預(yù)先建立的功能)。相反,建立了用于開發(fā)ASP.NET AJAX頁面的基礎(chǔ)。這個基礎(chǔ)擴(kuò)展了JavaScript,彌補(bǔ)了幾個方面的不足,并提供了一些基本架構(gòu)。
ASP.NET AJAX服務(wù)器端部分在一個更高的層次上工作。包括使用那些客戶端腳本庫的控件和組件。
3 ASP.NET AJAX的應(yīng)用?
3.1 服務(wù)器端和客戶端使用方法分析
ASP.NET AJAX分為服務(wù)器端和客戶端兩個部分,有些功能既可以完全使用客戶端功能實(shí)現(xiàn),又可以完全使用服務(wù)器端功能實(shí)現(xiàn)。所以,比較異同,權(quán)衡利弊,并根據(jù)實(shí)際開發(fā)中的具體情況選擇最合適的方法顯得至關(guān)重要。?
3.2 ASP.NET AJAX框架的技術(shù)實(shí)踐
對于開發(fā)中遇到的不同情況以及需求,應(yīng)該區(qū)別對待并選擇最合適的開發(fā)方式,下面是三種主要的場景:
1.繼續(xù)使用普通的ASP.NET服務(wù)器控件,但利用ASP.NET AJAX組件或者新控件和控件擴(kuò)展器擴(kuò)展其功能。
2. 從頭創(chuàng)建“純粹的”Ajax應(yīng)用程序。
所謂“純粹的”Ajax應(yīng)用程序,是指服務(wù)器端沒有任何表示層邏輯,只用來提供數(shù)據(jù),同時所有的表示層邏輯均在客戶端JavaScript中完成。極端一點(diǎn)說,這種“純粹的”Ajax應(yīng)用程序?qū)⒅挥幸粋頁面,所有的功能(包括用戶輸入、與服務(wù)器通信、界面改變等)均通過客戶端JavaScript來實(shí)現(xiàn)。
3.在非ASP.NET 2.0服務(wù)器端平臺上使用ASP.NET AJAX。
這種情況下的ASP.NET AJAX服務(wù)器端無法實(shí)現(xiàn),只能考慮使用ASP.NET AJAX的客戶端實(shí)現(xiàn)方式。
值得注意的是,ASP.NET AJAX的兩種實(shí)現(xiàn)方式并不是互相對立的,而是相輔相成的。上面所說的“選擇某種實(shí)現(xiàn)方式”僅僅意味著“偏重使用某種實(shí)現(xiàn)方式”。
上述第一種場景最為常見,而且實(shí)現(xiàn)最為簡單。下面以《湖北省農(nóng)村能源管理系統(tǒng)》中的實(shí)際應(yīng)用為例,簡單介紹CascadingDropDown控件的使用。
CascadingDropDown是AjaxControlToolkit中的組件,用來控制數(shù)個普通的DropDownList控件,使其產(chǎn)生無刷新的級聯(lián)效果,同時大大簡化開發(fā)流程。完成級聯(lián)選擇項變化的過程通過發(fā)布在 IIS 服務(wù)器上的 Web Service 實(shí)現(xiàn)。這個 Web Service 可以完全地控制其中級聯(lián)的業(yè)務(wù)邏輯。通過它開發(fā)人員可以很方便地從 Xml 或者數(shù)據(jù)庫中獲得相關(guān)數(shù)據(jù)。以下是相關(guān)的主要代碼:
<!--下拉列表控件-->
。糰sp:DropDownList ID=“DropDownList1” runat=“server” SkinID=“ddl1” AutoPostBack=“true” OnSelectedIndexChanged=“DropDownList_SelectedIndexChanged”/>
•••
。!--對應(yīng)的CascadingDropDown控件-->
。糰jaxToolkit:CascadingDropDown ID=“CascadingDropDown1” runat=“server” TargetControlID=“DropDownList1” LoadingText=“正在加載區(qū)域類型” PromptText=“請選擇區(qū)域類型” ServicePath=“UserManage.asmx” ServiceMethod=“getAreaType” Category=“typename”>
。/ajaxToolkit:CascadingDropDown>
<ajaxToolkit:CascadingDropDown ID=“CascadingDropDown2” runat=“server” TargetControlID=“DropDownList2” ParentControlID=“DropDownList1” LoadingText=“正在加載市級城市” PromptText=“請選擇市級城市” ServicePath=“UserManage.asmx” ServiceMethod=“getCity” Category=“cityname”>
</ajaxToolkit:CascadingDropDown>
。糰jaxToolkit:CascadingDropDown ID=“CascadingDropDown3” runat=“server” TargetControlID=“DropDownList3” ParentControlID=“DropDownList2” LoadingText=“正在加載縣級城市”PromptText=“請選擇縣級城市” ServicePath=“UserManage.asmx” ServiceMethod=“getCountry” Category=“countryname”>
</ajaxToolkit:CascadingDropDown>
WebService代碼(以三級下拉列表的WebService代碼為例):
//獲取縣級城市
[WebMethod]
public CascadingDropDownNameValue[] getCountry(string knownCategoryValues, string category)
{StringDictionary kv= CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
•••
if ((kv.ContainsKey(“rolename”) && kv.ContainsKey(“cityname”) && kv[“rolename”] == “6fc98827-de43-4026-b67d-b4d207fb1afd”)|| (kv.ContainsKey(“typename”) && kv.ContainsKey(“cityname”)))
{ DataTable countries = getCountryTable(kv[“cityname”].ToString());
//填充下拉列表
List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
foreach (DataRow dr in countries.Rows)
{ values.Add(new CascadingDropDownNameValue(dr[“CountryName”].ToString(), dr[“CountryID”].ToString())); }
return values.ToArray();
•••
4 結(jié)束語
ASP.NET AJAX最精彩的特性是它并不只是一個JavaScript庫或者一個簡化回調(diào)的.NET組件,而是一個多層的平臺,能夠創(chuàng)建更具響應(yīng)性更動態(tài)的頁面――設(shè)置一個完全不同類型的Web應(yīng)用程序。由以上內(nèi)容可知,可以在三個不同層次使用ASP.NET AJAX框架。另外,ASP.NET AJAX還在不斷的發(fā)展改善中,可以大膽預(yù)測,ASP.NET AJAX Control Toolkit將提供大量的服務(wù)器端擴(kuò)展器控件,讓開發(fā)者極為方便地為現(xiàn)有的ASP.NET應(yīng)用程序添加Ajax功能;其他服務(wù)器端平臺上將有對ASP.NET AJAX服務(wù)器端控件/組件的實(shí)現(xiàn)。?
參考文獻(xiàn)?
[1]陳黎夫.ASP.NET AJAX程序設(shè)計(第I卷): 服務(wù)器端ASP.NET 2.0 AJAX Extensions與ASP.NET AJAX Control Toolkit [M]. 北京: 人民郵電出版社, 2007.?
[2]陳黎夫.ASP.NET 2.0 Ajax程序設(shè)計(第II卷): 客戶端Microsoft AJAX Library與異步通信層[M]. 北京: 人民郵電出版社, 2007.?
[3][美] Matthew MacDonald, Mario Szpuszta.ASP.NET 3.5高級程序設(shè)計(第2版) [M]. 北京: 人民郵電出版社, 2008.?
相關(guān)熱詞搜索:分析 ASP NET ASP.NET。粒剩粒胤治雠c應(yīng)用 asp net+ajax asp net ajax主頁
熱點(diǎn)文章閱讀