最近架構隨想

今天新加坡放假,閒來無事就發一篇博客:一則總結歸納項目構架經驗,審視並逐步提高自己;再者分享最近學習所得,希望各位能討論並給些建議。六月三十日從原來公司離職,七月一日入職新公司,不知不覺已經快一個月了。最近忙於學習新的行業知識以及項目的重構設計,沒有時間發博客,也沒有時間回覆郵件及博文評論,忘各位見諒!

今天發幾張項目重構設計草圖,如果大家對項目分層與文件夾結構比較感興趣,可以參考幾年前弦哥.Net項目分層與文件夾結構大全(最佳架子獎,吐槽獎,陰溝翻船獎揭曉),這次的架構方案基本是之前架構經驗第一次在保險行業的使用,希望各位能積極探討並給些意見!

整體方案:

根據個人經驗,架構決定項目的成敗以及高度,所以在編碼之前一定要設計好項目的整體規劃和架構。好的架構或者考慮比較全面到位的架構會極大的幫助團隊,對項目起到靈魂的作用;糟糕的設計往往會把整個項目組帶入泥潭或者惡性循環,對項目直接致命打擊!

迴歸正題:

  • 整個架構分爲Online(Web Application)和Offline(WPF Application)兩部分。
  • Online(Web Application)需要支持不同的設備及瀏覽器,所以採用Bootstrap和ASP.NET MVC with Razor作爲View,KnockoutJs作爲MVVM框架。UI Designer設計好UI,然後由前端工程師綁定相應的UI Model到UI,後端工程師則負責相應的OOAD以及業務處理。
  • Offline(WPF  Application)需要在沒有網絡的情況下能正常工作,所以採用WPF  XALM作爲View,MVVM Light作爲MVVM框架。UI和後端的處理以及任務分配和Online(Web Application)基本一致。
  • Services :設置了Switch功能,可以配置是否使用WCF或者Web API或者直接調用Dll。
  • Domain Model:始終是應用程序的核心,必須投入大量精力,按照面向對象的分析和設計 (OOAD) 進行設計同時按照OOP進行開發。
  • Infrastructure:主要包括數據訪問組件、通用權限框架、異常和日誌處理組件、IOC/AOP功能、緩存機制,郵件,配置等基礎或常用功能。
  • 行業知識:由於項目牽涉到具體的行業(保險業),所以在業務流程中創建了Insurance Engine,專門處理保險相關的基礎功能。
  • 權限系統:由於整個項目比較龐大,再加上其他系統也需要用到同樣的權限判斷,所以創建了一個新的權限數據庫,用來存儲及處理權限相關的所有數據及規則,所有用戶則來源於三個數據源(SQL Server, DB2和Active Directory)。
  • Unit Test:每一層都有單獨的單元測試,方便項目功能自測,維護,重構,升級以及管理。28-7-2014 12-31-12 AM

組件之間的詳細關係如下:

28-7-2014 12-27-11 AM

各層之間的執行順序如下:

28-7-2014 12-34-29 AM

權限系統:

  • 用戶來源於三個數據源(SQL Server, DB2和Active Directory)。
  • 現實世界和系統通過角色進行關聯,現實世界的用戶及組的變化儘量不要影響到系統。
  • 一個用戶可以有多個角色,一個角色也分配給多個用戶。
  • 權限分爲功能權限和數據權限。
  • 權限系統要提供給幾套系統使用,全部的接口通過Service的形式提供出來。

security

由於時間有限,設計可能存在諸多不足之處,如果大家有不同的意見或者建議,不妨在評論中指出,以便互相學習且共同提高!

發佈了101 篇原創文章 · 獲贊 7 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章