- .NET Web高級開發
- 羅江華 朱永光編著
- 982字
- 2018-12-29 13:19:40
1.1.2 個性化服務
另一個要介紹的服務是個性化,它提供了一種現成的解決方案,用于解決存儲站點用戶的個性化設置問題。目前,通常的解決方法是存儲在Cookie、后端數據庫或這兩者中。無論這些設置存儲在何處,ASP.NET 1.x都不能提供什么幫助。這需要由你來設置和管理后端數據存儲,以及使用經過身份驗證的用戶名、Cookie或其他某種機制來關聯個性化數據。
使用ASP.NET 2.0中新的個性化設置服務,可以方便地在Web應用程序中創建自定義體驗。使用Profile對象可以方便地為用戶賬戶生成固定的強類型數據存儲區,還可以生成高度自定義的、基于關系的體驗。同時,利用Web部件和個性化設置服務,還可使網站訪問者能夠完全控制站點的布局和行為,這樣站點對訪問者來說是完全可自定義的。現在生成個性化設置方案比以前要方便得多,也容易得多,需要實現的代碼和花費的精力都顯著減少。
ASP.NET 2.0提供了一個在System.Web.Profile命名空間中定義的預定義的提供程序:SqlProfileProvider。它從SQL Server 2005 Express中的aspnetdb.mdf數據庫的一個表中讀取配置文件數據,并把配置文件數據寫入其中。請求開始時,配置文件提供程序會從一個數據存儲中讀取配置文件值,并在請求結束時,把修改的值返回到數據存儲中。同時配置文件表中為每個用戶包含了一個記錄。事實上系統默認的配置往往不能滿足我們的需求,比如我們需要把配置文件信息存儲到另一個SQL Server數據庫的表中,或者要存儲到其他數據庫系統(Oracle),這時我們需要做的仍然是編寫一個自定義的提供程序。如在.Net PetShop 4.0中通過重寫ProfileProvider里的部分方法并結合工廠模式,實現在自己的數據庫里記錄自己想要的個性化用戶信息。主要實現在PetShop.Profile命名空間中,其封裝類為PetShopProfileProvider,該類繼承自.Net框架ProfileProvider類,然后通過重寫Initialize、SettingsPropertyValue Collection、SetPropertyValues、DeleteProfiles、DeleteProfiles、DeleteInactiveProfiles等一系列方法來實現。最后通過配置文件來完成整個自定義實現過程。有興趣的讀者可以去仔細研究,確實是一個不錯的例子。
小提示
(1)由于一個提供程序的契約的所有方法和屬性都標記成了抽象,所以所有自定義的提供程序必須實現所有成員。但是一些提供程序的方法不需要實現,這時可以采用一個空的實現或者拋出一個異常:
throw new Exception("The method or operation is not implemented.")
(2)在保證內部表結構布局不變的情況下,可以采用修改程序的Web.Config文件中的連接字符串,來將數據存儲方式改為SQL Server 2000或SQL Server 2005。
(3).NET Framework本身提供了一個ProviderException類,出現有關異常的詳細信息,適當的時候可以直接使用或派生其子類來處理系統異常。
(4)提供程序是ASP.NET 2.0中最重要的特性之一,有關更多的信息和代碼示例,請訪問微軟資源:http://msdn2.microsoft.com/zh-cn/asp.net/aa336558.aspx。
- Mastering Mesos
- Mastering Spark for Data Science
- Ansible Quick Start Guide
- 并行數據挖掘及性能優化:關聯規則與數據相關性分析
- 最后一個人類
- Hands-On Linux for Architects
- 大數據處理平臺
- 統計策略搜索強化學習方法及應用
- Docker High Performance(Second Edition)
- 嵌入式操作系統
- 愛犯錯的智能體
- Machine Learning with Apache Spark Quick Start Guide
- Ansible 2 Cloud Automation Cookbook
- Spark大數據商業實戰三部曲:內核解密|商業案例|性能調優
- 計算機應用基礎實訓(職業模塊)