網址:https://www.cnblogs.com/sggx/p/4555255.html
為什麼要自己搭架構?
大家夥别急,讓我慢慢地告訴你!大家有沒有這種感覺,從一家跳槽到另一家公司,公司的架構往往是不相同的,這樣你必須就得摒棄原來的,學習新的架構。
問題是你用習慣了一種架構,比如封裝的擴充方法、工廠模式、實體映射等等,你用得很爽,但是跳槽到新的公司,又得學習他們公司的架構,往往你在這上面
要花費不少時間。
是以我才有了搭建自己的架構的想法,我的架構用到了EntityFramework6.0+Asp.NET MVC4+Autofac等,下面是我的架構結構:

MyFrame.Domain 實體模型層
MyFrame.DataMapping 資料映射層:映射實體類和資料庫表關系,資料庫上下文存放在該層
MyFrame.IDao 資料通路接口層
MyFrame.Dao 資料通路層
MyFrame.IService 業務邏輯接口層
MyFrame.Service 業務邏輯層
MyFrame.Common 通用擴充層
MyFrame.Web UI層
層與層之間的引用關系
Domain(最低層)=》每個層調用;IDao=>Dao,Service; IService=>Service ; IDao,IService=>Web
實體基類
MyFrame.Domain.DomainBase:實體基類,實體類都需要繼承DomainBase,現在這個類隻有兩個屬性,等之後慢慢擴充完善
DomainBase
資料通路基類接口
MyFrame.IDao.IDaoBase:封裝了增删改查方法以及分頁等
IDaoBase
資料通路實作基類
MyFrame.Dao.DaoBase:需要繼承IDaoBase,IDisposable
DaoBase
資料庫通路上下文
MyFrame.DataMapping.DataBaseContext
DataBaseContext UserMap
擴充幫助類
MyFrame.Common.Helper:封裝了一些常用的方法,我自己用起來比較順手,增加自己的開發效率
Helper
分頁控件
我用得是PagedList,Nuget裡搜尋安裝PagedList.MVC即可,然後自己封裝了一下,封裝得在DaoBase裡SelectPageList()
為了讓這個控件擴充性更強,寫了一個分部試圖_PageList,定義了一個分頁Model,
為什麼要自己寫個而不是用它自己封裝好的,因為後期頁碼可能需要跳轉“首頁”,”末頁“等
PageListModel _PageList
分頁css
PageList
怎麼調用呢?跟調用分部試圖方法一樣,隻是需要傳進一個PageListModel
Controller Index
Autofac元件
控制反轉,類似于Ioc容器的元件,通過配置接口對應具體的實作類
然後調用我們隻需要調接口就行了,降低耦合性。
元件Nuget裡有自己下載下傳安裝就行
在Globl.asax裡配置
View Code
通過控制器裡的構造方法,調用即可
View Code
其實配置接口對應哪個具體實體的關系,應該放到config檔案比較好,這個後期再慢慢優化把。
結尾
這是一個初級版本,後期肯定要再好好完善,比如加入Transaction事務管理,排序,條件查詢等等。
大家如果有什麼好的建議,盡管提,互相促進互相學習。
轉載請注明出處,謝謝!
源代碼下載下傳位址:http://yun.baidu.com/share/link?shareid=2761504180&uk=2820969304