www.日本精品,久久中文视频,中文字幕第一页在线播放,香蕉视频免费网站,老湿机一区午夜精品免费福利,91久久综合精品国产丝袜长腿,欧美日韩视频精品一区二区

ASP.NET AJAX分析與應用_ASP.NET是什么

發(fā)布時間:2020-02-16 來源: 日記大全 點擊:

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

相關熱詞搜索:分析 ASP NET ASP.NET。粒剩粒胤治雠c應用 asp net+ajax asp net ajax主頁

版權所有 蒲公英文摘 www.newchangjing.com