1. 程式人生 > >.Net Core Linux centos7行—IOC模塊

.Net Core Linux centos7行—IOC模塊

net

.net core中可以說是用了全新的IOC模板,定義在Microsoft.Extensions.DependencyInjection下。提供了一套標準的接口。並提供了默認實現。並且大範圍使用著,處處都體現著IOC的設計思想。

StartupConfigureServices方法中,集中對服務進行配置。可以看到默認的.net core mvc默認項目已經為我們註入了不少服務。看註釋也就懂了,也沒什麽特別好解釋的(^_^)。

技術分享

最後2行代碼是自定義配置的註入。需要Microsoft.Extensions.Options.ConfigurationExtensions package的支持

技術分享

AddOptions 針對Ioptions<POCOModel>提供管理,緩存,配置變動自動支持服務,即配置文件有改動會自動反應在應用程序中,且應用程序不需要自動重啟。不像以前的web

.config.有任何改動都會自動重啟。

Configure<T>(IConfiguration).表示配置的內容來自配置文件。

技術分享

IndexSetting是新建的一個model,即配置項。

技術分享

配置文件中的IndexSetting

技術分享

目前.net core ioc有3種獲取service方式。

1.ctor註入。

2.action 參數註入

3.容器獲取方式

技術分享

當然,應對一般情況,這種方式也許夠用了。but,現實顯然不是這樣的。通常我們需要更強大的ioc lib。目前官方推薦的更強大的ioc lib。也是業界大名鼎鼎的autofac。autofac的介紹園子裏面一大把,並且寫的很詳細,很好。就不多介紹了。

官方文檔:http://docs.autofac.org/en/latest/integration/aspnetcore.html

asp.netasp.net core時代的區別主要有幾點。

1.Use InstancePerLifetimeScope instead of InstancePerRequest.

簡單來說就是生命周期的統一。

2.No more DependencyResolver.

沒有以前的DependencyResolver入口了

3.No manual controller registration.

不再需要註冊自己的controllerfactory了,也包括owin中的middleware。

需要使用它,當然需要添加它

技術分享

針對StartupConfigureServices方法做一些改造

技術分享

使用任何第三方ioc,都需要返回IServiceProvider。替換系統的默認IServiceProvider。否則不能生效。

然後創建autofac的build,一切照舊,我們就可以愉快的使用autofac啦。


.Net Core Linux centos7行—IOC模塊