asp.net core源碼飄香:Configuration組件

來源:互聯網
上載者:User

標籤:iii   aac   地址   change   load   elf   base   icon   命令列   

簡介:

  這是一個基礎組件,是一個統一的配置模型,配置可以來源於設定檔(json檔案,xml檔案,ini檔案),記憶體對象,命令列參數,系統的環境變數又或者是你自己擴充的配置源,該組件將各個配置源的資料按統一的格式(IDictionary<string, string> Data)進行載入,進而對外提供調用介面。

       不僅如此,有些配置源(如檔案配置源)還可以在配置源的資料發生變化時進行重新載入(IDictionary<string, string> Data),而程式員隨時可以判斷是否已經重新載入或註冊回調,在重新載入配置時添加商務邏輯。

      讓我們先從一個問題切入源碼:不同格式的配置源(如json資料)是怎樣轉成IDictionary<string, string> Data的,層級關係丟了嗎?

         

      可以看到,層級關係在轉化為字典的key時使用冒號(:)分隔,如果子節點是一個數組,中間還會使用數組項的索引進行分隔(見:Configuration["wizards:0:Name"]),有了這種分隔模式,任何資料來源就都可以轉為IDictionary<string, string>對象了。

     

模型:

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

       1.ConfigurationBuilder        //編程入口,負責收集配置源(設定檔,命令列參數,記憶體對象等)及將收集到的配置源Build(調用各個配置源ConfigurationSource的Build方法)成一個配置提供器                                                          (IConfigurationProvider)的集合傳入ConfigurationRoot對象,通過該對象完成對不同資料來源進行資料Load的過程。

       2.IConfigurationSource      //不同的配置源各自實現這個介面,主要為上面的Build過程提供IConfigurationProvider對象。

       3.IConfigurationProvider    //具體實現配置資料Load的地方,以及在資料來源發生變化時重新載入資料及發出Change通知的地方。

       4.ConfigurationRoot          //使用者直接使用的設定物件,裡面管理著IConfigurationProvider對象的集合,Get和Set操作即由此對象調用各IConfigurationProvider完成。

       5.ConfigurationSection     //配置子節點的操作對象

 

源碼說事:

     1.一個json檔案是怎樣變成一個字典對象為我們提供佈建服務的?

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

  

總結:

     配置組件的源碼比較簡單,但實現的功能確很強大。裡面的設計思路和實現手法都令人讚嘆不已。asp.net core的系列架構源碼都是這樣,實現手法有如少林七十二絕技,每一個架構都驚豔江湖!

相關文章: 

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

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

asp.net core源碼飄香:Configuration組件(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.