學者對于VS2005性能指標的判定與開發整理
關于VS2005性能在此做了個分析,希望對大家有所幫助,并共同進步。由于原文件太大,此處無法上傳,所以大家有communitysever的可以從里面獲得然后反編譯為自己所用,沒有的就到網絡上搜索VS2005性能的文章。很多的。
Membership里共有四個大類:
◆scalablehosting:表示一切類的基類。
◆scalablehosting.configuration:一些配置的基本信息(有cookie的存放地址,名稱等)。
◆scalablehosting.profile:用戶的個性化信息。不同的用戶可能看到不同的界面和不同的配置。
◆scalablehosting.Security:安全性設置,就是用戶角色和權限的配置了,都在這里面。
我自己的開始是小部分的練習,就是從添加用戶,修改,刪除用戶,然后授予角色,設置特性開始的。所以請容許我按照我的思路來描述這些類,而不是一個類一個類的來講他們的作用。
添加用戶:
因為是***個小DEMO,所以需要做的前提事情很多,但以后這些就不需要做了,雖然看起來很麻煩,我也是費了一天的時間才調整好。但為了以后方便的使用,建議大家還是先這樣布置好。
首先在webconfig中,添加配置節。注意配置類型的修改,如果從communityserver中copy過來,是帶publickey的,這個我們在測試的時候可以去掉(當然AssemblyInfo.cs中的keyfile屬性內容設置為""),如果把publickey去掉,必須將memberrole.dll放在你的應用程序的根目錄下。注意配置節里凡是有關空間名稱的地方,都得把type修改成memberrole.dll中的空間名稱,因為communityserver中用的是自己擴展的類。
還有就是自己添加的appSettings里面的連接字符串的名字要和上面這些配置節的名字一致。對配置節不熟悉的人可以多參考一些配置節設置的資料,我上面也有一篇,寫的比較簡單。
其次是數據庫里面的設置,必須加入communityserver中的六個aspnet_開頭的表。而且還得把所有aspnet開頭的存儲過程copy過來。注意表aspnet_SchemaVersions雖然與其他表無關聯,但里面的內容很重要,也得copy過來。
添加用戶的主要方法用到的是SqlMembershipProvider.cs中的CreateUser()。我們先來說說用到的類(當然先得在你的應用程序里添加引用memberrole.dll然后在cs文件中,添加using ......)
membershipuser:其實就是membership表的一個實體類,注意這個類有一個類屬性[Serializable]表示可序列化的,也就是你可以把這個對象當成是一個只有一條記錄的dataTable,如果需要返回多條記錄,那就使用MembershipUserCollection,這個也是個[Serializable]的類,功能類似于DATASET。現在流行orm結構,也就是對象關系映射。直接通過操作實體類的方法而不是SQL語句來更新數據庫。
通過數據表生成實體類的方法有很多,己寫的工具或者codesmith+模板的形式都可以,網絡上一搜很多,此處題外話。
membership:這個就是對用戶進行增,刪,改的操作類,返回的當然就是membershipuser對象。注意membership的大部分方法都是static方法,也就是說不需要實例化membershi以直接使用它的方法
例如:membership.createuser(...);
我們可以看到VS2005性能,membership里的createuser有很多重載方法,其實最主要的就是說明一個用戶必須得有用戶名和密碼,其他都可忽略。所有的操作都其實都在參數最長的那個方法里,然后從這個方法調用Membership.Provider.CreateUser(...),其實provider就類似于一個工廠方法,通過它進行 Membership.Initialize(),然后在這個方法里通過查詢配置節來獲得究竟使用sqlprovider還是accessprovider,為VS2003使用的memberrole.dll只實現了sqlprovider方法,而VS2005里的還實現了access方法。這以后就去調用SqlMembershipProvider.cs中的createuser(..)方法。
這才是真正增加用戶的方法,這里可以看到參數的賻值,調用的存儲過程,以及錯誤的返回和判斷。
當我們只需要用戶名和密碼來添加用戶的時候,注意修改配置文件里的membership配置節的地方,將requiresUniqueEmail屬性改為false,這樣就不需要e-mail必須填寫了。
例子:兩個textbox(一個是用戶名txtname,一個是密碼txtpwd),一個按鈕(btn),然后在按鈕的click事件中直接寫:
雖然主要用到的方法是以上這幾個,但好多VS2005性能錯誤和安全的判斷都在SecUtility.cs,有興趣的話我們可以去關心它一下。#t#
Membership.CreateUser(txtname.Text,txtpwd.Text);就OK了,到aspnet_membership數據表中查看你添加的用戶吧。系統自動會把關聯表里的內容也添加好,看看aspnet_Users是不是也有內容。很簡單吧。