محمد میری
محمد میری
خواندن ۳ دقیقه·۴ ماه پیش

آموزش جامع استفاده از Options Pattern در ASP.NET Core برای مدیریت پیکربندی‌ها

الگوی Options pattern در ASP.NET Core برای پیکربندی تنظیمات برنامه‌ها استفاده می‌شود. این الگو به شما اجازه می‌دهد تا تنظیمات پیکربندی را به صورت امن و منظم مدیریت کنید. این موضوع در برنامه‌های بزرگ و پیچیده که نیاز به مدیریت تنظیمات مختلف دارند، بسیار مفید است.

معرفی Options Pattern

در ASP.NET Core، تنظیمات پیکربندی (Configuration Settings) به صورت کلاس‌های ساده (POCO - Plain Old CLR Objects) تعریف می‌شوند که به شما کمک می‌کنند تا به راحتی تنظیمات برنامه را مدیریت کنید. این الگو (Pattern) به شما این امکان را می‌دهد که تنظیمات خود را از منابع مختلف مانند فایل‌های پیکربندی (مثل appsettings.json)، متغیرهای محیطی (Environment Variables)، و سایر منابع بارگذاری کنید.

راه‌اندازی Options Pattern

در این بخش، مراحل استفاده از الگوی Options pattern در یک پروژه ASP.NET Core را توضیح می‌دهیم.

مرحله ۱: ایجاد کلاس پیکربندی

ابتدا، باید یک کلاس POCO برای نگهداری تنظیمات پیکربندی تعریف کنید:

public class MySettings { public string Setting1 { get; set; } public int Setting2 { get; set; } }

مرحله ۲: افزودن تنظیمات به فایل appsettings.json

سپس، تنظیمات خود را به فایل appsettings.json اضافه کنید:

{
&quotMySettings&quot: {
&quotSetting1&quot: &quotValue1&quot,
&quotSetting2&quot: 42
}
}


مرحله ۳: پیکربندی DI (Dependency Injection) برای استفاده از Options Pattern

در کلاس Startup.cs، باید کلاس تنظیمات خود را به DI container اضافه کنید:

public void ConfigureServices(IServiceCollection services) { services.Configure<MySettings>(Configuration.GetSection(&quotMySettings&quot)); services.AddControllersWithViews(); }

در اینجا، Configuration.GetSection("MySettings") بخشی از تنظیمات را که مربوط به MySettings است، به DI container اضافه می‌کند.

مرحله ۴: استفاده از IOptions در کلاس‌های دیگر

اکنون که تنظیمات به DI container اضافه شده‌اند، می‌توانید آن‌ها را در هر کجا از طریق تزریق وابستگی استفاده کنید:

using Microsoft.Extensions.Options; public class HomeController : Controller { private readonly MySettings _mySettings; public HomeController(IOptions<MySettings> options) { _mySettings = options.Value; } public IActionResult Index() { ViewBag.Setting1 = _mySettings.Setting1; ViewBag.Setting2 = _mySettings.Setting2; return View(); } }

۳. پیکربندی Options به صورت پویا (Options Snapshot)

درASP.NET Core همچنین از الگوی IOptionsSnapshot<T> پشتیبانی می‌کند که به شما اجازه می‌دهد تنظیمات را به صورت پویا تغییر دهید. IOptionsSnapshot برای تنظیمات که باید در زمان اجرا به‌روز شوند بسیار مفید است.

برای استفاده از این قابلیت، به سادگی به جای IOptions از IOptionsSnapshot استفاده کنید:


public class HomeController : Controller { private readonly MySettings _mySettings; public HomeController(IOptionsSnapshot<MySettings> options) { _mySettings = options.Value; } public IActionResult Index() { ViewBag.Setting1 = _mySettings.Setting1; ViewBag.Setting2 = _mySettings.Setting2; return View(); } }

۴. اعتبارسنجی تنظیمات (Options Validation)

برای اعتبارسنجی تنظیمات پیکربندی، می‌توانید از متد Validate استفاده کنید:

services.Configure<MySettings>(Configuration.GetSection(&quotMySettings&quot)) .Validate(settings => settings.Setting2 > 0, &quotSetting2 باید بزرگتر از 0 باشد&quot);

۵. استفاده از IOptionsMonitor برای نظارت بر تغییرات

برای نظارت بر تغییرات در تنظیمات پیکربندی در زمان اجرا از IOptionsMonitorاستفاده می‌شود. این رابط به شما امکان می‌دهد که با تغییر تنظیمات به‌روزرسانی شوید.

public class HomeController : Controller { private readonly MySettings _mySettings; private readonly IOptionsMonitor<MySettings> _optionsMonitor; public HomeController(IOptionsMonitor<MySettings> optionsMonitor) { _optionsMonitor = optionsMonitor; _mySettings = optionsMonitor.CurrentValue; _optionsMonitor.OnChange(updatedSettings => { System.Diagnostics.Debug.WriteLine($&quotتنظیمات تغییر کردند: {updatedSettings.Setting1}, {updatedSettings.Setting2}&quot); }); } public IActionResult Index() { var settings = _optionsMonitor.CurrentValue; ViewBag.Setting1 = settings.Setting1; ViewBag.Setting2 = settings.Setting2; return View(); } }

الگوی Options pattern در ASP.NET Core یک روش مناسب و ایمن برای مدیریت تنظیمات پیکربندی است. با استفاده از IOptions, IOptionsSnapshot و IOptionsMonitor، می‌توانید به راحتی تنظیمات را مدیریت کرده و تغییرات را در زمان اجرا کنترل کنید.

این الگو به بهبود ساختار کد و جداسازی concerns در برنامه‌های بزرگ کمک می‌کند و استفاده از آن به تمامی توسعه‌دهندگان ASP.NET Core توصیه می‌شود

aspnetcorecsharpالگوی طراحی
یک مهندس نرم افزار
شاید از این پست‌ها خوشتان بیاید