官术网_书友最值得收藏!

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

主站蜘蛛池模板: 琼结县| 保德县| 通州市| 敦化市| 陆川县| 尉犁县| 梁河县| 贵州省| 彩票| 九龙城区| 安泽县| 嘉义市| 修文县| 烟台市| 泸州市| 东源县| 南京市| 桐城市| 林甸县| 安图县| 巫溪县| 赤壁市| 正镶白旗| 元江| 长垣县| 理塘县| 泉州市| 永清县| 汉中市| 洮南市| 鲁山县| 西乡县| 麦盖提县| 通许县| 隆子县| 锡林郭勒盟| 静宁县| 汉沽区| 邳州市| 灌阳县| 彝良县|