摘要:描述如何建立新的 ASP.NET 成員關係、角色管理和個人化服務,從而使用常規的 SQL Server 代替 Microsoft SQL Server Express。
注本文最初發表於 Scott 的網路日記。請在此處加入討論。
本頁內容
|
快速回顧:新的 ASP.NET 2.0 應用程式服務是什嗎? |
|
預設的 SQL Express 提供者 |
|
小結 |
快速回顧:新的 ASP.NET 2.0 應用程式服務是什嗎?
Microsoft ASP.NET 2.0 包含許多內建的“構造塊”應用程式服務。我們稱其為“構造塊”的原因是,它們是有用的核心架構,從而能夠在超常情況下用於當前的 Web 應用程式 — 因此,它們可以大大提高生產效率並節約開發人員的時間。
這些構造塊包括:
• |
成員關係 API(用於系統管理使用者名/密碼和安全憑據)以及角色 API(支援將使用者映射到邏輯組)。 |
• |
設定檔 API,用於儲存訪問 Web 網站的已驗證使用者和匿名使用者的任意屬性(例如,郵編、性別、主題喜好設定等)。 |
• |
個人化 API,用於儲存控制項自訂喜好設定(通常與 ASP.NET 2.0 中的 WebPart 功能一起使用)。 |
• |
狀態監視 API,用於跟蹤和收集有關運行狀態的資訊和 Web 應用程式內部發生的任何錯誤。 |
• |
網站導覽 API,用於定義應用程式內部的階層,以及根據當前傳入使用者在網站內的位置來構建特定於內容相關的導航 UI(菜單、樹視圖、詳細路徑跟蹤)。 |
ASP.NET 應用程式服務 API 可插接且實現過程不可知,這意味著,API 不對資料存放區位置的詳細資料進行寫入程式碼。相反,API 調入“提供者”,而“提供者”是實現特定“提供者約定”(定義為一個抽象類別,具有 API 期望實現的一組定義好的方法/屬性)的類。
ASP.NET 2.0 隨附有許多內建提供者,包括:
• |
針對本地 SQL Express 資料庫的 Microsoft SQL Server Express 提供者。 |
• |
針對成熟的 SQL Server 的 Microsoft SQL Server 2000/2005 提供者。 |
• |
針對 AD 或 ADAM 實現的活動目錄提供者。 |
• |
繫結檔案系統上 XML 檔案的 XML 提供者(用於網站導覽)。 |
該模型的優勢在於,如果您不喜歡隨附的現有提供者,或者希望針對已經使用的現有資料存放區整合這些 API,那麼只需實現一個提供者並將其插入模型即可。例如:您或許已經有一個儲存使用者名稱/密碼的現有資料庫,或者一個需要整合的現有 LDAP 系統。只需將成員關係提供者約定實現為一個類,並在應用程式的 web.config 檔案中註冊(後文將詳細說明),然後對 ASP.NET 中成員關係 API 的所有調用將委託給代碼。
返回頁首
預設的 SQL Express 提供者
坦白說,大多數 ASP.NET 2.0 應用程式服務均配置為使用內建的 SQL Express 提供者。在第一次使用一個應用程式服務時,該提供者將自動建立和提供一個新的資料庫,並提供一種非常簡單的入門方法,而無需過多的安裝步驟(只要有 SQL Express 就可以進行)。請注意,SQL Express 資料庫也可以升級為在成熟的 SQL Server 執行個體上下文中運行。因此,使用 SQL Express 進行開發的應用程式可輕鬆升級為高容量、叢集的容錯移轉安全 8P SQL 盒,與此同時所開發的應用程式將邁向更大的成功。
如何將提供者從使用 SQL Express 更改為使用 SQL Server?
如果要使用成熟的 SQL Server 2000 或 SQL Server 2005 資料庫執行個體(而不是 SQL Express),可按照以下步驟執行:
步驟 1:建立或擷取一個空白的 SQL 資料庫執行個體
步驟將建立或擷取一個連接字串,該字串指向一個空的標準 SQL 資料庫執行個體。
步驟 2:提供您的 SQL 資料庫和 ASP.NET 架構
在系統中開啟一個命令列視窗,並運行與 ASP.NET 2.0 一起安裝的 aspnet_regsql.exe 工具 + 生產力,該工具 + 生產力位於 C:\WINDOWS\Microsoft.NET\Framework\v2.0.xyz 目錄。
請注意,該工具 + 生產力可以在基於 GUI 的模式下運行,也可以與命令列開關一起運行(添加一個“-?”標記即可查看所有開關選項)。
通過這個嚮導,您能夠演練如何為 ASP.NET 2.0 隨附的內建 SQL 提供者建立架構、表格和預存程序。圖 1 至圖 5 展示循序漸進的演練過程。
圖 1. SQL Server 安裝嚮導,歡迎畫面
圖 2. SQL Server 安裝嚮導,配置應用程式服務
圖 3. SQL Server 安裝嚮導,選擇伺服器和資料庫
圖 4. SQL Server 安裝嚮導,確認設定
圖 5. SQL Server 安裝嚮導完成
演練嚮導完成後,將安裝和配置所有支援應用程式服務的資料庫結構描述和預存程序。(註:我們還提供了上述架構目錄下的原始 .sql 檔案,如果 DBA 想要確切知道內部發生的事情,可以手動演練和/或運行這些檔案來安裝 DB。)
步驟 3:使 Web.config 檔案指向新的 SQL 資料庫
現在,ASP.NET 2.0 支援 web.config 檔案中一個名為 的新區段,它(顯然)用於儲存連接字串。從管理角度看,好處之一是現在新的 ASP.NET MMC 嵌入式管理單元可提供一種基於 GUI 的方式來配置和管理這些連接字串( 6 所示)。
圖 6. ASP.NET 管理頁面中的連接字串
ASP.NET 2.0 現在還支援加密任何儲存在 web.config 檔案中的區段,因此您可以安全地儲存私人資料(例如,連接字串),而不必編寫任何加密代碼。
ASP.NET 2.0 隨附有一個名為 LocalSqlServer 的內建連接字串,預設情況下,它配置為使用 SQL Express 資料庫,以及成員關係、角色、個人化、設定檔和狀態監視等服務。
讓應用程式自動利用新建立的 SQL 資料庫的最簡單的方法是,在應用程式的本地 web.config 中,替換該 LocalSqlServer 設定的連接字串值。
例如,如果我在本機電腦的 appservicesdb 資料庫執行個體中建立了資料庫,並使用 Windows 整合安全進行串連,那麼我將更改本地的 web.config 檔案來指定這項操作。
<configuration> <connectionStrings> <remove name="LocalSqlServer"/> <add name="LocalSqlServer" connectionString="Data Source=localhost; Initial Catalog=appservicesdb; Integrated Security=True" providerName="System.Data.SqlClient"/> </connectionStrings></configuration>
單擊“儲存”,現在所有的內建應用程式程式服務都會使用新建立和新定義的 SQL Server 資料庫。
注這種方法的一個缺點是,重用了 LocalSqlServer 連接字串名 — 如果我在另一台機器上部署資料庫,將感覺很彆扭。如果想將它命名為自己的連接字串名,只需添加一個全新的連接字串,然後指定現有提供者使用新的連接字串名來代替預設的 LocalSqlServer 連接字串。
返回頁首
小結
雖然 ASP.NET 2.0 提供的應用程式服務預設使用 SQL Server 2005 Express,但是將其更改為使用 SQL Server 2000 或 2005 是一件相當簡單的事情。一旦變更,您就能夠享受這些資料庫引擎的功能所帶來的優點了。