經驗分享
上述的Model部件拆分方式適用於業務功能比較復雜的大型項目要求團隊內部有著明確細化的分工合作但如?????? ?o?果面對的是中小型項目該方式很有可能成為開發效率的瓶頸這主要是由項目特點決定的中小型項目業務功能相比大型項目沒有那麼復雜開發人員數量也比較有限往往一個人要負責整個模塊的開發在這種情況下架構層次過於繁多每次修改一個層時其他相關層也得跟著同步修改這樣反而影響了開發效率
實現Passport機制
很多網站都采用Session來存放個人信息比如登錄信息並以次作為用戶登錄與否的判斷依據但Session有一個缺陷就是無法在多個Web應用中共享一個Web應用生成的Session只能由他自己使用哪種方法可以在多個Web應用中實現數據共享呢?答案是CookieCookie將信息存放於客戶端 並在需要時發送回服務器端
Passport即通行證是目前普遍采用的一種用戶身份認證機制簡單來說就是一次登錄全站通行這也正是我們的要求
這裡討論的通行證機制基於Cookie實現也比較方便其中的關鍵點是Cookie的Domain屬性設置Domain屬性表示Cookie信息回發的目標域也就是接收Cookie的域接收Cookie的域必須與發送Cookie的域一致否則無效比如發送域為blogmysitecom則接收域可以設為blogmysitecom或mysitecom而newsmysitecom和blogyoursitecom為無效接收域要想讓所有頻道都能接收到Cookie必須將Domain屬性設置為不帶二級域名前綴的形式如mysitecommysitecomcnmysitenet等
登錄成功後向客戶端發送相應Cookie其中可以包括一些全局信息比如用戶編號用戶名等用戶退出時刪除相應Cookie特別要注意的是刪除Cookie時也要設置正確的Domain屬性
關於該Passport機制還有兩個問題值得討論
aCookie的過期時間
有兩種方案可以采用一種是默認方式即不設置Cookie的Expires屬性采用這種方案時Cookie存放於內存中在浏覽器關閉前Cookie將一直存在也就是一直處於登錄狀態這種方式主要用於對信息安全要求不是很高的網站比如娛樂休閒類網站;另一種是指定明確的過期時間一般情況下會將用戶最後一次訪問網站的時間加上一個超時時間段作為過期時間有點類似於asp中的session超時機制這種方式主要用於對安全性要求比較高的網站比如網上銀行電子郵箱等
bCookie的信息安全
由於Cookie是以明文方式傳遞數據不可避免的存在安全隱患因此對重要數據的加密是非常有必要的加密可以采用可逆算法比如DES
創建Web Project
前文已提過Web Project的創建比較靈活既可以創建於不同的開發者電腦也可以創建於同一台電腦這主要取決於開發團隊規模
部署
分別部署各頻道設置二級域名將WebConfig中的相關配置改為生產環境的實際數據
其中比較繁復的工作就是各頻道中相同部分的部署比如說網站頭部(Logo導航欄等)網站底部(版權聲明聯系方式等)圖片CSSJavaScript等當然也可以把這些公用資源單獨部署於一個頻道中以供其他頻道調用但這樣做就破壞了各頻道松耦合的特性如果用於存放公用資源的頻道出了問題那其余頻道也將無法正常使用
結束
本文討論了aspnet中多頻道網站架構的一種實現方法由於涉及到的內容較多無法一一展開但對其中的重點部分還是多加了點筆墨希望對你有用:)
[] []
From:http://tw.wingwit.com/Article/program/net/201311/15772.html