1、前言web
做爲小菜鳥第一次寫博客的我還有點小激動,最近開始打算着手寫一個屬於本身架構。算下來差很少最近花一週多的下班時間了來寫這個框架,原本想總體架構開發完成測試完成後才寫博客,怕本身沒時間或失去動力,就先把本身架構設計拿出來分享一下,在下一章我會把總體代碼公佈出來,總體代碼。數據庫
在剛開始搭建框架時,首先考慮的是簡單輕巧結構清晰,此次搭建大多也是靠着本身想象去設計,其中也有大牛的參考,無論作得怎麼樣,這也是對本身技術能力的提高(從小菜鳥到菜鳥的過程,^_^)相信本身之後會作得更好。也但願大牛們和大大牛們的指點。不要罵小菜鳥喲,個人當心靈是很脆弱的哦!O(∩_∩)O哈哈~廢話很少說了,開始進入主題。api
2、結構圖緩存
上圖是本項目框架RDF的總體架構,在每一層模塊中都只寫了基本結構,只簡單的標明瞭他們的關係,詳細將在下面介紹。架構
上圖是在項目中的RDF的架構圖。mvc
3、總體結構說明框架
如今開始從下往上的介紹:測試
一、Infrastructure(基礎設施層)
網站
RDF.Infrastructure:這個類庫提供了總體架構的基礎核心功能,主要用於與數據有關的操做,例如數據庫、緩存、mongoDB等。這裏Orm框架我用的是SqlSugar,很是輕巧的一個Orm框架,你們有興趣也能夠去官網看一下。這裏提供了公共的倉儲封裝了經常使用的方法和緩存,提供了Aop事務攔截器的特徵。這裏不進行業務代碼編寫,只提供核心基礎模塊的調用,這裏能夠獨立的封裝爲dll來調用。spa
二、Domain(業務核心層)
RDF.Domain:這個類庫主要用於業務最核心,最基本的業務邏輯。這裏主要以大模塊和小的子模塊開發爲主,子模塊主要實現了基礎設施層的倉儲的公共方法,每一個小模塊的還能夠實現本身的方法邏輯。而大模塊實際就是用於處理業務的邏輯,只不過這裏實現核心業務,這裏操做會調用到不少子模塊根據業務複雜度,若是之後要修改一個功能模塊就不須要修改子模塊,只須要找到相對應的業務模塊(主模塊)進行修改,主模塊就是業務流程的處理,能夠根據本身的需求進行模塊範圍的劃分。
三、Application(應用層)
RDF.Web.App:這個類庫主要對核心業務進行二次處理,這裏主要是接受展現層的數據進行與http相關的處理,例如webfrom或mvc或api調用,而後傳給核心業務類,根據核心業務的操做進行響應。
四、Common(公共設施層)
4.一、RDF.Common:這個類庫主要爲整個項目提供的公共操做方法,還有log日誌記錄,這裏日誌我用的是Nlog,提供了日誌攔截器特徵,只要打上標籤就能夠記錄該方法可能會出現的異常,至關於之前的異常捕獲並處理,這裏的處理只須要打上標籤輸入可能拋出異常的消息並存入數據庫和日誌文本,可根據配置進行存儲,還能夠記錄該方法是某某什麼時間開發的,這樣方便找到維護人員進行維護。(注:這裏的日誌特徵和事務特徵都是使用的動態接口aop。)
4.二、RDF.Model:這個類庫提供了數據庫實體和其它的定義,這裏的實體用的是T4模板生成。
五、Presentation(展示層)
RDF.Mvc.Site:網站的展現層,配置了autofac進行依賴注入和aop的操做。
4、總結
這個項目結構只是最第一版本,在下一章開源時,以權限架構爲完成目標分享,在代碼逐步完成中和測試中,後續框架不合理部分將會重寫,架構和代碼完善後將會寫T4來生成架構。