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

字號(hào):

主體架構(gòu)
    各頻道分別位于不同的Web Project(具有獨(dú)立的二級(jí)域名),并將所有的業(yè)務(wù)邏輯以及數(shù)據(jù)訪問(wèn)功能封裝成Class Library,所有頻道共用這個(gè)Class Library。
    下面詳細(xì)介紹實(shí)現(xiàn)方法。
    假設(shè)網(wǎng)站有三個(gè)頻道,新聞、論壇以及博客,對(duì)應(yīng)的二級(jí)域名為"news"、"forum"、"blog"。除此之外,還需要另外定義兩個(gè)域名,分別用于網(wǎng)站首頁(yè)以及用戶(hù)注冊(cè)、登陸功能(基于Passport機(jī)制,本文后面將作詳細(xì)介紹),對(duì)應(yīng)域名為"homepage"、"passport"。
    1.配置各頻道URL
    a.配置hosts文件
    用文本編輯器打開(kāi)hosts文件(位于c:\windows或winnt\system32\drivers\etc\),該文件中存放初始的域名解析信息。當(dāng)我們?cè)跒g覽器中請(qǐng)求某個(gè)URL時(shí),系統(tǒng)首先在hosts文件中查找相應(yīng)域名,如果找到則跳轉(zhuǎn)至指定IP,如果沒(méi)找到,則進(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)的開(kāi)發(fā)靈活性所在。各頻道(Web Project)可以創(chuàng)建于不同的開(kāi)發(fā)者電腦。通過(guò)將配置內(nèi)容同步到各臺(tái)電腦,可以方便的在各頻道間進(jìn)行頁(yè)面瀏覽,就像這些頻道位于你自己的電腦一樣!采用這種方式可以極大降低開(kāi)發(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)站或虛擬目錄的路徑,以"/"開(kāi)頭。該配置項(xiàng)主要用于頻道內(nèi)部的引用,比如圖片引用、頁(yè)面鏈接等。
    其余配置項(xiàng):用于頻道間的引用,比如頻道導(dǎo)航、功能調(diào)用等。
    2.創(chuàng)建Model部件
    在MVC模式組成中,Model部件包括所有的業(yè)務(wù)邏輯*作,其中也包含數(shù)據(jù)訪問(wèn)*作。
    本方案將Model部件拆分成對(duì)象實(shí)體、對(duì)象*作以及數(shù)據(jù)訪問(wèn)三部分,封裝成三個(gè)Class Library。
    由于Class Library設(shè)計(jì)本身就是一個(gè)很大的話題,本文就不再祥述了,有興趣的話可以參考一些相關(guān)資料。