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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

asp.net core源码飘香:Configuration组件

發(fā)布時間:2023/12/4 asp.net 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp.net core源码飘香:Configuration组件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介:

  這是一個基礎(chǔ)組件,是一個統(tǒng)一的配置模型,配置可以來源于配置文件(json文件,xml文件,ini文件),內(nèi)存對象,命令行參數(shù),系統(tǒng)的環(huán)境變量又或者是你自己擴展的配置源,該組件將各個配置源的數(shù)據(jù)按統(tǒng)一的格式(IDictionary<string, string> Data)進行加載,進而對外提供調(diào)用接口。

?????? 不僅如此,有些配置源(如文件配置源)還可以在配置源的數(shù)據(jù)發(fā)生變化時進行重新加載(IDictionary<string, string> Data),而程序員隨時可以判斷是否已經(jīng)重新加載或注冊回調(diào),在重新加載配置時添加業(yè)務(wù)邏輯。

????? 讓我們先從一個問題切入源碼:不同格式的配置源(如json數(shù)據(jù))是怎樣轉(zhuǎn)成IDictionary<string, string> Data的,層級關(guān)系丟了么?

?????????

????? 可以看到,層級關(guān)系在轉(zhuǎn)化為字典的key時使用冒號(:)分隔,如果子節(jié)點是一個數(shù)組,中間還會使用數(shù)組項的索引進行分隔(見上圖:Configuration["wizards:0:Name"]),有了這種分隔模式,任何數(shù)據(jù)源就都可以轉(zhuǎn)為IDictionary<string, string>對象了。

?????

模型:

??????配置組件的模型由如下幾個核心對象組成:

???????1.ConfigurationBuilder??????? //編程入口,負責收集配置源(配置文件,命令行參數(shù),內(nèi)存對象等)及將收集到的配置源Build(調(diào)用各個配置源ConfigurationSource的Build方法)成一個配置提供器????     ???????????????????????????????????????????????? (IConfigurationProvider)的集合傳入ConfigurationRoot對象,通過該對象完成對不同數(shù)據(jù)源進行數(shù)據(jù)Load的過程。

?????? 2.IConfigurationSource????? //不同的配置源各自實現(xiàn)這個接口,主要為上面的Build過程提供IConfigurationProvider對象。

?????? 3.IConfigurationProvider??? //具體實現(xiàn)配置數(shù)據(jù)Load的地方,以及在數(shù)據(jù)源發(fā)生變化時重新加載數(shù)據(jù)及發(fā)出Change通知的地方。

?????? 4.ConfigurationRoot????????? //用戶直接使用的配置對象,里面管理著IConfigurationProvider對象的集合,Get和Set操作即由此對象調(diào)用各IConfigurationProvider完成。

?????? 5.ConfigurationSection???? //配置子節(jié)點的操作對象

?

源碼說事:

?????1.一個json文件是怎樣變成一個字典對象為我們提供配置服務(wù)的?

????????

????????

????????

????????

????????

????????

????????

????????

????????

????????

????????

????????

????????

????????

????????

??

總結(jié):

?????配置組件的源碼比較簡單,但實現(xiàn)的功能確很強大。里面的設(shè)計思路和實現(xiàn)手法都令人贊嘆不已。asp.net core的系列框架源碼都是這樣,實現(xiàn)手法有如少林七十二絕技,每一個框架都驚艷江湖!

相關(guān)文章:?

  • asp.net core源碼飄香:從Hosting開始

原文地址:http://www.cnblogs.com/shiliyuanma/p/6682437.html


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注

總結(jié)

以上是生活随笔為你收集整理的asp.net core源码飘香:Configuration组件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。