經(jīng)驗(yàn)分享:
上述的Model部件拆分方式適用于業(yè)務(wù)功能比較復(fù)雜的大型項(xiàng)目,要求團(tuán)隊(duì)內(nèi)部有著明確、細(xì)化的分工合作。但如?????? ?o?果面對的是中小型項(xiàng)目,該方式很有可能成為開發(fā)效率的瓶頸。這主要是由項(xiàng)目特點(diǎn)決定的,中小型項(xiàng)目業(yè)務(wù)功能相比大型項(xiàng)目沒有那么復(fù)雜,開發(fā)人員數(shù)量也比較有限,往往一個人要負(fù)責(zé)整個模塊的開發(fā)。在這種情況下,架構(gòu)層次過于繁多,每次修改一個層時,其他相關(guān)層也得跟著同步修改,這樣反而影響了開發(fā)效率。
3.實(shí)現(xiàn)Passport機(jī)制
很多網(wǎng)站都采用Session來存放個人信息,比如登錄信息,并以次作為用戶登錄與否的判斷依據(jù)。但Session有一個缺陷,就是無法在多個Web應(yīng)用中共享,一個Web應(yīng)用生成的Session只能由他自己使用。哪種方法可以在多個Web應(yīng)用中實(shí)現(xiàn)數(shù)據(jù)共享呢?答案是Cookie。Cookie將信息存放于客戶端, 并在需要時發(fā)送回服務(wù)器端。
Passport,即通行證,是目前普遍采用的一種用戶身份認(rèn)證機(jī)制,簡單來說就是一次登錄,全站通行。這也正是我們的要求。
這里討論的通行證機(jī)制基于Cookie,實(shí)現(xiàn)也比較方便。其中的關(guān)鍵點(diǎn)是Cookie的Domain屬性設(shè)置,Domain屬性表示Cookie信息回發(fā)的目標(biāo)域,也就是接收Cookie的域,接收Cookie的域必須與發(fā)送Cookie的域一致,否則無效。比如:發(fā)送域?yàn)?blog.mysite.com",則接收域可以設(shè)為"blog.mysite.com"或"mysite.com",而"news.mysite.com"和"blog.yoursite.com"為無效接收域。要想讓所有頻道都能接收到Cookie,必須將Domain屬性設(shè)置為不帶二級域名前綴的形式,如"mysite.com"、"mysite.com.cn"、"mysite.net"等。
登錄成功后向客戶端發(fā)送相應(yīng)Cookie,其中可以包括一些全局信息,比如用戶編號、用戶名等。用戶退出時刪除相應(yīng)Cookie,特別要注意的是,刪除Cookie時也要設(shè)置正確的Domain屬性。
關(guān)于該P(yáng)assport機(jī)制,還有兩個問題值得討論:
a.Cookie的過期時間
有兩種方案可以采用,一種是默認(rèn)方式,即不設(shè)置Cookie的Expires屬性,采用這種方案時,Cookie存放于內(nèi)存中,在瀏覽器關(guān)閉前Cookie將一直存在,也就是一直處于登錄狀態(tài)。這種方式主要用于對信息安全要求不是很高的網(wǎng)站,比如娛樂休閑類網(wǎng)站;另一種是指定明確的過期時間,一般情況下會將用戶最后一次訪問網(wǎng)站的時間加上一個超時時間段作為過期時間,有點(diǎn)類似于asp中的session超時機(jī)制,這種方式主要用于對安全性要求比較高的網(wǎng)站,比如網(wǎng)上銀行、電子郵箱等。
b.Cookie的信息安全
由于Cookie是以明文方式傳遞數(shù)據(jù),不可避免的存在安全隱患,因此對重要數(shù)據(jù)的加密是非常有必要的。加密可以采用可逆算法,比如DES。
4.創(chuàng)建Web Project
前文已提過,Web Project的創(chuàng)建比較靈活,既可以創(chuàng)建于不同的開發(fā)者電腦,也可以創(chuàng)建于同一臺電腦。這主要取決于開發(fā)團(tuán)隊(duì)規(guī)模。
5.部署
分別部署各頻道,設(shè)置二級域名,將Web.Config中的相關(guān)配置改為生產(chǎn)環(huán)境的實(shí)際數(shù)據(jù)。
其中比較繁復(fù)的工作就是各頻道中相同部分的部署,比如說網(wǎng)站頭部(Logo、導(dǎo)航欄等),網(wǎng)站底部(版權(quán)聲明、聯(lián)系方式等),圖片,CSS,JavaScript等。當(dāng)然也可以把這些公用資源單獨(dú)部署于一個頻道中,以供其他頻道調(diào)用,但這樣做就破壞了各頻道松耦合的特性,如果用于存放公用資源的頻道出了問題,那其余頻道也將無法正常使用。
結(jié)束
本文討論了asp.net中多頻道網(wǎng)站架構(gòu)的一種實(shí)現(xiàn)方法,由于涉及到的內(nèi)容較多,無法一一展開,但對其中的重點(diǎn)部分還是多加了點(diǎn)筆墨,希望對你有用
上述的Model部件拆分方式適用于業(yè)務(wù)功能比較復(fù)雜的大型項(xiàng)目,要求團(tuán)隊(duì)內(nèi)部有著明確、細(xì)化的分工合作。但如?????? ?o?果面對的是中小型項(xiàng)目,該方式很有可能成為開發(fā)效率的瓶頸。這主要是由項(xiàng)目特點(diǎn)決定的,中小型項(xiàng)目業(yè)務(wù)功能相比大型項(xiàng)目沒有那么復(fù)雜,開發(fā)人員數(shù)量也比較有限,往往一個人要負(fù)責(zé)整個模塊的開發(fā)。在這種情況下,架構(gòu)層次過于繁多,每次修改一個層時,其他相關(guān)層也得跟著同步修改,這樣反而影響了開發(fā)效率。
3.實(shí)現(xiàn)Passport機(jī)制
很多網(wǎng)站都采用Session來存放個人信息,比如登錄信息,并以次作為用戶登錄與否的判斷依據(jù)。但Session有一個缺陷,就是無法在多個Web應(yīng)用中共享,一個Web應(yīng)用生成的Session只能由他自己使用。哪種方法可以在多個Web應(yīng)用中實(shí)現(xiàn)數(shù)據(jù)共享呢?答案是Cookie。Cookie將信息存放于客戶端, 并在需要時發(fā)送回服務(wù)器端。
Passport,即通行證,是目前普遍采用的一種用戶身份認(rèn)證機(jī)制,簡單來說就是一次登錄,全站通行。這也正是我們的要求。
這里討論的通行證機(jī)制基于Cookie,實(shí)現(xiàn)也比較方便。其中的關(guān)鍵點(diǎn)是Cookie的Domain屬性設(shè)置,Domain屬性表示Cookie信息回發(fā)的目標(biāo)域,也就是接收Cookie的域,接收Cookie的域必須與發(fā)送Cookie的域一致,否則無效。比如:發(fā)送域?yàn)?blog.mysite.com",則接收域可以設(shè)為"blog.mysite.com"或"mysite.com",而"news.mysite.com"和"blog.yoursite.com"為無效接收域。要想讓所有頻道都能接收到Cookie,必須將Domain屬性設(shè)置為不帶二級域名前綴的形式,如"mysite.com"、"mysite.com.cn"、"mysite.net"等。
登錄成功后向客戶端發(fā)送相應(yīng)Cookie,其中可以包括一些全局信息,比如用戶編號、用戶名等。用戶退出時刪除相應(yīng)Cookie,特別要注意的是,刪除Cookie時也要設(shè)置正確的Domain屬性。
關(guān)于該P(yáng)assport機(jī)制,還有兩個問題值得討論:
a.Cookie的過期時間
有兩種方案可以采用,一種是默認(rèn)方式,即不設(shè)置Cookie的Expires屬性,采用這種方案時,Cookie存放于內(nèi)存中,在瀏覽器關(guān)閉前Cookie將一直存在,也就是一直處于登錄狀態(tài)。這種方式主要用于對信息安全要求不是很高的網(wǎng)站,比如娛樂休閑類網(wǎng)站;另一種是指定明確的過期時間,一般情況下會將用戶最后一次訪問網(wǎng)站的時間加上一個超時時間段作為過期時間,有點(diǎn)類似于asp中的session超時機(jī)制,這種方式主要用于對安全性要求比較高的網(wǎng)站,比如網(wǎng)上銀行、電子郵箱等。
b.Cookie的信息安全
由于Cookie是以明文方式傳遞數(shù)據(jù),不可避免的存在安全隱患,因此對重要數(shù)據(jù)的加密是非常有必要的。加密可以采用可逆算法,比如DES。
4.創(chuàng)建Web Project
前文已提過,Web Project的創(chuàng)建比較靈活,既可以創(chuàng)建于不同的開發(fā)者電腦,也可以創(chuàng)建于同一臺電腦。這主要取決于開發(fā)團(tuán)隊(duì)規(guī)模。
5.部署
分別部署各頻道,設(shè)置二級域名,將Web.Config中的相關(guān)配置改為生產(chǎn)環(huán)境的實(shí)際數(shù)據(jù)。
其中比較繁復(fù)的工作就是各頻道中相同部分的部署,比如說網(wǎng)站頭部(Logo、導(dǎo)航欄等),網(wǎng)站底部(版權(quán)聲明、聯(lián)系方式等),圖片,CSS,JavaScript等。當(dāng)然也可以把這些公用資源單獨(dú)部署于一個頻道中,以供其他頻道調(diào)用,但這樣做就破壞了各頻道松耦合的特性,如果用于存放公用資源的頻道出了問題,那其余頻道也將無法正常使用。
結(jié)束
本文討論了asp.net中多頻道網(wǎng)站架構(gòu)的一種實(shí)現(xiàn)方法,由于涉及到的內(nèi)容較多,無法一一展開,但對其中的重點(diǎn)部分還是多加了點(diǎn)筆墨,希望對你有用