asp.net|技巧
如今,個人化是大多數Web應用程式的一個關鍵區段。TechRepublic和Amazon就是典型的例子,它們能夠記住使用者的某些特徵。應用ASP.NET 1.x實現這一功能需要完成一些額外的工作,並要使用Session對象,但2.0版本簡化了個人化過程。
個性檔案
ASP.NET 2.0 Profile系統允許你輕鬆儲存使用者的相關資訊。你定義與每名使用者有關的屬性,並將它儲存在他們的個性檔案中。個性檔案資料可以用程式方便地訪問。與其它儲存檔案一樣,它必須被儲存,且個性檔案預設使用SQL Server。
Profile系統以提供者模型為基礎,特殊的Profile提供者負責將屬性值序列化和解序列化到某個資料倉儲中。.NET Framework預設使用一個SqlProfileProvider類,它使用一個SQL Server資料庫表來儲存資料。
系統配置
在使用ASP.NET 2.0的個性檔案特性之前,必須對Web伺服器進行正確配置,使其支援這一特性。預設情況下,個性檔案特性使用一個SQL Server終端,但你也可以建立自己的提供者。在本文中,我主要討論標準的SQL Server終端,它使用預設的SqlProfileProvider類。
SQL Server支援版本7.0、2000和2005。要配置一個支援SQL Server的系統,首先應設定資料庫伺服器,最後是ASP.NET平台。
.NET Framework 2.0中包含正確配置ASP.NET環境的工具。如果你使用了SQL Server 2005精簡版和Visual Studio,就不必進行配置。如果沒有應用上述程式,第一步是註冊一個SQL Server串連。使用隨.NET Framework安裝的命令列工具Aspnet_regsql.exe即可完成此項操作。在我的機器上,此工具的路徑為:
C:\Windows\Microsoft.NET\v2.0.50727\aspnet_regsql.exe
這個工具中包含大量的選項,你可以通過命令列選項(-?)詳細閱讀。在我的開發系統中,我使用現有的SQL Server 2000。下面的命令通過在指定伺服器上建立必要的資料庫來進行環境配置。
Aspnet_regsql.exe –A p –E –S database_server_name
命令列開關E告訴系統用目前使用者認證進行驗證。開關S允許你指定資料庫伺服器名稱。開關A說明增加哪個選項,後面的p指明增加個性檔案支援。執行此命令即可建立一個SQL Server資料庫。資料庫的預設名稱為aspnetdb,但你也可以用命令列開關d撤銷它,開關d允許你指定一個現有的資料庫。
現在已建立一個SQL Server環境,接下來應對ASP.NET 2.0進行配置,使其利用串連和個性檔案。進入IIS管理介面,查看ISS網站(Web Sites)屬性並選擇ASP.NET標籤,即可啟用ASP.NET環境屬性。選擇ASP.NET標籤上的編輯配置(Edit Configuration)按鈕。驗證(Authentication)標籤包含一個角色(Roles)區,其中的角色管理(Role Management)被啟用(應查看這一點)。預設的SQL Server(LocalSqlServer)連接字串在通用(General)標籤中指定。我的開發環境使用下面的連接字串:
data source= database_server_name;Integrated Security=SSPI;
Initial Catalog=aspnetdb;User Instance=false
將這些改變儲存在ASP.NET環境中,把它串連到前面配置的SQL Server執行個體中。配置好平台後,你就可以開始執行。
定義元素
個性檔案中使用的資料元素在web.config檔案中建立與儲存(即被儲存的資料值在那個檔案中定義)。實際值(對不同使用者而言)儲存在一個終端資料倉儲中。你可以指定每個屬性的名稱、資料類型和資料序列化的方式。
屬性的資料類型與.NET中的有效標準資料類型相同。序列化選項一般依賴於被儲存的資料類型,但共有四個序列化選項:
ProviderSpecific:預設Profile提供者決定如何序列化屬性值。
字串:屬性值轉換成一個字串。
Xml:屬性值轉換成XML形式。
二進位:屬性值轉換成二進位形式。
在屬性元素中定義的個性檔案元素包含在一個個性檔案元素中,它位於web.config檔案的system.web部分。列表A中的web.config包括一個應用前面個性檔案支援的個性檔案片斷。它將使用兩個個性檔案項目——FirstName和LastName——它們儲存字串值並允許匿名使用者。
匿名使用者和認證使用者均可應用個性檔案特性。前面的web.config檔案使用個性檔案元素的allowAnonymous屬性,並啟用應用程式匿名支援(anonymousIdentification元素),從而指定匿名支援。
使用代碼
正確配置環境後,就可以方便地在你的.NET代碼中應用個性檔案元素。列表B中的簡單C#代碼使用個性檔案元素來儲存並顯示資料值,它利用包含在System.Web命名空間中的Profile類。代碼中包含在代碼分離檔案後的ASP.NET檔案。
列表C包含定製代碼的代碼分離(codebehind)。第一個按鈕儲存個性檔案域中每個文本域的值。第二個按鈕從個性檔案域中恢複值,並用這些值填充文本域。
個人化更加簡化
個人化只是ASP.NET 2.0許多新特性中的一個。經過幾個配置步驟,你就可以通過標準的web.config檔案和Profile類編碼,方便地為應用程式增加個人化特性。