依賴注入對于開發人員來說,友善的就是不需要去關注具體的實作類,不需要去New執行個體對象,直接使用接口層就能讓程式自動注入使用,當然,還有其他一些特點,比如web http同一個請求中可以設定同一個對象隻執行個體化一次解決多個類中多次執行個體化對象浪費資源的問題。不多說,百度能得到更多 多的介紹,這邊直接開工搭環境。
資料模型層,首先要建立資料庫,再建立Model類。
建立資料庫,表,添加一條測試資料
建立資料庫

建立資料表
添加測試資料
我們已經知道有幾層,是以,先把所有的類庫項目全部先建立好,web為MVC的空項目,至于各層代碼,分到各層再去處理
項目結構
各層依賴關系
好了,一般情況下,在這個架構裡,我們隻需要建立相應的Model類與資料庫表相對應就行了,比如這個項目,我們隻建立兩個類:
SysUser.cs
SysUserInfo.cs
建立類時,裡面會自動加入建立者資訊,怎麼加的,可參考: VS2013修改模版、建立類模版檔案參考: <a href="http://blog.csdn.net/pukuimin1226/article/details/51685279">http://blog.csdn.net/pukuimin1226/article/details/51685279</a>
至此,Model類就建立完成。
這層可以說是在這個架構搭建中最複雜的,但是,建立完之後,不需要怎麼改動的地方。
好,為了能滿足架構代碼需要引用的Nuget包,我這裡列出一下。
在nuget管理器中添加完成就行。
所有項目都勾上,免得麻煩。
還有一些,要添加系統的程式集,比如 System.Web,System.Configuration等等。
先添加一個擴充類ConfigurationExt.cs,用來加載bin目錄下的所有程式集
CompositionProvider.cs
CompositionScopeModule.cs
ExportModelBinderAttribute.cs
MvcContainerConfiguration.cs
RemoveHttpHeadModule.cs,這個和依賴注入沒關系,是附加的功能
ScopeDependencyResolver.cs
ScopeFilterAttributeFilterProvider.cs
ScopeModelBinderProvider.cs
主要是一些基層的單元操作、Repository公共接口和公共實作、DbContext類、資料庫視圖初始化等等。
DatabaseInitializer.cs
EfDbContext.cs
EFRepositoryBase.cs
EFUnitOfWorkContext.cs
IEntityMapper.cs,公共接口
IRepository.cs,公共接口
IUnitOfWork.cs
IUnitOfWorkContext.cs
MefInjectionProvider.cs
UnitOfWorkContextBase.cs
至此,Component層也完成了,裡面一些其他公共方法 ,我就不一一寫出了,到時候我會在文章最後附上源碼。
有了Component層之後,Core層對于開發人員來說就變得十分簡單了,但是要建立幾個簡單的類去滿足Component層的需要的映射對象。
SysUserConfiguration.cs
SysUserInfoConfiguration.cs
ISysUserRepository.cs
ISysUserInfoRepository.cs
SysUserRepository.cs
SysUserInfoRepository.cs
下面是真正的資料操作Service類,随便怎麼寫,這裡示範兩表連接配接查詢方法
ISysUserService.cs
SysUserService.cs,Service方法實作,引用Repository時,使用Import屬性自動注入
這裡,Core層也完成了。
BLL實作上,這裡就是簡單引用一下Service層的方法。
ISysUserContract.cs
SysUserContract.cs,引用 Service層時,也是使用 Import 屬性自動注入
BLL代碼完成。
因為依賴注入架構,内部用的是反射機制,是以在web運作後,首先要做的就是初始化加載dll,還有一些其他的内容。
在Global.asax 的 Application_Start 方法中,調用方法初始化資料
還有,依賴注入的初始化,繼承于 IHttpModule ,是以在webconfig檔案中加入注冊代碼,也能實作自動初始化,web.config加内容:
在App_Start下加FilterConfig.cs檔案,内容:
web.config加連接配接字元串:
然後,就可以運作了,再添加測試資料顯示控制器和View頁面:
HomeController.cs
Index.cshtml
這次可以顯示測試資料了,附運作結果圖:
架構搭建完畢,此架構的使用,也是很友善,一般Model層、Core層的Configurations和Repositories中的代碼,都可用CodeSmith等模版生成器自動生成,開發人員隻需要實作具體的資料通路和邏輯處理層就可以在web中調用了,非常友善。
這個架構搭建起來,比上一單的簡單三層架構要複雜了很多,不過隻要了解了,隻是耗時多一點而已。
源碼免費下地位址:
<a href="http://download.csdn.net/detail/pukuimin1226/9616604">http://download.csdn.net/detail/pukuimin1226/9616604</a>
版權聲明:
作者:真愛無限
本文為部落客原創文章版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結.