ASP.NET’te Özel Web.config Bölümleri Nasıl Tanımlanır

Web uygulamaları geliştirirken, genellikle farklı ortamlar arasında değişebilen yapılandırma ayarlarını yönetmeniz gereken durumlarla karşılaşırsınız. Uygulamanızın birlikte değişmesi gereken bağımlı ayarları gerektirdiğinde bu durum giderek karmaşıklaşır. Bunu aşmak için iyi bir çözüm, özel web.config bölümleri tanımlamaktır. Bu kılavuz, bu özel bölümlerin yanı sıra nitelikler ve çocuk öğeler ile etkili yapılandırma yönetimi için nasıl oluşturulacağını açıklayacaktır.

Özel Web.config Bölümlerini Anlamak

Varsayılan olarak, web uygulamaları yapılandırma ayarları için basit anahtar-değer çiftleri kullanır. Ancak, uygulamanız büyüdükçe, değerler birbirine bağlı olduğunda veya yapılandırmalar ortam başına değişmesi gerektiğinde, netliği korumak kritik hale gelir. Özel bölümler, ilgili ayarları bir araya gruplamak için size olanak tanır, böylece bunları yönetmek ve anlamak daha kolay olur.

Özel Yapılandırma Bölümleri Oluşturmak İçin Adım Adım Kılavuz

1. Yapılandırma Bölümünü Tanımlayın

Özel bir yapılandırma bölümü oluşturmak için, ASP.NET uygulamanızda ConfigurationSection temel sınıfını kullanarak yeni bir sınıf tanımlamanız gerekecek. Aşağıda, uygulamanızda izin verilen kullanıcı disk alanını tanımlayan özel bir yapılandırma bölümüne örnek verilmiştir.

Örnek: MailCenterConfiguration.cs

namespace Ani {
    public sealed class MailCenterConfiguration : ConfigurationSection {
        [ConfigurationProperty("userDiskSpace", IsRequired = true)]
        [IntegerValidator(MinValue = 0, MaxValue = 1000000)]
        public int UserDiskSpace {
            get { return (int)base["userDiskSpace"]; }
            set { base["userDiskSpace"] = value; }
        }
    }
}

Web.config’i Güncelleyin

Özel yapılandırma bölümünüzü web.config dosyasında aşağıdaki gibi kaydetmeniz de gerekecek:

<configSections>
    <!-- Mailcenter yapılandırma dosyası -->
    <section name="mailCenter" type="Ani.MailCenterConfiguration" requirePermission="false"/>
</configSections>
...
<mailCenter userDiskSpace="25000">
    <mail host="my.hostname.com" port="366" />
</mailCenter>

2. Çocuk Öğeleri Uygulamak

Özel yapılandırma bölümünüz içerisinde çocuk öğeleri tanımlamak sıklıkla gereklidir. Örneğin, ek özellikler içeren ayrı bir mail öğesi tanımlanabilir.

MailCenterConfiguration.cs’yi Geliştirme

Mail ayarlarına özgü yapılandırmaları işlemek için çocuk MailElement sınıfını ekleyin:

public sealed class MailCenterConfiguration : ConfigurationSection {
    [ConfigurationProperty("mail", IsRequired = true)]
    public MailElement Mail {
        get { return (MailElement)base["mail"]; }
        set { base["mail"] = value; }
    }

    public class MailElement : ConfigurationElement {
        [ConfigurationProperty("host", IsRequired = true)]
        public string Host {
            get { return (string)base["host"]; }
            set { base["host"] = value; }
        }

        [ConfigurationProperty("port", IsRequired = true)]
        [IntegerValidator(MinValue = 0, MaxValue = 65535)]
        public int Port {
            get { return (int)base["port"]; }
            set { base["port"] = value; }
        }
    }
}

3. Yapılandırma Değerlerini Erişmek

Yapılandırma bölümlerinizi kurduktan sonra, uygulamanızda bunlara erişmek oldukça basittir. Değerleri otomatik olarak web.config‘den okuyacak yapılandırma nesnenizi oluşturabilirsiniz.

Erişim Kodu Örneği

İşte MailCenterConfiguration özelliklerine nasıl erişeceğiniz:

private static MailCenterConfiguration instance = null;
public static MailCenterConfiguration Instance {
    get {
        if (instance == null) {
            instance = (MailCenterConfiguration)WebConfigurationManager.GetSection("mailCenter");
        }
        return instance;
    }
}

4. Geçerlilik Kontrolleri Uygulamak

Uygulamanızın geçersiz yapılandırma verilerinden kaynaklanan sorunlar olmadan başlatılmasını sağlamak için, yapılandırmanızı uygulamanın başlangıç aşamasında yüklemelisiniz. Böylece, geçerlilikte bir hata meydana geldiğinde, daha sonra bir çalışma zamanı hatası yerine hemen bir istisna göreceksiniz.

Global.asax Örneği

protected void Application_Start(object sender, EventArgs e) {
    MailCenterConfiguration.Instance;
}

Sonuç

ASP.NET uygulamalarınızda özel web.config bölümleri tanımlamak, ilgili ayarları gruplamanızı, kısıtlamalar eklemenizi ve farklı ortamlar arasındaki netliği sağlamanızı sağlayarak yapılandırma yönetiminizi önemli ölçüde geliştirebilir. Bu kılavuzda açıklanan adımları takip ederek, karmaşıklıkla ölçeklenebilen yapılandırma için yapılandırılmış ve sağlam bir yaklaşım oluşturabileceksiniz.

İster disk alanını yönetmek, ister başka herhangi bir bağımlı ayarları düzenlemek, özel yapılandırma bölümlerinin kullanılması uygulamalarınızın ihtiyaçlarını daha iyi karşılayacaktır.