作開發這麼多年,常常因配置的問題引起生產環境的bug。有些年久的項目,幾百個密密麻麻的配置項,常常容易搞混,有時好幾個項目有好多一樣的配置項,配置工做也不厭其煩。所幸,攜程開源了新一代配置中心 - Apollo項目,最近在項目中使用了一段時間,感受確實方便很多。java
首先本地搭建Apollo,請參照官網資料https://github.com/ctripcorp/apollo/wiki/Quick-Start。git
進入Apollo的管理UI,建立項目:程序員
建立項目後,就能夠在項目中添加Key、value了:github
添加key後,須要發佈才能生效。json
在.net core項目中添加Com.Ctrip.Framework.Apollo.Configuration的nuget包(難道是java程序員寫的?),修改Program.cs文件及appsettings.json文件,appsettings.json文件的AppId對應上文中的應用ID,MetaServer的地址Apollo的Euraka的Server地址:app
public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, builder) => { builder .AddApollo(builder.Build().GetSection("apollo")) .AddDefault(); }) .UseStartup<Startup>() .Build();
{ "apollo": { "AppId": "SampleApp", "MetaServer": "http://192.168.2.168:8080" } }
這樣就能夠在項目中讀取apollo裏的配置項了,是否是很簡單。ui
若是有一些公共配置項須要被幾個項目引用,該怎麼辦呢?NameSpace閃亮登場!傳送門:Apollo核心概念之「Namespace」spa
建立pulic類型的NameSpace,NameSpace的配置項對各項目均可見,惟一須要的操做是在個項目中也須要對NameSpace中的配置項進行發佈,這個時候須要再改一下Program.cs的代碼:.net
public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, builder) => { builder .AddApollo(builder.Build().GetSection("apollo")) .AddDefault() .AddNamespace("Common");//Apollo中NameSpace的名稱 }) .UseStartup<Startup>() .Build();