演練:將 ASP.NET 輸出緩衝與 SQL Server 結合使用
此演練示範如何緩衝依賴於 SQL Server 資料庫中資料的 ASP.NET 頁。
ASP.NET 輸出緩衝的一項進階功能是 SQL 緩衝依賴項。SQL 緩衝依賴項使您可以緩衝依賴於 SQL Server 表中資料的頁。您可以配置 SQL Server 和 ASP.NET 以快取頁面請求,降低伺服器工作負載,直到頁所依賴的資料已在 SQL Server 中更新為止。對於相對保持靜態產品目錄或客戶端註冊資訊等資料而言,SQL 緩衝依賴項很有用。
本演練中闡釋的任務包括:
建立並配置頁,以顯示 Northwind 資料庫中的資料。
為 SQL 快取通知啟用資料庫。
在頁以及 Web.config 檔案中指定 SQL 緩衝依賴項。
對 Northwind 資料庫變更並查看緩衝行為。
先決條件
若要完成本演練,您需要:
對具有 Northwind 資料庫的 SQL Server 2000 或 SQL Server 2005 的訪問。
如果 SQL Server 與 Web 服務器安裝在不同的電腦中,則需要可以訪問 Northwind 資料庫的 SQL Server 帳戶的使用者名稱和密碼。
注意 |
如果您需要有關如何登入到 SQL Server 的資訊,請聯絡伺服器管理員。 |
Microsoft 資料訪問組件 (MDAC) 2.7 版或更高版本。
如果您使用的是 Windows XP 或 Windows Server 2003,那麼您已經有了 MDAC 2.7。但是,如果使用 Windows 2000,您可能需要升級您電腦上已經安裝的 MDAC。有關更多資訊,請參見 MSDN 文章 MDAC 安裝。
.NET Framework 2.0 版。
建立網站
如果您已在 Visual Web Developer 中建立了網站(請參見演練:在 Visual Web Developer 中建立基本網頁),則可以使用該網站並轉至本演練的後面部分“為 SQL Server 啟用快取通知”。否則,按照下面的步驟建立一個新的網站和網頁。
建立檔案系統網站
開啟 Visual Web Developer。
在[檔案] 功能表上單擊“建立網站”。(在 Visual Web Developer 速成版中,在[檔案] 功能表上單擊“建立”,然後單擊“網站”。)
出現“建立網站”對話方塊。
在“Visual Studio 已安裝的模板”之下單擊“ASP.NET 網站”。
在“位置”框中輸入要儲存網站頁面的檔案夾的名稱。
例如,鍵入檔案夾名 C:\WebSites。
在“語言”列表中,單擊您想使用的程式設計語言。
單擊“確定”。
Visual Web Developer 建立該檔案夾和一個名為 Default.aspx 的新頁。
為 SQL Server 啟用快取通知
必須配置 SQL Server 以就依賴資料中的更改向 ASP.NET 提供合適的通知。您需要具有管理特權才能設定管理員。
為 SQL Server 啟用快取通知
在 Windows“啟動”菜單中,指向“所有程式”,指向“附件”,然後單擊“命令提示字元”以開啟命令提示視窗。
在磁碟機中找到 Aspnet_regsql.exe 可執行檔。此檔案隨 .NET Framework 2.0 版安裝在下面的位置:
%windir%\Microsoft.NET\Framework\FrameworkVersion
確保 %windir% 表示 Windows 目錄並且 .NET Framework 版本為 2.0 或更高版本。該路徑可能看起來類似於下面這樣:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.40217
使用下面的命令為 Northwind 資料庫中的 Employees 表啟用快取通知:
aspnet_regsql.exe -S <Server> -U <Username> -P <Password> -ed -d Northwind -et -t Employees
注意 |
您需要具有管理特權,或管理帳戶和密碼。如果沒有此資訊,請與資料庫管理員聯絡。 |
將出現一條訊息,指示啟用資料庫的成功與失敗。下面的訊息指示成功:
Enabling the table for SQL cache dependency...Finished.
向項目中添加資料連線
要在 Visual Web Developer 中使用 SQL Server 資料庫,您需要向 Northwind 資料庫添加串連。
向項目添加資料來源
在“伺服器總管”(Visual Web Developer 速成版中為“資料庫總管”)中,右擊“資料連線”,然後單擊“添加串連”。
注意 |
“伺服器總管”(Visual Web Developer 速成版中為“資料庫總管”)通常停靠在方案總管後面。 |
如果“伺服器總管”(Visual Web Developer 速成版中為“資料庫總管”)不可見,則在“視圖”菜單中單擊“伺服器總管”(Visual Web Developer 速成版中為“資料庫總管”)。
如果顯示“選擇資料來源”對話方塊,則執行以下操作:
在“資料來源”列表中,單擊“Microsoft SQL Server”。
在“資料提供者”列表中,單擊“用於 SQL Server 的 .NET Framework 資料提供者”。
單擊“繼續”。
在“添加串連”對話方塊中,為資料庫提供詳細資料(伺服器名稱、登入憑據等),然後選擇 Northwind 資料庫。
單擊“確定”。
向網頁新增時間戳記和資料
現在可以建立網頁來示範緩衝處理。在本節中,您將添加一個時間戳記來跟蹤頁建立時間,並添加一個 GridView 控制項來查看 Northwind 資料庫的 Employees 表。
向網頁新增時間戳記和資料
切換到或開啟 Default.aspx 頁。
切換到“設計”視圖。
從工具箱的“標準”組中,將一個 Label 控制項拖到頁上,保留預設名稱 Label1。
在“伺服器總管”(Visual Web Developer 速成版中為“資料庫總管”)中,展開“資料連線”。
為以前建立的資料連線展開節點。
展開“表”節點。
將 Employees 表拖到頁上。
Visual Web Designer 建立一個 GridView 控制項,它配置為使用您所選擇的串連和表。
在“GridView 任務”菜單上,單擊“配置資料來源。
預設資料連線字串名稱 NorthwindConnectionString1 出現在“配置資料來源”嚮導的第一個步驟中。
單擊“下一步”。
在“配置 Select 語句”窗格中,選擇“指定來自表或視圖的列”。
在“名稱”列表中,單擊 Employees。
在“列”列表中,選擇 EmployeeID、LastName 和 FirstName 列。
單擊“下一步”。
單擊“完成”。
Visual Web Designer 配置 GridView 控制項以顯示您所選擇的資料。
注意 |
如果看到一條訊息詢問您是否要重新整理 GridView 控制項的欄位和鍵,單擊“是”。 |
雙擊頁的空白部分。
設計器產生 Page_Load 方法並切換視圖。
添加以下反白的代碼,以顯示指示頁建立的時間戳記:
Visual Basic 複製代碼Protected Sub Page_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Me.Load Label1.Text = System.DateTime.NowEnd Sub
C# 複製代碼protected void Page_Load(Object sender, System.EventArgs e){ Label1.Text = System.DateTime.Now.ToString();}
儲存該檔案。
測試不使用緩衝功能的頁
現在可以運行頁,並觀察不使用緩衝功能的行為。此時將載入頁並顯示當前伺服器時間,然後將檢索資料並將其放置在頁中。
測試不使用緩衝功能的頁
按 Ctrl+F5 運行該頁。
在瀏覽器中重新整理頁
注意,時間戳記隨著每次頁重新整理而更改。資料將保持相同。
為緩衝功能配置網頁
在本部分演練中,您將基於 Northwind 資料庫的 Employees 表為 SQL 緩衝依賴項配置頁。
為緩衝功能配置網頁
切換到“源”視圖。
在頁頂部,添加下面的指令以指示依賴項:
<%@ OutputCache Duration="3600" SqlDependency="Northwind:Employees" VaryByParam="none" %>
VaryByParam 屬性指示緩衝時 ASP.NET 是否應考慮頁參數(如查詢字串或發布值)。當 VaryByParam 設定為 none 時,將不考慮任何參數;無論提供什麼附加參數,都將向所有使用者發送相同的頁。將 VaryByParam 設定為 *(星號)表明,對於每個唯一的請求參數組合,將緩衝一個唯一頁。但是,將 VaryByParam 設定為 * 會快取頁面的許多不同版本,所以如果您知道緩衝變化所依據的參數,建議您在 VaryByParam 屬性中顯式指定這些參數。有關詳細資料,請參見快取頁面的多個版本。
在 Web.config 檔案中設定緩衝配置
除了前面部分中網頁的 OutputCache 聲明外,您需要在 Web.config 檔案中指定緩衝詳細資料。
建立和更新 Web.config 檔案
如果您的網站已具有 Web.config 檔案,請轉至步驟 4。
在方案總管中,右擊網站的名稱,然後單擊“添加新項”。
在“添加項”對話方塊中,單擊“Web 設定檔”,然後單擊“添加”。
請確保使用名稱 Web.config。
將下面的 XML 作為 system.web 元素的子級添加到 Web.config 檔案中:
<!-- caching section group --><caching> <sqlCacheDependency enabled = "true" pollTime = "1000" > <databases> <add name="Northwind" connectionStringName="NorthwindConnectionString1" pollTime = "1000" /> </databases> </sqlCacheDependency></caching>
注意 |
前面您在建立資料連線時,已建立了連接字串名稱 NorthwindConnectionString1。如果您的連接字串具有不同的名稱,請替換為該名稱。 |
注意 |
在連接字串中指定的帳號憑據必須具有足夠的特權來輪詢資料庫。 |
儲存檔案,然後將其關閉。
測試使用緩衝功能的頁
啟用緩衝後,重新整理頁時將不再導致時間戳記或資料庫查詢更新,因為 ASP.NET 將從緩衝中滿足頁請求。
測試使用緩衝功能的頁
更改資料
現在可以更改資料庫中的資料,並可看到緩衝被驗證,並建立了一個新頁。
更改資料
在“伺服器總管”(Visual Web Developer 速成版中為“資料庫總管”中),展開“資料連線”節點。
展開您先前建立的串連。
展開“表”節點。
右擊“Employees”,然後單擊“顯示表資料”。
通過編輯資料表中的任何欄位並確保它是網頁所顯示的欄位來更新資料庫。
或者也可以使用 SQL 窗格(如果 SQL 窗格不可見,則在“查詢設計工具”菜單中單擊“窗格”,然後單擊“SQL”)。直接輸入 SQL 命令,然後單擊“查詢設計工具”工具列中的“執行 SQL”按鈕。例如,運行下面的命令:
UPDATE dbo.Employees SET LastName = 'Doe' WHERE (EmployeeID = 5)
這將把僱員 5 的名稱更改為 Doe。
關閉資料的視圖。
測試 SQL 緩衝依賴項
現在可以測試頁,以查看資料和時間戳記是否已更改。
測試 SQL 緩衝依賴項
按 Ctrl+F5 運行該頁。
注意,時間戳記已更改,並顯示新資料。
按 Ctrl+F5 再次運行該頁。
這次時間戳記保持不變,因為資料未更改,並且現在正從緩衝中再次檢索該頁。
後續步驟
也可以使用其他參數來快取頁面。有關資訊,請參見演練:使用輸出緩衝增強網站效能。如果您不熟悉資料訪問,請參見演練:網頁中的基本資料訪問。