溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2021-07-15 15:01:16 來源:億速云 閱讀:104 作者:Leah 欄目:編程語言

本篇文章為大家展示了ASP.NET中怎么訪問數(shù)據(jù),內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

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

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

其次,給緩存的項(xiàng)分配的有效期不要太短。很快到期的項(xiàng)會(huì)導(dǎo)致緩存中不必要的周轉(zhuǎn),并且經(jīng)常導(dǎo)致更多的代碼清除和垃圾回收工作。若關(guān)心此問題,請(qǐng)監(jiān)視與 ASP.NET Applications 性能對(duì)象關(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ù)可能很有效,但是自定義和瀏覽器定向會(huì)很快抵銷所獲得的額外功效。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)更多信息,請(qǐng)參見 SqlDataReader 類。有關(guān) ASP.NET訪問數(shù)據(jù)的信息,請(qǐng)參見通過 ASP.NET訪問數(shù)據(jù)。

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

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

避免單線程單元 (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)置對(duì)象可用于 COM 對(duì)象。前者也是一種性能優(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 線程。這可能對(duì)性能有不利影響,因?yàn)橐獦?gòu)造頁面就必須完成 MTA 和 STA 線程之間的封送處理。

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

***機(jī)制是推遲對(duì)象的創(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 組件存儲(chǔ)在可以由構(gòu)造它的線程以外的其他線程訪問的共享資源里。這類資源包括像緩存和會(huì)話狀態(tài)這樣的資源。即使 STA 線程調(diào)用 STA COM 組件,也只有構(gòu)造此 STA COM 組件的線程能夠?qū)嶋H為該調(diào)用服務(wù),而這要求封送處理對(duì)創(chuàng)建者線程的調(diào)用。

上述內(nèi)容就是ASP.NET中怎么訪問數(shù)據(jù),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI