成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

ASP.NET多頻道網(wǎng)站架構(gòu)實(shí)現(xiàn)方法

2010-08-28 10:52:01來(lái)源:西部e網(wǎng)作者:

  主體架構(gòu)

  各頻道分別位于不同的Web Project(具有獨(dú)立的二級(jí)域名),并將所有的業(yè)務(wù)邏輯以及數(shù)據(jù)訪問功能封裝成Class Library,所有頻道共用這個(gè)Class Library。

  下面詳細(xì)介紹實(shí)現(xiàn)方法。

  假設(shè)網(wǎng)站有三個(gè)頻道,新聞、論壇以及博客,對(duì)應(yīng)的二級(jí)域名為"news"、"forum"、"blog"。除此之外,還需要另外定義兩個(gè)域名,分別用于網(wǎng)站首頁(yè)以及用戶注冊(cè)、登陸功能(基于Passport機(jī)制,本文后面將作詳細(xì)介紹),對(duì)應(yīng)域名為"homepage"、"passport"。

  1.配置各頻道URL

  a.配置hosts文件

  用文本編輯器打開hosts文件(位于c:\windows或winnt\system32\drivers\etc\),該文件中存放初始的域名解析信息。當(dāng)我們?cè)跒g覽器中請(qǐng)求某個(gè)URL時(shí),系統(tǒng)首先在hosts文件中查找相應(yīng)域名,如果找到則跳轉(zhuǎn)至指定IP,如果沒找到,則進(jìn)一步提交DNS進(jìn)行域名解析。

  配置很簡(jiǎn)單,格式形如"[IP][空格][域名]",每條數(shù)據(jù)對(duì)應(yīng)一行。下面為配置內(nèi)容:

  192.168.1.2 www.mysite.com

  192.168.1.2 passport.mysite.com

  192.168.1.3 news.mysite.com

  192.168.1.5 forum.mysite.com

  192.168.1.9 blog.mysite.com

  你可能已經(jīng)注意到了,各頻道對(duì)應(yīng)于不同的IP,這正是該架構(gòu)的開發(fā)靈活性所在。各頻道(Web Project)可以創(chuàng)建于不同的開發(fā)者電腦。通過(guò)將配置內(nèi)容同步到各臺(tái)電腦,可以方便的在各頻道間進(jìn)行頁(yè)面瀏覽,就像這些頻道位于你自己的電腦一樣!采用這種方式可以極大降低開發(fā)耦合性,每個(gè)頻道都是一個(gè)獨(dú)立的模塊,一個(gè)頻道中的Bug不會(huì)影響到另一個(gè)頻道。

  b.配置Web.Config

  考慮到各頻道二級(jí)域名有可能進(jìn)行調(diào)整,將相應(yīng)配置信息存放于Web.Config文件是一個(gè)好辦法。同樣的,該配置信息必須同步到各Web Project。下面為配置內(nèi)容:

