درین نوشتهیعلمی آغاز بدین سوال که چه طور پیکربندی تنظیمات را از منابع متعدد بخوانیم و از آنان در نرم افزار های خویش به کار گیری کنیم؟ طراحی اپلیکیشن با مثال عملی مرحله به مرحله جواب میدهیم بعد از آن با نمونه یک معرفی از سازوکار قرائت پیکربندی در ASP.NET Core و اشکال آن ارائه خوا هیم بخشید و درباره نوع کوشش آن سخن خوا هیم کرد.
خلل
چهطور پیکربندی تنظیمات را از منابع گوناگون بخوانیم رایاپارس و از آنها در نرم افزار های خویش به کار گیری کنیم؟
راهکار
از پروژه ی خالی پست قبلی استارت میکنیم. فولدر های appsettings.json و appsettings.Development.json را به پروژه ی خویش اضافه فرمائید.
// appsettings.json
{
\"Section1\": {
\"SettingA\": \"ValueA\",
\"SettingB\": \"ValueB\"
},
\"Section2\": {
\"SettingC\": \"ValueC\"
}
}
// appsettings.Development.json
{
\"Section1\": {
\"SettingA\": \"Dev_ValueA\"
},
\"Section2\": {
\"SettingC\": \"Dev_ValueC\"
}
}
آنگاه پیکربندی تنظیمات را در تولیدکننده ی کلاس Startup بخوانید.
public static IConfiguration Config { get; private set; }
public Startup(
IConfiguration config)
{
Config = config;
}
آنگاه خدمت های option را در سیاق ConfigureServicees() که در کلاس Startup میباشد اضافه فرمائید.
public void ConfigureServices(
IServiceCollection services)
{
// setup dependency injection in service container
services.AddOptions();
services.Configure(Config);
}
آخر و عاقبت پیکربندی را تحت عنوان یک interface از IOptions که T، POCO شما میباشد وارد نمایید.
public class HelloWorldMiddleware
{
private readonly RequestDelegate next;
private readonly AppSettings settings;
public HelloWorldMiddleware(
RequestDelegate next,
IOptions options)
{
this.next = next;
this.settings = options.Value;
}
public async Task Invoke(HttpContext context)
{
var jsonSettings = JsonConvert.SerializeObject(this.settings);
await context.Response.WriteAsync(jsonSettings);
}
}
اجرای این نرم افزار مثالی خروجی تحت را خواهد داشت.
گفت و گو
ASP.NET Core یک مکانیزم بی آلایش برای تلاوت پیکربندی نرم افزار از منابع گوناگون نظیر فولدر JSON ، متغیر های محلی و یا این که حتی منابع داده های سفارشی میباشد.همینطور استعمال از این پیکربندی به لطف Dependency Injection بی آلایش میباشد.
اگرچه این مسئله خیره کننده میباشد ( چهطور پیکربندی شما لود می گردد) ولی ASP.NET Core 2.0 پیکربندی تنظیمات اضافه گردیده را پشت روال CreateDefaultBuilder() از WebHost در Program.cs نهفته می نماید . آنگاه IConfiguration به خدمت container اضافه میشود و در سراسر نرمافزار قابل دسترس میگردد. از این قضیه در Startup برای افزودن option ها به کارگیری کردیم. برای مشاهده ی آن اسلوب BuildWebHost() را در Program.cs جایگزین فرمایید و اپلیکیشن را مجدد انجام فرمائید نهایتا مجدد به عبارتی سود را خواهید گرفت.