• 架構設計分享之權限系統(看圖說話)

    0
    數據庫 架構 C/C++ Go 12864 次瀏覽
     面一篇文章《最近架構隨想》,我提到架構設計的一些構想,其實也是對之前項目經驗的一些歸納及總結。今天我們就以權限系統作為切入點,談一談怎么設計權限系統以及怎么做到系統具有以下特性:
    1. Organized:如果系統組織比較好,可以起到事半功倍的效果。
    2. Encapsulated:對功能,結構,數據進行有效的封裝,會使系統維護變得更加容易。
    3. Reusable:對常用功能以及組件進行有效的封裝,可以使系統變得結構清晰且方便維護。
    4. Extensible:在設計系統的時候,如果很好的遵守OO的設計理念(OO的五大原則SOLID),即使系統做得很大,也會像火箭一樣直沖云霄!
    5. Replaceable:在很多時候我們需要考慮到系統,組件或者功能的可替換性,因為需求是會變的。
    6. Testable:做到系統的可測性,會大大幫助開發以及維護,對團隊開發以及分工協作起著非常重要的作用。
    7. Loose Coupling:隔離耦合是架構設計必須要考慮的一個因素,如果系統不能做到高內聚、低耦合,那么在維護,升級,新功能開發方面就會是一場噩夢!
    8. High Performance:高性能是系統設計必須重視的要點,用戶不可能忍受簡單頁面加載超過十秒,也不可能接受頁面操作頻繁卡死的情形,所以在架構設計的時候必須從數據庫,邏輯,服務以及UI進行合理的優化。
    9. Scalability:如果能做到前面的幾點,那么我有理由相信你的系統一定具備Scalability。
    10. Enjoy Your Life:最后一點也是最重要的一點,不要忙碌于重復的碼農工作,喝杯咖啡,享受代碼,早點回家,陪老婆、陪小孩,環球旅游,享受生活!

    廢話半天,下面就開始看圖說話環節:

    架構設計圖:

    架構設計分享之權限系統(看圖說話)

     

    部署及組件圖:

    架構設計分享之權限系統(看圖說話)

     

    詳細解決方案:

    架構設計分享之權限系統(看圖說話)

    01_Client:存放UI相關的項目,比如Winform, WPF,ASP.NET, Silverlight,ASP.NET MVC或者相關的Web Model及View Model項目。

    02_Hosting:存放與Service相關的項目,可以是Direct Service,Remoting Service,Web Service,WCF Service或者Web API Service 。

    03_Domain:業務邏輯相關的所有實體以及操作(根據OO的思想設計類以及類之間的關系)。

    04_Infrastructure:非業務方面的功能框架 (Data,Common,DataContract,AOP, IOC,Logging,Encryption,Email)。

    05_Database:數據庫項目(包含所有數據庫腳本,方便開發,部署以及維護)。

    06_Tests:所有測試項目(數據訪問測試,框架測試,業務邏輯測試,服務測試以及View Model測試)。

    07_ReferenceLibs:項目相關的外部引用。

    08_Tools:一些簡單的工具,方便開發,測試以及部署。

     

    各層執行序列 (調用Service之前需要調用Service Adapter,然后根據項目配置來決定調用WCF Service,Web API Service 還是直接DLL引用):

    架構設計分享之權限系統(看圖說話)

     

    權限系統設計 (支持多系統,Module多層級,Group多層級,多用戶來源,功能權限,數據權限等):

    架構設計分享之權限系統(看圖說話)

     

    權限系統數據庫關系圖(三個中心點:Users, Roles, Paths):

    架構設計分享之權限系統(看圖說話)

     

    權限系統所有表(包括主要表以及備份表,主要是針對中小型項目,如果大型項目則要采用分庫,分表以及分區的策略):

    架構設計分享之權限系統(看圖說話)

     

    數據庫項目——腳本注意事項以及如何一鍵執行所有數據庫腳本(方便管理數據庫腳本并且對團隊開發以及分工協作幫助很大):

    架構設計分享之權限系統(看圖說話)

     

    代碼生成器——T4完全生成數據庫,業務實體,業務層,服務層以及UI代碼 (之前也用Winform和WPF寫過代碼生成器,這是第一次使用T4生成整個項目,感覺非常好用,并且隨時修改隨時使用,而且還可以根據項目進行定制化)。

    架構設計分享之權限系統(看圖說話)

    這篇文章主要是看圖說話,所以如果你有什么反饋,心得或者建議,不妨留言,我會盡力在今天或者明天進行回復。

    如果您認為這篇文章還不錯或者有所收獲,不妨點擊一下右下角的(推薦)按鈕,因為你的支持是我繼續寫作,分享的最大的動力!

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色