溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

.NET Core全新的配置管理方法有哪些

發(fā)布時間:2021-12-24 09:10:24 來源:億速云 閱讀:143 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“.NET Core全新的配置管理方法有哪些”,在日常操作中,相信很多人在.NET Core全新的配置管理方法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”.NET Core全新的配置管理方法有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

一、讀取配置信息

由于很多人都不曾接觸過這個采用全新設(shè)計的配置系統(tǒng),為了讓大家對此有一個感官的認(rèn)識,我們先從編程的角度對它作一個初體驗。針對配置的API涉及三個對象,它們分別是Configuration、ConfigurationBuilder和ConfigurationProvider,配置模型中具有相應(yīng)的接口來表示它們。這三個對象之間的關(guān)系很清晰,Configuration對象承載著在編程過程中使用的配置信息,ConfigurationProvider則是配置信息原始數(shù)據(jù)源的提供者,兩者之間溝通由ConfigurationBuilder來完成,它利用ConfigurationProvider提取源數(shù)據(jù)將其轉(zhuǎn)換為Configuration對象。 

二、配置模型詳解

在《讀取配置信息》一文中我們以實例演示的方式介紹了幾種讀取配置的幾種方式,其中涉及到三個重要的對象,它們分別是承載結(jié)構(gòu)化配置信息的Configuration,提供原始配置源數(shù)據(jù)的ConfigurationProvider,以及作為“中間人”的ConfigurationBuilder。

三、將配置綁定為各種類型的對象

出于編程上的便利,我們通常不會直接利用ConfigurationBuilder創(chuàng)建的Configuration對象讀取某個單一配置項的值,而是傾向于將一組相關(guān)的配置綁定為一個對象,我們將后者稱為Options對象。配置在邏輯上體現(xiàn)為一個具有層次化的配置樹,對于一個Options對象來說,如果我們將其數(shù)據(jù)成員視為其子節(jié)點,那么Options對象同樣具有一個層次化屬性結(jié)構(gòu),所以O(shè)ptions對象和配置在數(shù)據(jù)結(jié)構(gòu)層面并沒有本質(zhì)的差異。如果Options類型的數(shù)據(jù)成員定義與配置的結(jié)構(gòu)具有一一匹配關(guān)系,那么將后者綁定為一個對應(yīng)類型的Options對象是一件很容易的事情,我們本節(jié)重點介紹的ConfigurationBinder就是利用這樣的原理實現(xiàn)了結(jié)構(gòu)化配置向數(shù)據(jù)對象的自動綁定。 

四、Options模型背后的故事

整個Options模型以兩個注冊到ServiceCollection的服務(wù)為核心,這兩個服務(wù)對應(yīng)的服務(wù)接口分別是IOptions <TOptions>和IConfigureOptions<TOptions>,前者直接提供最終綁定了配置數(shù)據(jù)的Options對象,后者則在Options對象返回之前對它實施相應(yīng)的初始化工作。這個兩個服務(wù)分別通過擴(kuò)展方法AddOptions和Configure方法注冊到指定的ServiceCollection之中,服務(wù)的真實類型分別是OptionsManager<TOptions>和ConfigureFromConfigurationOptions<TOptions>,后者派生于ConfigureOptions<TOptions>。

五、多樣性的配置來源:內(nèi)存變量、環(huán)境變量和命令行開關(guān)

較之傳統(tǒng)通過App.config和Web.config這兩個XML文件承載的配置系統(tǒng),ASP.NET Core采用的這個全新的配置模型的最大一個優(yōu)勢就是針對多種不同配置源的支持。我們可以將內(nèi)存變量、命令行參數(shù)、環(huán)境變量和物理文件作為原始配置數(shù)據(jù)的來源,如果采用物理文件作為配置源,我們可以選擇不同的格式,比如XML、JSON和INI等。本章涉及三種配置來源,即內(nèi)存變量、環(huán)境變量和命令行開關(guān)。

六、多樣性的配置來源:JSON文件、XML文件 和INI文件

我們在本篇文章中會介紹三種針對物理文件的ConfiguationProvider,它們分別是針對JSON文件的JsonConfiguationProvider,針對XML文件的XmlConfiguationProvider以及針對INI文件的IniConfiguationProvider。對于這三種文件類型(JSON、XML和INI)來說,JSON能夠采用簡單直觀的格式表示具有不同結(jié)構(gòu)的數(shù)據(jù),所以它是作為配置最好的選擇。

七、多樣性的配置來源:自定義ConfiguationProvider支持其他配置源

我們對配置模型中默認(rèn)提供的各種ConfigurationProvider進(jìn)行了深入詳盡的介紹,如果它們依然不能滿足項目中的配置需求,我們可以還可以通過自定義ConfigurationProvider來支持我們希望的配置來源。就配置數(shù)據(jù)的持久化方式來說,將配置存儲在數(shù)據(jù)庫中應(yīng)該是一種非常常見的方式,接下來我們就是創(chuàng)建一個針對數(shù)據(jù)庫的ConfigurationProvider,它采用最新的Entity Framework 7來完成數(shù)據(jù)庫的存取操作。

八、配置的同步[實例篇]

ConfigurationBuilder在生成以Configuration對象的時候會利用注冊其中的ConfigurationProvider加載原始的配置數(shù)據(jù),那么一旦配置源中的數(shù)據(jù)發(fā)生變化,應(yīng)用程序中的使用的配置信息如何與之同步呢?如果需要在應(yīng)用程序中實現(xiàn)對配置信息的實施同步,就需要對原始配置數(shù)據(jù)的進(jìn)行監(jiān)控,并在數(shù)據(jù)改變的時候重新加載配置數(shù)據(jù)。除此之外,重新加載的配置需要應(yīng)用到程序中,我們必然需要一種通知機(jī)制。為了讓讀者朋友們對配置同步機(jī)制在具體項目中的應(yīng)用有個感官認(rèn)識,我們先通過一個簡單的實例來演示如何實現(xiàn)配置數(shù)據(jù)的實時同步。我們采用一個INI文件作為配置源,通過實施監(jiān)控這個文件第一時間感知到文件內(nèi)容的變換。一旦原始配置文件的內(nèi)容發(fā)生改變,應(yīng)用程序?qū)⒅匦录虞d配置,并通過注冊的回掉操作應(yīng)用新的配置。

九、配置的同步[設(shè)計篇]

本節(jié)所謂的“配置同步”主要體現(xiàn)在兩個方面:其一,如何監(jiān)控配置源并在其變化的時候自動加載其數(shù)據(jù),其目的是讓應(yīng)用中通過Configuration對象承載的配置與配置源的數(shù)據(jù)同步;其二、當(dāng)Configuration對象承載的配置放生變換的時候如何向應(yīng)用程序發(fā)送通知,最終讓應(yīng)用程序使用最新

到此,關(guān)于“.NET Core全新的配置管理方法有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI