掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
前面一篇文章《最近架構(gòu)隨想》,我提到架構(gòu)設(shè)計的一些構(gòu)想,其實也是對之前項目經(jīng)驗的一些歸納及總結(jié)。今天我們就以權(quán)限系統(tǒng)作為切入點,談一談怎么設(shè)計權(quán)限系統(tǒng)以及怎么做到系統(tǒng)具有以下特性:

廢話半天,下面就開始看圖說話環(huán)節(jié):
架構(gòu)設(shè)計圖:
部署及組件圖:
詳細解決方案:
01_Client:存放UI相關(guān)的項目,比如Winform, WPF,ASP.NET, Silverlight,ASP.NET MVC或者相關(guān)的Web Model及View Model項目。
02_Hosting:存放與Service相關(guān)的項目,可以是Direct Service,Remoting Service,Web Service,WCF Service或者Web API Service 。
03_Domain:業(yè)務(wù)邏輯相關(guān)的所有實體以及操作(根據(jù)OO的思想設(shè)計類以及類之間的關(guān)系)。
04_Infrastructure:非業(yè)務(wù)方面的功能框架 (Data,Common,DataContract,AOP, IOC,Logging,Encryption,Email)。
05_Database:數(shù)據(jù)庫項目(包含所有數(shù)據(jù)庫腳本,方便開發(fā),部署以及維護)。
06_Tests:所有測試項目(數(shù)據(jù)訪問測試,框架測試,業(yè)務(wù)邏輯測試,服務(wù)測試以及View Model測試)。
07_ReferenceLibs:項目相關(guān)的外部引用。
08_Tools:一些簡單的工具,方便開發(fā),測試以及部署。
各層執(zhí)行序列 (調(diào)用Service之前需要調(diào)用Service Adapter,然后根據(jù)項目配置來決定調(diào)用WCF Service,Web API Service 還是直接DLL引用):
權(quán)限系統(tǒng)設(shè)計 (支持多系統(tǒng),Module多層級,Group多層級,多用戶來源,功能權(quán)限,數(shù)據(jù)權(quán)限等):
權(quán)限系統(tǒng)數(shù)據(jù)庫關(guān)系圖(三個中心點:Users, Roles, Paths):
權(quán)限系統(tǒng)所有表(包括主要表以及備份表,主要是針對中小型項目,如果大型項目則要采用分庫,分表以及分區(qū)的策略):
數(shù)據(jù)庫項目——腳本注意事項以及如何一鍵執(zhí)行所有數(shù)據(jù)庫腳本(方便管理數(shù)據(jù)庫腳本并且對團隊開發(fā)以及分工協(xié)作幫助很大):
代碼生成器——T4完全生成數(shù)據(jù)庫,業(yè)務(wù)實體,業(yè)務(wù)層,服務(wù)層以及UI代碼 (之前也用Winform和WPF寫過代碼生成器,這是***次使用T4生成整個項目,感覺非常好用,并且隨時修改隨時使用,而且還可以根據(jù)項目進行定制化)。
這篇文章主要是看圖說話,所以如果你有什么反饋,心得或者建議,不妨留言,我會盡力在今天或者明天進行回復(fù)。關(guān)于代碼分享或者開源的問題,由于目前是幫公司做的,所以還沒有時間和精力去抽取代碼,不過會根據(jù)反饋,然后在近期內(nèi)分享更多實現(xiàn)細節(jié)!
本文來自:http://www.cnblogs.com/KnightsWarrior/p/ACL.html

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流