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