日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET Core 2.0使用Autofac实现IOC依赖注入竟然能如此的优雅简便

發布時間:2023/12/4 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core 2.0使用Autofac实现IOC依赖注入竟然能如此的优雅简便 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

初識ASP.NET Core的小伙伴一定會發現,其幾乎所有的項目依賴都是通過依賴注入方式進行鏈式串通的。這是因為其使用了依賴注入 (DI) 的軟件設計模式,代碼的設計是遵循著“高內聚、低耦合”的原則,使得各個類與類之間的關系依賴于接口,這樣做的目的是能更有利于項目代碼的維護與擴展。

?

Autofac

在進入主題之前咱們還是先來簡單的認識下鼎鼎大名的“Autofac”吧。那么何為Autofac呢,通俗的講就是一個開源的,且基于.NET Core、ASP.NET Core、.NET 4.5.1+等框架實現的控制反轉(IOC)類庫。通過Autofac可以在.NET Core、ASP.NET Core、.NET 4.5.1+等項目上很容易的實現依賴注入,代碼很容易就能達到“高內聚、低耦合”的原則。另外,Autofac的中文資料也很多,需要詳細了解的也可在網上自行查看。

Autofac官方網站:https://autofac.org/

?

背景

在我們大部分的項目中都會將代碼抽成多層,每層之間通過相互依賴串聯工作。在這里,我們將ASP.NET Core項目代碼抽成三層結構,分別為輸入輸出層(MVC項目)、業務層(類庫)、數據層(類庫),每層的功能描述如下:

1、Lezhima.Web:接受來自客戶端的請求,及服務端響應的出入口。由一個基于ASP.NET Core的MVC項目組成。

2、Lezhima.Core:根據請求做出相應的業務判斷,及調度上下游數據并計算,輸出相應的業務結果給調用者。由一個基于.NET Core的類庫組成。

3、Lezhima.Data:直接跟DB進行通訊交互,實現對DB的增、刪、改、查等操作。由一個基于.NET Core的類庫組成。

依賴關系:

基于上述中的三層代碼結構,我們可以清晰的看出Lezhima.Web做為項目出入口,在其需要時會調用Lezhima.Core類庫,并將業務交由Lezhima.Core庫處理,而Lezhima.Core類庫在其需要時會調用Lezhima.Data類庫操作DB。那么,它們之間的依懶關系應該是這樣子的:

1、Lezhima.Web同時依賴于Lezhima.Core與Lezhima.Data類庫。

2、Lezhima.Core依賴于Lezhima.Data類庫。

?

實現代碼

通過上面的介紹,我們清楚了三個分層之間的功能與依賴關系,那么接下來我們就分別來看看它們具體代碼及使用Autofac如何優雅的實現依賴注入吧。

1、首先在Lezhima.Web項目中通過NuGet管理器引用:Autofac、Autofac.Extensions.DependencyInjection兩個類庫。

2、我們先來看看Lezhima.Data層的代碼,首先定義一個名為“IRepository”接口,代碼如下:

3、在Lezhima.Data層再增加一個名為“Repository”類,實現“IRepository”接口,代碼如下:

?

4、在Lezhima.Core層再定義一個名為“IUserCore”接口,代碼如下:

?

5、在Lezhima.Core層再增加一個名為“UserCore”類,實現“IUserCore”接口,代碼如下:

?

6、在Lezhima.Web層增加一個名為“AccountController ”的控制器,代碼如下:

7、在Lezhima.Web層增加一個名為“Evolution”的類,用于繼承Autofac的Module類,實現上述三層之間的依賴關系注入,代碼如下:

8、在Lezhima.Web層的“Startup”類的“ConfigureServices”方法內注入即可,代碼如下:

??

總結

1、每層在調用時,通過在該類內聲明一個接口類型的屬性(變量),再通過Autofac構造涵數注入方式實現依賴注入并獲取到相應的類實例。

2、通過繼承Autofac的Module類,并在Load方法內重寫自已項目的類關系來實現注入業務。

3、Autofac注入有多種不同的生命周期類型,分別為InstancePerLifetimeScope、SingleInstance、InstancePerDependency等,各位在項目中按需選擇即可。

4、最后再通過在ASP.NET Core項目內的“Startup”類內將注入代碼類注冊到項目中就可正常使用了。


原文鏈接:https://www.cnblogs.com/Andre/p/9604759.html

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com


總結

以上是生活随笔為你收集整理的ASP.NET Core 2.0使用Autofac实现IOC依赖注入竟然能如此的优雅简便的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。