2008-10-15 28 views
11

Tôi đang viết một trang có thể sử dụng một vài chủ đề khác nhau và tôi sẽ lưu trữ một số thông tin về mỗi chủ đề trong web.config.Lưu trữ các giá trị trong web.config - appSettings hoặc configSection - có hiệu quả hơn?

Có hiệu quả hơn khi tạo một phần mớiNhóm và lưu trữ mọi thứ lại với nhau hay chỉ cần đặt mọi thứ vào phần cài đặt appSettings?

giải pháp configSection

<configSections> 
    <sectionGroup name="SchedulerPage"> 
     <section name="Providers" type="System.Configuration.NameValueSectionHandler"/> 
     <section name="Themes" type="System.Configuration.NameValueSectionHandler"/> 
    </sectionGroup> 
</configSections> 
<SchedulerPage> 
    <Themes> 
     <add key="PI" value="PISchedulerForm"/> 
     <add key="UB" value="UBSchedulerForm"/> 
    </Themes> 
</SchedulerPage> 

Để truy cập vào các giá trị trong configSection, Tôi đang sử dụng mã này:

NameValueCollection themes = ConfigurationManager.GetSection("SchedulerPage/Themes") as NameValueCollection; 
    String SchedulerTheme = themes["UB"]; 

appSettings giải pháp

<appSettings> 
    <add key="PITheme" value="PISchedulerForm"/> 
    <add key="UBTheme" value="UBSchedulerForm"/> 
</appSettings> 

Để truy cập vào các giá trị trong appSettings, Tôi đang sử dụng mã này

String SchedulerTheme = ConfigurationManager.AppSettings["UBSchedulerForm"].ToString(); 

Trả lời

11

Đối với thiết lập cấu hình phức tạp hơn, tôi sẽ sử dụng một phần cấu hình tùy chỉnh mà xác định rõ vai trò của từng bộ phận ví dụ

<appMonitoring enabled="true" smtpServer="xxx"> 
    <alertRecipients> 
    <add name="me" email="[email protected]"/> 
    </alertRecipient> 
</appMonitoring> 

Trong lớp cấu hình của bạn, bạn có thể phơi bày tính của bạn với một cái gì đó giống như

public class MonitoringConfig : ConfigurationSection 
{ 
    [ConfigurationProperty("smtp", IsRequired = true)] 
    public string Smtp 
    { 
    get { return this["smtp"] as string; } 
    } 
    public static MonitoringConfig GetConfig() 
    { 
    return ConfigurationManager.GetSection("appMonitoring") as MonitoringConfig 
    } 
} 

Sau đó, bạn có thể truy cập các thuộc tính cấu hình theo cách sau từ mã của bạn

string smtp = MonitoringConfig.GetConfig().Smtp; 
10

Sẽ không có sự khác biệt có thể đo lường về hiệu quả.

AppSettings là tuyệt vời nếu tất cả những gì bạn cần là cặp tên/giá trị.

Đối với bất kỳ điều gì phức tạp hơn, bạn nên tạo phần cấu hình tùy chỉnh.

Ví dụ bạn đề cập đến, tôi sẽ sử dụng appSettings.

6

Sẽ không có sự khác biệt về hiệu suất, vì ConfigurationManager.AppSettings chỉ gọi GetSection ("appSettings"). Nếu bạn cần liệt kê tất cả các khóa, thì phần tùy chỉnh sẽ đẹp hơn liệt kê tất cả các cài đặt ứng dụng và tìm kiếm một số tiền tố trên các khóa, nhưng nếu không bạn sẽ dễ dàng gắn vào appSettings trừ khi bạn cần thứ gì đó phức tạp hơn NameValueCollection.

+0

nhưng cho phép nói rằng chúng tôi tiếp tục thêm giá trị vào appSettings và danh sách trở nên rất lớn. Nó sẽ không được thực hiện hit liệt kê tất cả các danh sách và tìm thấy những mục cần thiết? Tôi tin rằng đó là những gì khuôn khổ nào. Nó tìm nạp phần appSettings và sau đó liệt kê trong tất cả cặp giá trị khóa để tìm một giá trị có khớp với giá trị khóa? – ItsZeus

Các vấn đề liên quan