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

淺談ASP.NET訪問數(shù)據(jù)

開發(fā) 后端
本文介紹ASP.NET訪問數(shù)據(jù),以及介紹只要可能,就緩存數(shù)據(jù)和頁輸出和選擇適合頁面或應(yīng)用程序的數(shù)據(jù)查看機(jī)制等。

只要可能,就緩存數(shù)據(jù)和頁輸出

ASP.NET 提供了一些簡單的機(jī)制,它們會在不需要為每個(gè)頁請求動態(tài)計(jì)算頁輸出或數(shù)據(jù)時(shí)緩存這些頁輸出或數(shù)據(jù)。另外,通過設(shè)計(jì)要進(jìn)行緩存的頁和數(shù)據(jù)請求(特別是在站點(diǎn)中預(yù)期將有較大通訊量的區(qū)域),可以優(yōu)化這些頁的性能。與 .NET Framework 的任何 Web 窗體功能相比,適當(dāng)?shù)厥褂镁彺婵梢愿玫奶岣哒军c(diǎn)的性能,有時(shí)這種提高是超數(shù)量級的。使用 ASP.NET 緩存機(jī)制有兩點(diǎn)需要注意。首先,不要緩存太多項(xiàng)。緩存每個(gè)項(xiàng)均有開銷,特別是在內(nèi)存使用方面。不要緩存容易重新計(jì)算和很少使用的項(xiàng)。

其次,給緩存的項(xiàng)分配的有效期不要太短。很快到期的項(xiàng)會導(dǎo)致緩存中不必要的周轉(zhuǎn),并且經(jīng)常導(dǎo)致更多的代碼清除和垃圾回收工作。若關(guān)心此問題,請監(jiān)視與 ASP.NET Applications 性能對象關(guān)聯(lián)的 Cache Total Turnover Rate 性能計(jì)數(shù)器。高周轉(zhuǎn)率可能說明存在問題,特別是當(dāng)項(xiàng)在到期前被移除時(shí)。這也稱作內(nèi)存壓力。

選擇適合頁面或應(yīng)用程序的數(shù)據(jù)查看機(jī)制

根據(jù)您選擇在 Web 窗體頁顯示數(shù)據(jù)的方式,在便利和性能之間常常存在著重要的權(quán)衡。例如,DataGrid Web 服務(wù)器控件可能是一種顯示數(shù)據(jù)的方便快捷的方法,但就性能而言它的開銷常常是***的。在某些簡單的情況下,您通過生成適當(dāng)?shù)?HTML 自己呈現(xiàn)數(shù)據(jù)可能很有效,但是自定義和瀏覽器定向會很快抵銷所獲得的額外功效。Repeater Web 服務(wù)器控件是便利和性能的折衷。它高效、可自定義且可編程。

將SqlDataReader 類用于快速只進(jìn)數(shù)據(jù)游標(biāo)

SqlDataReader 類提供了一種讀取從 SQL Server 數(shù)據(jù)庫檢索的只進(jìn)數(shù)據(jù)流的方法。如果當(dāng)創(chuàng)建 ASP.NET 應(yīng)用程序時(shí)出現(xiàn)允許您使用它的情況,則 SqlDataReader 類提供比 DataSet 類更高的性能。情況之所以這樣,是因?yàn)?SqlDataReader 使用 SQL Server 的本機(jī)網(wǎng)絡(luò)數(shù)據(jù)傳輸格式從數(shù)據(jù)庫連接直接讀取數(shù)據(jù)。另外,SqlDataReader 類實(shí)現(xiàn) IEnumerable 接口,該接口也允許您將數(shù)據(jù)綁定到服務(wù)器控件。有關(guān)更多信息,請參見 SqlDataReader 類。有關(guān) ASP.NET訪問數(shù)據(jù)的信息,請參見通過 ASP.NET訪問數(shù)據(jù)。

將SQL Server 存儲過程用于數(shù)據(jù)訪問

在 .NET Framework 提供的所有數(shù)據(jù)訪問方法中,基于 SQL Server 的數(shù)據(jù)訪問是生成高性能、可縮放 Web 應(yīng)用程序的推薦選擇。使用托管 SQL Server 提供程序時(shí),可通過使用編譯的存儲過程而不是特殊查詢獲得額外的性能提高。

避免單線程單元 (STA) COM 組件

默認(rèn)情況下,ASP.NET 不允許任何 STA COM 組件在頁面內(nèi)運(yùn)行。若要運(yùn)行它們,必須在 .aspx 文件內(nèi)將 ASPCompat=true 屬性包含在 @ Page 指令中。這樣就將執(zhí)行用的線程池切換到 STA 線程池,而且使 HttpContext 和其他內(nèi)置對象可用于 COM 對象。前者也是一種性能優(yōu)化,因?yàn)樗苊饬藢⒍嗑€程單元 (MTA) 封送到 STA 線程的任何調(diào)用。使用 STA COM 組件可能大大損害性能,應(yīng)盡量避免。若必須使用 STA COM 組件,如在任何 interop 方案中,則應(yīng)在執(zhí)行期間進(jìn)行大量調(diào)用并在每次調(diào)用期間發(fā)送盡可能多的信息。另外,小心不要在構(gòu)造頁面期間創(chuàng)建任何 STA COM 組件。例如下面的代碼中,

在頁面構(gòu)造時(shí)將實(shí)例化由某個(gè)線程創(chuàng)建的 MySTAComponent,而該線程并不是將運(yùn)行頁面的 STA 線程。這可能對性能有不利影響,因?yàn)橐獦?gòu)造頁面就必須完成 MTA 和 STA 線程之間的封送處理。

Dim myComp as new MySTAComponent() Public Sub Page_Load() myComp.Name = "Bob" End Sub

***機(jī)制是推遲對象的創(chuàng)建,直到以后在 STA 線程下執(zhí)行上述代碼,如下面的例子所示。

Dim myComp Public Sub Page_Load() myComp = new MySTAComponent()myComp.Name = "Bob" End Sub

推薦的做法是在需要時(shí)或者在 Page_Load 方法中構(gòu)造任何 COM 組件和外部資源。永遠(yuǎn)不要將任何 STA COM 組件存儲在可以由構(gòu)造它的線程以外的其他線程訪問的共享資源里。這類資源包括像緩存和會話狀態(tài)這樣的資源。即使 STA 線程調(diào)用 STA COM 組件,也只有構(gòu)造此 STA COM 組件的線程能夠?qū)嶋H為該調(diào)用服務(wù),而這要求封送處理對創(chuàng)建者線程的調(diào)用。以上是介紹ASP.NET訪問數(shù)據(jù)。

【編輯推薦】

  1. 介紹ASP.NET中SQL語句
  2. 在ASP.NET中使用StringBuilder
  3. ASP.NET中的Response.Write
  4. 淺析ASP.NET授權(quán)模塊
  5. ASP.NET運(yùn)行時(shí)的處理流程
責(zé)任編輯:佚名 來源: 51CTO.com
相關(guān)推薦

2009-08-19 10:54:42

ASP.NET數(shù)據(jù)訪問

2009-07-24 10:52:42

ASP.NET ISA

2009-07-22 17:21:27

ASP.NET 2.0

2009-07-22 16:11:43

ASP.NET AJA

2009-07-20 15:30:11

ASP.NET應(yīng)用

2009-08-03 18:47:12

ASP.NET數(shù)據(jù)緩存

2009-08-05 15:29:33

ASP.NET For

2009-07-23 15:44:39

ASP.NET MVC

2009-07-28 17:49:30

ASP.NET定期回收

2009-07-28 16:03:23

ASP.NET狀態(tài)服務(wù)

2009-08-10 10:19:47

ASP.NET組件設(shè)計(jì)

2009-07-22 13:24:24

ASP.NET MVC

2009-07-23 15:24:37

ASP.NET Ima

2011-08-23 10:58:59

2009-07-21 14:16:02

ASP.NET管道優(yōu)化

2009-07-27 16:19:59

ASP.NET報(bào)表控件

2009-07-27 14:24:16

ASP.NET訪問權(quán)限

2009-07-28 17:34:28

ASP.NET XML

2009-07-28 18:00:11

ASP.NET程序

2009-07-21 15:02:19

ASP.NET應(yīng)用程序
點(diǎn)贊
收藏

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