自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解ADO.NET客戶端開發(fā)數(shù)據(jù)驅動的應用程序

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

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

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

服務器端準備工作

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

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

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

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

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

然后,我們就可以利用dataService來調用ADO.NET Data Service進行CRUD操作了。

CRUD操作

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

查詢操作

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

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

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

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);

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

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

小結

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

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

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

原文鏈接: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服務開發(fā)實例
責任編輯:彭凡 來源: <a href="http://cathsfz.cnblogs.com">cathsfz.cn..
相關推薦

2011-07-21 09:07:16

ADO.NET

2009-12-21 13:38:29

ADO.NET應用程序

2010-01-04 13:56:50

ADO.NET應用程序

2009-10-29 13:16:15

ADO.NET應用程序

2009-12-23 17:30:54

ADO.NET應用程序

2009-12-23 16:57:35

理解ADO.NET

2009-12-24 14:06:22

ADO.NET 應用程

2009-12-23 10:18:21

ADO.NET 應用程

2009-12-28 16:50:28

ADO.NET應用程序

2009-12-24 14:12:33

2009-12-18 16:56:05

ADO.NET應用程序

2009-12-18 17:29:40

ADO.NET應用程序

2009-12-30 15:06:22

ADO.NET分析

2011-10-09 13:38:14

數(shù)據(jù)庫

2009-11-13 15:33:58

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

2024-06-18 13:17:02

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

2009-12-29 16:12:25

ADO程序員

2009-12-21 16:45:41

ADO.NET程序

2011-05-20 11:31:07

ADO.NET

2009-11-13 09:45:54

ADO.NET程序集
點贊
收藏

51CTO技術棧公眾號