معرفی
ASP.NET Core از بسیاری از روش های پیکربندی پشتیبانی می کند. در برنامه ASP.NET Core، پیکربندی به صورت جفت نام-مقدار ذخیره می شود و می توان آن را در زمان اجرا از قسمت های مختلف برنامه خواند. جفت های نام-مقدار ممکن است در یک سلسله مراتب چند سطحی گروه بندی شوند. داده های پیکربندی برنامه ممکن است از آن گرفته شود
- فایل هایی مانند JSON، XML، INI
- متغیرهای محیطی
- آرگومان های خط فرمان
- مجموعه ای در حافظه
- ارائه دهندگان سفارشی
سیستم پیکربندی در ASP.NET Core از نسخه قدیمی ASP.NET بازسازی شده است. نسخه قدیمی از فضای نام "System.Configuration" استفاده می کند و قادر به خواندن فایل های پیکربندی XML مانند web.config است. مدل پیکربندی جدید میتواند به تنظیمات مبتنی بر کلید/مقدار دسترسی داشته باشد و میتواند منابع مختلفی مانند JSON، XML و INI را بازیابی کند.
نمونه ای از خواندن پیکربندی با استفاده از ارائه دهنده JSON
به طور کلی، پیکربندی در ساختار کلید/مقدار ساده یا ممکن است در ساختار سلسله مراتبی هنگام استفاده از فایل های خارجی باقی می ماند. فایل appsetting.json زیر را برای این مثال در نظر بگیرید.
appSetting.json
برای خواندن فایل پیکربندی JSON، باید کتابخانه های "Microsoft.Extensions.Configuration" و "Microsoft.Extensions.Configuration.Json" را به عنوان یک وابستگی اضافه کنیم. دو خط زیر باید در فایل package.json در بخش وابستگی اضافه شود.
- "Microsoft.Extensions.Configuration":"1.0.0"،
- "Microsoft.Extensions.Configuration.Json":"1.0.0"
روش "AddJsonFile" از کلاس "JsonConfigurationExtensions" برای فایل JSON به سازنده استفاده می شود. ما می توانیم با استفاده از نام کلید یک مقدار پیکربندی ساده بدست آوریم. اگر مقدار پیکربندی در یک ساختار سلسله مراتبی باشد، می توان آن را با استفاده از یک کلید جدا شده ":" که از ریشه سلسله مراتب شروع می شود، بازیابی کرد. در این مثال، اگر بخواهیم مقدار "DefaultConnection" را دریافت کنیم، کلید "ConnectionStrings:DefaultConnection" می شود.
Starpup.cs
خروجی
داده های پیکربندی را در کنترلر بازیابی کنید
در مثال فوق، من مقدار پیکربندی را در خود کلاس راه اندازی بازیابی می کنم. نسخه جدید ASP.NET دارای پشتیبانی داخلی برای تزریق وابستگی است. با استفاده از DI می توانیم مقدار پیکربندی را به Controller تزریق کنیم.
با استفاده از متد AddSingleton از کلاس ServiceCollectionServiceExtensions، می توانیم یک سرویس singleton از نوع مشخص شده را با یک نمونه از سرویس اضافه کنیم.
Startup.cs
HomeController.cs
خروجی
دریافت شیء پیکربندی با استفاده از الگوی گزینهها
الگوی Options ما را قادر می سازد تا از کلاس های گزینه سفارشی برای نمایش گروهی از تنظیمات مرتبط استفاده کنیم. کلاس Option باید دارای ویژگی خواندن و نوشتن عمومی باشد که برای هر تنظیمات تعریف شده است و کلاس نباید هیچ پارامتری داشته باشد.
وابستگی "Microsoft.Extensions.Options.ConfigurationExtensions" حاوی متد افزونه برای IServiceCollection.Configure است. باید این وابستگی را در فایل project.json اضافه کنیم.
- "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0"
در اینجا، من مدل خود را تعریف کرده ام و از همان appSetting.json استفاده می کنم که در مثال قبلی استفاده شد. در این مثال، من تنظیمات رشته اتصال appSetting.json را با کلاس مدل خود متصل کرده ام.