<add key="SiteDomainName" value="mysite.com"/>
<add key="HomepageSiteURL" value="http://www.mysite.com/homepage/"/>
<add key="PassportSiteURL" value="http://passport.mysite.com/passport/"/>
<add key="NewsSiteURL" value="http://news.mysite.com/news/"/>
<add key="ForumSiteURL" value="http://forum.mysite.com/forum/"/>
<add key="BlogSiteURL" value="http://blog.mysite.com/blog/"/>
<add key="LocalSiteURL" value="/blog/"/>

  各配置項(xiàng)說(shuō)明如下

  SiteDomainName:站點(diǎn)域名,形如"mysite.com"、"mysite.com.cn"、"mysite.net"等。該配置項(xiàng)的使用方法將在后文介紹。

  LocalSiteURL:當(dāng)前頻道根路徑,也就是Web Project所在網(wǎng)站或虛擬目錄的路徑,以"/"開頭。該配置項(xiàng)主要用于頻道內(nèi)部的引用,比如圖片引用、頁(yè)面鏈接等。

  其余配置項(xiàng):用于頻道間的引用,比如頻道導(dǎo)航、功能調(diào)用等。

  2.創(chuàng)建Model部件

  在MVC模式組成中,Model部件包括所有的業(yè)務(wù)邏輯操作,其中也包含數(shù)據(jù)訪問操作。

  本方案將Model部件拆分成對(duì)象實(shí)體、對(duì)象操作以及數(shù)據(jù)訪問三部分,封裝成三個(gè)Class Library。

  由于Class Library設(shè)計(jì)本身就是一個(gè)很大的話題,本文就不再祥述了,有興趣的話可以參考一些相關(guān)資料。

  經(jīng)驗(yàn)分享

  上述的Model部件拆分方式適用于業(yè)務(wù)功能比較復(fù)雜的大型項(xiàng)目,要求團(tuán)隊(duì)內(nèi)部有著明確、細(xì)化的分工合作。但如?????? ?o㧟?果面對(duì)的是中小型項(xiàng)目,該方式很有可能成為開發(fā)效率的瓶頸。這主要是由項(xiàng)目特點(diǎn)決定的,中小型項(xiàng)目業(yè)務(wù)功能相比大型項(xiàng)目沒有那么復(fù)雜,開發(fā)人員數(shù)量也比較有限,往往一個(gè)人要負(fù)責(zé)整個(gè)模塊的開發(fā)。在這種情況下,架構(gòu)層次過(guò)于繁多,每次修改一個(gè)層時(shí),其他相關(guān)層也得跟著同步修改,這樣反而影響了開發(fā)效率。

  3.實(shí)現(xiàn)Passport機(jī)制

  很多網(wǎng)站都采用Session來(lái)存放個(gè)人信息,比如登錄信息,并以次作為用戶登錄與否的判斷依據(jù)。但Session有一個(gè)缺陷,就是無(wú)法在多個(gè)Web應(yīng)用中共享,一個(gè)Web應(yīng)用生成的Session只能由他自己使用。哪種方法可以在多個(gè)Web應(yīng)用中實(shí)現(xiàn)數(shù)據(jù)共享呢?答案是Cookie。Cookie將信息存放于客戶端, 并在需要時(shí)發(fā)送回服務(wù)器端。

  Passport,即通行證,是目前普遍采用的一種用戶身份認(rèn)證機(jī)制,簡(jiǎn)單來(lái)說(shuō)就是一次登錄,全站通行。這也正是我們的要求。

  這里討論的通行證機(jī)制基于Cookie,實(shí)現(xiàn)也比較方便。其中的關(guān)鍵點(diǎn)是Cookie的Domain屬性設(shè)置,Domain屬性表示Cookie信息回發(fā)的目標(biāo)域,也就是接收Cookie的域,接收Cookie的域必須與發(fā)送Cookie的域一致,否則無(wú)效。比如:發(fā)送域?yàn)?blog.mysite.com",則接收域可以設(shè)為"blog.mysite.com"或"mysite.com",而"news.mysite.com"和"blog.yoursite.com"為無(wú)效接收域。要想讓所有頻道都能接收到Cookie,必須將Domain屬性設(shè)置為不帶二級(jí)域名前綴的形式,如"mysite.com"、"mysite.com.cn"、"mysite.net"等。

  登錄成功后向客戶端發(fā)送相應(yīng)Cookie,其中可以包括一些全局信息,比如用戶編號(hào)、用戶名等。用戶退出時(shí)刪除相應(yīng)Cookie,特別要注意的是,刪除Cookie時(shí)也要設(shè)置正確的Domain屬性。

  關(guān)于該P(yáng)assport機(jī)制,還有兩個(gè)問題值得討論:

  a.Cookie的過(guò)期時(shí)間

  有兩種方案可以采用,一種是默認(rèn)方式,即不設(shè)置Cookie的Expires屬性,采用這種方案時(shí),Cookie存放于內(nèi)存中,在瀏覽器關(guān)閉前Cookie將一直存在,也就是一直處于登錄狀態(tài)。這種方式主要用于對(duì)信息安全要求不是很高的網(wǎng)站,比如娛樂休閑類網(wǎng)站;另一種是指定明確的過(guò)期時(shí)間,一般情況下會(huì)將用戶最后一次訪問網(wǎng)站的時(shí)間加上一個(gè)超時(shí)時(shí)間段作為過(guò)期時(shí)間,有點(diǎn)類似于asp中的session超時(shí)機(jī)制,這種方式主要用于對(duì)安全性要求比較高的網(wǎng)站,比如網(wǎng)上銀行、電子郵箱等。

  b.Cookie的信息安全

  由于Cookie是以明文方式傳遞數(shù)據(jù),不可避免的存在安全隱患,因此對(duì)重要數(shù)據(jù)的加密是非常有必要的。加密可以采用可逆算法,比如DES。

  4.創(chuàng)建Web Project

  前文已提過(guò),Web Project的創(chuàng)建比較靈活,既可以創(chuàng)建于不同的開發(fā)者電腦,也可以創(chuàng)建于同一臺(tái)電腦。這主要取決于開發(fā)團(tuán)隊(duì)規(guī)模。

  5.部署

  分別部署各頻道,設(shè)置二級(jí)域名,將Web.Config中的相關(guān)配置改為生產(chǎn)環(huán)境的實(shí)際數(shù)據(jù)。

  其中比較繁復(fù)的工作就是各頻道中相同部分的部署,比如說(shuō)網(wǎng)站頭部(Logo、導(dǎo)航欄等),網(wǎng)站底部(版權(quán)聲明、聯(lián)系方式等),圖片,CSS,JavaScript等。當(dāng)然也可以把這些公用資源單獨(dú)部署于一個(gè)頻道中,以供其他頻道調(diào)用,但這樣做就破壞了各頻道松耦合的特性,如果用于存放公用資源的頻道出了問題,那其余頻道也將無(wú)法正常使用。

  結(jié)束

  本文討論了asp.net中多頻道網(wǎng)站架構(gòu)的一種實(shí)現(xiàn)方法,由于涉及到的內(nèi)容較多,無(wú)法一一展開,但對(duì)其中的重點(diǎn)部分還是多加了點(diǎn)筆墨,希望對(duì)你有用:-)

關(guān)鍵詞:ASP.NET

贊助商鏈接:

主站蜘蛛池模板: 盘锦市| 乌兰察布市| 社旗县| 开封市| 新河县| 贵德县| 伊宁县| 钦州市| 尖扎县| 阿克苏市| 阜阳市| 竹溪县| 朝阳区| 昌吉市| 清原| 册亨县| 上蔡县| 滕州市| 塔河县| 木里| 宿松县| 华蓥市| 胶州市| 左云县| 登封市| 察隅县| 长汀县| 潮州市| 邮箱| 紫阳县| 明光市| 建昌县| 兴和县| 崇义县| 安平县| 垣曲县| 禄丰县| 文昌市| 牙克石市| 廉江市| 肥乡县|