Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
10dk 39sn
Yapılandırma yönetimi, C#'ta ölçeklenebilir ve sürdürülebilir uygulamaların oluşturulmasında temel bir unsurdur. Yapılandırma ayarlarını ele almanın en etkili yollarından biri Seçenekler Deseni kullanmaktır. Tim Corey, The Options Pattern in C# in 10 Minutes or Less başlıklı videosunda bu desenin nasıl uygulanacağını etkili bir şekilde açıklayan kısa ama öğretici bir açıklama sunuyor. Bu makalede, Tim'in videosundaki açıklamalar ve gösterimlerle Seçenekler Desenini inceleyeceğiz.
Tim, Seçenekler Deseni'ni yapılandırma dosyalarından bilgi almak ve bağımlılık enjeksiyonuna (DI) eklemek için güçlü ama basit bir yöntem olarak tanıtarak başlar. Bu düzenin birkaç avantajını vurgular, örneğin:
Tim, genellikle derinlemesine teknik eğitim sağlarken, bu videonun Seçenekler Deseni uygulaması için bir hızlı başlangıç kılavuzu olarak tasarlandığını vurguluyor.
Tim, sunucu tarafında render yapan bir Blazor Web Uygulaması ile Visual Studio'yu açarak başlıyor. Demo hızını artırmak için zaten birkaç modifikasyon yapmış. Ana kurulum:
appsettings.json dosyası oluşturmak.CloudInfoOptions adlı bir Plain Old CLR Object (POCO) model kullanmak.appsettings.json dosyası aşağıdaki bölümü içerir:
{
"CloudInfo": {
"Storage": "Azure Storage",
"Website": "Azure Static Web Apps",
"API": "Azure Web App"
}
}
Tim, appsettings.json kullanıyor olmasına rağmen, yapılandırma değerlerinin şunlardan da gelebileceğini açıklar:
appsettings.Development.jsonsecrets.jsonŞimdi, Tim yapılandırma değerlerini CloudInfoOptions sınıfına bağlamayı ve bunları DI'ye enjekte etmeyi açıklar.
Tim, Program.cs içinde builder.Services'e aşağıdaki satırı ekler:
builder.Services.Configure<CloudInfoOptions>(builder.Configuration.GetSection("CloudInfo"));builder.Services.Configure(Of CloudInfoOptions)(builder.Configuration.GetSection("CloudInfo"))Bu, appsettings.json dosyasının CloudInfo bölümünü CloudInfoOptions sınıfına bağlar. Tim, bu adımın değerlerin bağımlılık enjeksiyonunda mevcut olmasını sağladığını belirtir.
Tim, özelleştirerek yapılandırma değerlerini dinamik olarak göstermek için Ana Sayfa bileşenine (Index.razor) geçer.
Bileşene IOptions arayüzünü enjekte eder:
@inject IOptions<CloudInfoOptions> CloudInfoOptions
Gerçek değerleri almak için, bunları OnInitialized içinde atar:
protected override void OnInitialized()
{
CloudInfo = CloudInfoOptions.Value;
}Protected Overrides Sub OnInitialized()
CloudInfo = CloudInfoOptions.Value
End SubTim, IOptions<t>'in, yapılandırma değerlerinin Singleton örneğini sağladığını, yani uygulama yaşam döngüsü boyunca sabit kaldığını açıklar. Uygulama çalıştığında, yapılandırma değerleri doğru bir şekilde sayfada görünür.
Tim, ardından Seçenekler Deseni'ni kullanmanın üç farklı yolunu tanıtır:
Varsayılan olarak, IOptions<t> bir Singleton örneği sağlar. Tim, uygulama çalışıyorken yapılandırma dosyası güncellendiğinde değişikliklerin yansıtılmadığını gösteriyor, uygulama yeniden başlatılmadığı sürece.
IOptionsSnapshot<t> KullanımıHer istekte güncellemeleri etkinleştirmek için Tim enjekte etmeyi değiştirir:
@inject IOptionsSnapshot<CloudInfoOptions> CloudInfoOptions
Bu, her yeni HTTP isteğinin taze yapılandırma değerlerini almasını garanti eder. Tim, appsettings.json'i değiştirerek, sayfayı yenileyerek ve güncellenmiş değerlerin hemen göründüğünü göstererek bunu test eder.
Değişimlerin uygulamayı yeniden başlatmadan yansıtılması gereken ancak canlı izleme gerektirmeyen senaryolar için IOptionsSnapshot<t>'in faydalı olduğunu açıklar.
IOptionsMonitor<t> KullanımıSon olarak, Tim, gerçek zamanlı değişiklik algılama sağlayan IOptionsMonitor<t>'yi tanıtır. Enjeksiyonu günceller:
@inject IOptionsMonitor<CloudInfoOptions> CloudInfoOptions
IOptionsSnapshot'in her istek için güncellemeler yapmasının aksine, IOptionsMonitor<t> yapılandırma değerleri değiştiğinde olayları tetikleyebilir. Bu, yapılandırma değişikliklerine dinamik olarak tepki vermek gerektiğinde özellikle faydalıdır.
Tim, IOptionsMonitor<t>'in singleton tarafından desteklendiğini ancak temel yapılandırma dosyası değiştiğinde değerleri dinamik olarak yenileyebildiğini belirtir.
Tim, videoyu özetleyip, üç yaklaşım arasındaki önemli farkları açıklayarak bitiriyor:
| Arayüz | Ömür | Değişiklik Üzerine Güncellemeler |
|---|---|---|
IOptions<t> | Singleton | Hayır |
IOptionsSnapshot<t> | Kapsamlı | Her İstek |
IOptionsMonitor<t> | Singleton | Evet |
Seçenekler Deseni yapılandırma yönetimini basitleştirirken, bu farklı varyasyonları anlamanın proje gereksinimlerine göre doğru yaklaşımı seçmede yardımcı olduğunu vurgular.
Tim'in yaklaşımını takip ederek, geliştiriciler uygulama ayarlarını etkili bir şekilde yönetebilir, sorunsuz bağımlılık enjeksiyonu sağlarlar ve çalışma zamanı yapılandırma değişikliklerini verimli bir şekilde ele alabilir. Daha iyi anlamak için lütfen tam videoyu izleyin ve daha fazla açıklayıcı video için kanalını ziyaret edin.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy