偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

詳解ADO.NET客戶端開(kāi)發(fā)數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用程序

開(kāi)發(fā) 后端
自從Microsoft與jQuery合作以來(lái),ASP.NET AJAX與jQuery就被定位為兩個(gè)互補(bǔ)的AJAX庫(kù)。既然jQuery已經(jīng)實(shí)現(xiàn)了如此多輕量級(jí)的AJAX特性,自然ASP.NET AJAX會(huì)繼續(xù)專注于富客戶端所需的一些重量級(jí)特性。

在ASP.NET AJAX 4.0 Preview 3里面,開(kāi)發(fā)人員能夠接觸到的兩個(gè)重要的新特性就是ADO.NET Data Service Client Library以及ASP.NET AJAX Template。對(duì)于熟悉ASP.NET服務(wù)器端開(kāi)發(fā)但不熟悉客戶端開(kāi)發(fā)的人來(lái)說(shuō),你可以簡(jiǎn)單地把這兩個(gè)特性理解為存在于客戶端的DataSource以及ListView,只要把數(shù)據(jù)通過(guò)ADO.NET Data Service輸出到前端,你就可以如同使用DataSource和ListView的組合一樣在客戶端開(kāi)發(fā)數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用程序了。

在這篇文章里,我們將來(lái)看看如何使用ADO.NET Data Service Client Library,將ADO.NET Data Service暴露的REST數(shù)據(jù)接口直接拿到客戶端JavaScript代碼中去調(diào)用。文章中所用到的示例代碼,可以在這里下載:ASP.NET AJAX 4.0 Preview 3 Demo,然后參考里面的AdoNetDataServiceDemo.aspx。

服務(wù)器端準(zhǔn)備工作

在我們接下來(lái)要講到的示例當(dāng)中,我們會(huì)用到一個(gè)SQL Server 2005 Express Edition的數(shù)據(jù)庫(kù),里面有一張名為OscarWinners的表,記錄的是本年度奧斯卡獲獎(jiǎng)名單,字段包括AwardID、Award、Winner、Film。然后我們?yōu)檫@張表創(chuàng)建ADO.NET Entity Model,接著再為它生成的實(shí)體類創(chuàng)建ADO.NET Data Service。這些都是在Visual Studio 2008中點(diǎn)幾下鼠標(biāo)就能完成的操作,就不再詳細(xì)解釋了。在ADO.NET Data Service的InitializeService()方法內(nèi),我們僅僅給它提供一個(gè)最寬松的規(guī)則:

config.SetEntitySetAccessRule("*", EntitySetRights.All);

到這里,我們就把服務(wù)器端的要做的工作都準(zhǔn)備好了。打開(kāi)你創(chuàng)建的ADO.NET Data Service地址,看看是否輸出了正確的Atom格式數(shù)據(jù)。如果沒(méi)有,請(qǐng)檢查一下你機(jī)器上的WCF是否已經(jīng)正確安裝和配置好了。確保服務(wù)器端的準(zhǔn)備工作都做好了,然后再進(jìn)入客戶端的開(kāi)發(fā)工作。

連接Data Service
在客戶端使用ADO.NET Data Service,我們需要接觸到的類只有一個(gè),那就是Sys.Data.AdoNetServiceProxy。首先,我們要連接到ADO.NET Data Service,也就是使用ADO.NET Data Service的URL來(lái)實(shí)例化此類:

var dataService = new Sys.Data.AdoNetServiceProxy("WebDataService.svc");

然后,我們就可以利用dataService來(lái)調(diào)用ADO.NET Data Service進(jìn)行CRUD操作了。

CRUD操作

所有的CRUD操作都在Sys.Data.AdoNetServiceProxy對(duì)象上執(zhí)行,方法分別名為query()、insert()、update()、remove()。在我們的示例當(dāng)中,會(huì)用到query()和update()方法,另外兩個(gè)方法是用起來(lái)和update()很類似,就不再詳細(xì)說(shuō)明了。

查詢操作

dataService.query("OscarWinners", function(result, context, operation) {
  /* display result */
}, errorHandler);

使用上述語(yǔ)句,我們查詢出了OscarWinners表中的所有數(shù)據(jù)。隨后的第一個(gè)回調(diào)函數(shù)會(huì)在查詢成功時(shí)被調(diào)用,因此我們可以在其中編寫(xiě)拼接HTML以顯示結(jié)果的邏輯,具體的代碼請(qǐng)參考下載中的AdoNetDataServiceDemo.aspx。第二個(gè)回調(diào)函數(shù)會(huì)在查詢失敗時(shí)被調(diào)用,我們可以編寫(xiě)一個(gè)統(tǒng)一的錯(cuò)誤處理函數(shù),名為errorHandler,然后將它傳遞給此參數(shù)。

如果需要傳遞復(fù)雜的查詢參數(shù),使用ADO.NET Data Service的格式就可以了,這可以在MSDN上查到。例如說(shuō)查詢Slumdog Millionaire這部電影奪取了多少個(gè)奧斯卡獎(jiǎng)項(xiàng),然后把獎(jiǎng)項(xiàng)按照名稱排序輸出,可以這樣子寫(xiě):

dataService.query("OscarWinners?$filter=Film eq 'Slumdog Millionaire'&$orderby=Award", 
function(result, context, operation) {
  /* display result */
}, errorHandler);

更新操作

dataService.update(item, function(result, context, operation) { }, errorHandler);

盡管將查詢結(jié)果保存下來(lái)成為items集合,并且根據(jù)用戶在界面上執(zhí)行的操作修改item上的屬性,這些邏輯都需要我們手動(dòng)維護(hù),然而最后將item更新到服務(wù)器上則只需要如此簡(jiǎn)單的一句調(diào)用。

在我給出的示例代碼中,我自己寫(xiě)了一個(gè)InPlaceEditBehavior,也就是所謂的“就地編輯器”,能夠讓用戶點(diǎn)擊顯示文本后把顯示文本變成輸入框。然后我把這個(gè)InPlaceEditBehavior綁定到每一條記錄顯示的Winner字段和Film字段的span上,使得這些span都能接收用戶輸入。最后,我為InPlaceEditBehavior添加了一個(gè)onchanged事件,并在該事件的處理函數(shù)中完成更新item以及調(diào)用update()的操作。

小結(jié)

在這篇文章里,我簡(jiǎn)單地介紹了ADO.NET Data Service Client Library的易用性,并且通過(guò)一個(gè)具體的示例說(shuō)明了如何用它來(lái)節(jié)省大量的數(shù)據(jù)交互代碼。

如果你曾經(jīng)寫(xiě)過(guò)AJAX-Enabled WCF Service,你應(yīng)該知道把實(shí)體類暴露為WCF Service接口是多么麻煩的事情,就算每個(gè)實(shí)體類就簡(jiǎn)單地支持CRUD方法,你也必須手動(dòng)編寫(xiě)這4個(gè)方法。ADO.NET Data Service相當(dāng)于幫你把這一切都做好了,只要給它實(shí)體類和規(guī)則,它就幫你生成一個(gè)Data Service。另外,通過(guò)AJAX-Enabled WCF Service所包括的數(shù)據(jù)接口,會(huì)自動(dòng)生成一大堆客戶端代理類,而ADO.NET Data Service Client Library則只有一個(gè)固定的代理類,客戶端代碼體積不會(huì)隨著接口復(fù)雜度的增加而增加。

說(shuō)了ADO.NET Data Service Client Library的那么多好處,那么這個(gè)示例中又有什么做得不夠好的地方呢?我覺(jué)得最難維護(hù)的地方就是獲取到數(shù)據(jù)后拼接HTML的代碼了,人手寫(xiě)的HTML拼接代碼難免容易出錯(cuò),而且日后更新起來(lái)也很麻煩,出錯(cuò)了調(diào)試時(shí)也不容易定位問(wèn)題。

原文鏈接:http://www.cnblogs.com/cathsfz/archive/2009/03/11/1408290.html

【編輯推薦】

  1. ASP.NET Web Forms 4.0中雙向Routing支持
  2. ADO.NET中容易混淆的概念
  3. 使用ASP.Net 3.5的Ajax與Web服務(wù)開(kāi)發(fā)實(shí)例
責(zé)任編輯:彭凡 來(lái)源: <a href="http://cathsfz.cnblogs.com">cathsfz.cn..
相關(guān)推薦

2011-07-21 09:07:16

ADO.NET

2009-12-21 13:38:29

ADO.NET應(yīng)用程序

2010-01-04 13:56:50

ADO.NET應(yīng)用程序

2009-10-29 13:16:15

ADO.NET應(yīng)用程序

2009-12-23 17:30:54

ADO.NET應(yīng)用程序

2009-12-23 16:57:35

理解ADO.NET

2009-12-23 10:18:21

ADO.NET 應(yīng)用程

2009-12-24 14:06:22

ADO.NET 應(yīng)用程

2009-12-28 16:50:28

ADO.NET應(yīng)用程序

2009-12-18 16:56:05

ADO.NET應(yīng)用程序

2009-12-24 14:12:33

2009-12-18 17:29:40

ADO.NET應(yīng)用程序

2009-12-30 15:06:22

ADO.NET分析

2011-10-09 13:38:14

數(shù)據(jù)庫(kù)

2009-11-13 15:33:58

ADO.NET數(shù)據(jù)對(duì)象

2011-05-20 11:31:07

ADO.NET

2009-12-29 16:12:25

ADO程序員

2009-12-21 16:45:41

ADO.NET程序

2024-06-18 13:17:02

數(shù)據(jù)庫(kù)框架

2009-11-13 09:45:54

ADO.NET程序集
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)