前言 html
首先奉上我的網站地址傳送門:aehyok.com。前端
aehyok.com的成長之路一——開篇 中主要闡述了本身爲何創建本身的網站,以及我的網站的大體方向。web
aehyok.com的成長之路二——技術選型 中主要簡單歸納了本身搭建網站過程當中使用或者之後可能使用的技術。數據庫
本篇博客主要簡單的來介紹一下,本身目前網站的架構,以及本身的一些想法。固然這其中很大程度受益於大神@郭明峯的開源框架以及他的指點。緩存
本人最近也創建了一個QQ技術羣,本人我的網站所涉及的全部源碼也將會在羣內共享。歡迎各位喜歡學習技術的朋友們入住。架構
羣帳號爲:206058845,記住羣驗證碼爲:aehyok。框架
框架項目結構簡要說明 工具
1-Infrastructure(基礎設施)單元測試
一、aehyok.Utility:通用技術工具類 學習
說明: 分類封裝通用的與技術無關的輔助工具類功能
依賴項:無
二、aehyok.Model:各類實體類的定義
說明:一、業務實體模型
二、數據傳輸模型
三、展示視圖模型
依賴項:無
三、 aehyok.Core:aehyok框架核心組件
說明: 1. 定義aehyok框架的核心,是整個框架運行的骨架。
2. 該骨架提供數據存儲、日誌、緩存、權限等模塊的基礎接口或基類,不提供具體實現。
3. 業務層依賴於此層的接口及基類進行業務操做,而不依賴於具體實現。
4. 此層定義的接口與基類的具體實現,都是可替換的。以適應不一樣的業務對基礎模塊功能的需求。
依賴項:aehyok.Utility
四、aehyok.Core.Data.Entity:EntityFramework數據存儲組件
說明: 1.提供aehyok.Core中定義的數據存儲功能的EntityFramework的實現方案
2.數據庫初始化策略
3.業務實體類映射
依賴項: 1.aehyok.Utility
2.aehyok.Model
3.aehyok.Core
4.EntityFramework
2-Application(應用的接口和對應的實現)
五、aehyok.Contracts:服務契約層
說明: 包含業務功能的接口的定義
依賴項: 1. aehyok.Utility
2. aehyok.Core
3.aehyok.Model
六、 aehyok.Services:服務實現層
說明: 包含數據功能初始化及服務業務功能實現
依賴項:1. aehyok.Utility
2. aehyok.Model
3. aehyok.Core
4. aehyok.Core.Data.Entity
5. aehyok.Contracts
3-Presentation(各類可視化UI展示層)
七、aehyok.WebMvc和aehyok.Admin.Mvc:先後臺Web 展示層
說明: 先後臺UI展示層
依賴項:1.aehyok.Utility
2.aehyok.Model
3.aehyok.Core
4.aehyok.Core.Data.Entity
5.aehyok.Contracts
6.aehyok.Services
4-UnitTest
簡要說明:
一、面向接口的方式來開發,而後經過IOC來接觸模塊之間的耦合。
二、aehyok.Core:提供數據存儲、日誌、緩存、權限等模塊的基礎接口或基類。
三、aehyok.Core.Data.Entity:EntityFramework數據存儲組件,很明顯該層是實現aehyok.Core中的數據存儲組件的接口和基類。爲何這樣設計呢?這樣就能夠很好的被替換掉,好比你如今的項目用的是EntityFramework開發的,項目經理忽然說EntityFramework有這樣的的問題知足不了咱們系統,如今決定使用NHibernate,那麼如今就只須要將該層進行研究實現,進行IOC注入就能夠了,其餘層的任何代碼都不須要進行修改(本身想的暫時是這樣的,不知道實現起來難度到底有多大)。
四、aehyok.Core.Logging.Log4Net:Log4Net日誌組件,該層也是實現aehyok.Core中日誌組件的接口和基類。一樣能夠很好的替換掉。能夠本身實現,也能夠採用其餘日誌組件NLog等等吧,都是能夠的。
五、可能還有會Cache組件、權限組件,固然可能還會有其餘的……按道理都是能夠被替換的。
六、aehyok.Contracts和aehyok.Services能夠說是業務邏輯層吧。實現中調用各組件進行拼裝完成須要的方法。供UI層進行調用便可。
七、固然對於UI層的展示考慮最好也是能夠被替換的。打個比方:如今後臺用的是Bootstrap模版進行開發的,而後忽然有個公司以爲這框架很不錯,想來買大家的源碼,可是他們對Bootstrap不熟悉,或者不想用Bootstrap,想用其餘的前端UI框架。不清楚經過MVVM可否實現前端UI的良好解耦。
八、可能還有其餘未知的問題吧,暫時考慮的就這麼多,還要在之後的實踐中不斷的思考不斷的來完善吧,計劃沒有變化快,但沒有計劃怎麼來的變化呢?
總結
本身的小站還在持續不斷的更新的,雖然更新速度如蝸牛般緩慢,可是網站仍是在一每天的進步,本身也在一點點的積累。以上也只在於技術的學習,而無論其項目大小、技術學習成本等現實因素關聯起來,其實我就是爲了學習技術,讓本身可以進步成長罷了。
本人最近也創建了一個QQ技術羣,如今裏面人數不是不少,是在寫上一篇博客的時候開始加人的。因爲本人最近在使用TFS OnLine,看到他對於團隊開發項目來講絕對是利器,想多多的學習瞭解一下。 本人我的網站所涉及的全部源碼也將會在羣內共享。羣帳號爲:206058845,記住羣驗證碼爲:aehyok。歡迎各位喜歡學習技術的朋友們入住。。期待咱們的共同成長。同時但願本身可以一直堅持學習下去。
最後再次奉上我的網站地址傳送門:aehyok.com