.Net Core Linux centos7行—IOC模塊

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

Startup的ConfigureServices方法中,集中對服務進行配置。可以看到默認的.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.net和asp.net core時代的區別主要有幾點。

1.Use InstancePerLifetimeScope instead of InstancePerRequest.

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

2.No more DependencyResolver.

沒有以前的DependencyResolver入口了

3.No manual controller registration.

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

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

針對Startup的ConfigureServices方法做一些改造

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章