Tải bản đầy đủ (.doc) (7 trang)

Thiết lập cấu hình cho ứng dụng .Net ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (128.33 KB, 7 trang )

Thiết lập cấu hình cho ứng dụng .Net
Trả lời Liên hệ
Đa phần ứng dụng thực tế đều có nhu cầu lưu trữ và truy xuất thông tin cấu hình hệ thống. Người
ta thường lưu trữ các thông tin này trong tập tin *.ini hoặc trong một dạng tập tin có cấu trúc do
người phát triển ứng dụng quy định.
Trong ứng dụng viết trên nền .NET, thông tin về cấu hình được chứa trong tập tin App.Config
(dùng cho Windows Application) và Web.Config (dùng cho ASP.NET Web Application) dựa
trên định dạng XML. Để đơn giản, chúng ta gọi đây là tập tin cấu hình.
Tập Tin Cấu Hình
Tập tin cấu hình là một tập tin dạng văn bản (text), dựa trên chuẩn XML. Tập tin này được chia
thành nhiều phần khác nhau, gọi là configuration section, cho phép đặt thông tin cấu hình cho
từng phần khác nhau của ứng dụng như Debugging, Profiling, Security, Trong phạm vi bài
viết này, chúng ta chỉ quan tâm đến phần thông tin cấu hình cho phép chúng ta, với vai trò là
người phát triển ứng dụng, có thể đưa thông tin vào tập tin này và truy xuất thông tin lúc chương
trình thực thi.
Mối liên hệ giữa configuration section, configuration declaration (section) và configuration
settings (tags) được thể hiện thông qua hình sau:
Mỗi phần thông tin cấu hình đưa vào tập tin cấu hình sẽ gồm 2 phần:
- Phần khai báo (configuration declaration): quy định lớp đối tượng (section handler) nào sẽ
đảm nhận việc đọc thông tin từ configuration settings tương ứng.
- Phần dữ liệu thực sự (configuration settings): chứa cấu trúc dữ liệu mà ta muốn thêm vào tập
tin cấu hình.
Đối với Windows Application, tập tin cấu hình thường nằm trong cùng thư mục với chương
trình và những thông tin cấu hình này sẽ ảnh hưởng đến toàn bộ hoạt động của chương trình. Tuy
nhiên, khi bạn cài đặt .NET Framework, còn có một tập tin cấu hình ảnh hưởng đến tất cả các
ứng dụng chạy trên máy. Bạn có thể tìm thấy tập tin này trong thư mục cài đặt .NET
Framework tại $WINDIR\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config.
Lúc thực thi, ứng dụng sẽ ưu tiên đọc thông tin cấu hình trong tập tin machine.config trước, sau
đó mới tới tập tin cấu hình. Dựa trên thông tin trong configuration section, kết quả thông tin cấu
hình sau cùng sẽ là:
- Kết hợp tập tin machine.config và tập tin cấu hình.


- Thông tin cấu hình ở tập tin cấu hình chiếm độ ưu tiên.
Thông Tin Cấu Hình
.NET cung cấp sẵn một configuration section gọi là appSettings. Phần này được khai báo trong
tập tin machine.config như sau:
Phần configuration declaration trong tập tin machine.config
Phần configuration settings sẽ được đặt lồng trong appSettings. Thông tin này được đặt trong
tập tin App.Config hoặc Web.Config.
Mặc dù .NET cung cấp phần chứa thông tin ở dạng Key-Value trong <appSettings> như bạn
thấy ở trên, nhưng phần này chỉ thích hợp nếu như bạn có một vài cặp Key-Value. Tuy nhiên,
nếu ứng dụng của bạn có nhiều thông tin trong <appSettings> sẽ dẫn đến việc khó tổ chức thông
tin cấu hình theo một dạng cấu trúc nào đó. Vì vậy, .NET cho phép bạn có thể định nghĩa phần
thông tin cấu hình riêng theo ý mình.
.NET cho phép định nghĩa configuration section trong một thẻ XML theo cấu trúc sau:
Như trình bày ở trên, mỗi configuration section sẽ bao gồm 2 phần declaration và settings. Phần
declaration tương ứng với thẻ <section> ở trên chứa 2 thuộc tính:
• name: thuộc tính này chứa tên của thẻ trong phần configuration settings mà section handler sẽ
đọc thông tin từ đó.
• type: thuộc tính này chứa tên của lớp (còn gọi là section handler) phụ trách việc đọc thông tin
từ trong configuration settings.
Phần khai báo chỉ ra rằng thông tin trong phần configuration settings sẽ được đọc thông qua
System.Configuration.NameValueFileSectionHandler section handler.
.NET cung cấp sẵn một số lớp trong System.Configuration mà ta có thể dùng để khai báo cho
thuộc tính type ở trên.
Chúng ta cũng có thể dùng thẻ <sectionGroup> được .NET cung cấp để thêm nhiều thông tin
chi tiết vào trong phần khai báo:
Truy xuất cấu hình
Giả sử rằng bạn có một configuration settings chứa thông tin cấu hình dạng cặp Key-Value như
sau:
Bây giờ, điều bạn cần làm là cho ứng dụng biết phần configuration settings này sẽ được xử lý
như thế nào. .NET cung cấp sẵn một section handler gọi là NameValueSectionHandler nằm

trong System.Configuration có nhiệm vụ xử lý các section chứa thông tin ở dạng cặp Key-
Value. Chúng ta sẽ dùng section handler này xử lý section mà chúng ta vừa định nghĩa ở trên.
Một khi đã đặt configuration settings and configuration declaration vào trong tập tin cấu hình,
bạn có thể truy xuất thông tin đó từ trong ứng dụng như sau:
Một ví dụ thứ hai về cách dùng SingleTagSectionHandler. Giả sử bạn đưa thông tin vào tập tin
cấu hình với cấu trúc như sau:
Bạn có thể thêm configuration declaration như sau:
Trong ứng dụng, bạn có thể dùng đoạn code sau để truy xuất thông tin:
Để khai báo một section handler, bạn phải tạo ra một lớp đối tượng cài đặt giao diện
System.Configuration.IconfigurationSectionHandler.
Có một method mà bạn phải định nghĩa khi cài đặt giao diện IconfigurationSectionHandler:
• parent - configuration settings mà là cha của configuration section.
• configContext - một biến kiểu HttpConfigurationContext, khi hàm Create được gọi từ
ASP.NET configuration system. Bằng không, tham số này sẽ được gán giá trị là null (C#) hoặc
Nothing (VB.NET).
• section - XmlNode bao gồm thông tin cấu hình. Tham số này cho phép truy cập trực tiếp đến
nội dung XML của configuration section.
• Giá trị trả về - Hàm này trả về một lớp đối tượng do bạn quy định.
Dưới đây là một ví dụ về việc khai báo lớp SectionHandler để đọc thông tin cấu hình theo cấu
trúc bạn quy định:
DatabaseInfo là lớp đối tượng dùng để định nghĩa cấu trúc của configuration section. Lớp này
chứa các phần tử tương ứng với các thông tin trong configuration settings.
Sau khi tạo xong lớp section handler cho configuration section, bạn có thể khai báo section này
trong tập tin cấu hình như sau:
Trong đó, ConfigSectionProj là tên của namespace.
Sau đó bạn có thể khai báo phần configuration settings trong tập tin cấu hình như sau:
Để đọc section databaseInfo từ trong tập tin App.config hoặc Web.Config, bạn có thể dùng hàm
ConfigurationSettings.GetConfig với cú pháp như sau:
Hàm ConfigurationSettings.GetConfig sẽ trả về một lớp đối tượng cho configuration section
mà bạn đã định nghĩa.

Lời Kết
Hầu hết các ứng dụng đều có nhu cầu chứa thông tin chung cho toàn bộ ứng dụng ở một nơi lưu
trữ nào đó, có thể là trong tập tin ini hay registry. Việc lựa chọn cách thức lưu thông tin ở đâu là
tùy thuộc vào người phát triển ứng dụng và ngữ cảnh mà ứng dụng sẽ hoạt động. Thực tế sẽ
thuận lợi hơn rất nhiều nếu chúng ta tận dụng được những khả năng mà hệ thống hỗ trợ. Hi vọng
qua bài này, các bạn phần nào nắm được cách thức thêm thông tin cấu hình vào cho ứng dụng
của mình thông qua tập tin cấu hình mà .NET Framework hỗ trợ.

Tên trường

Mô tả


NameValueSectionHandler

Đọc thông tin cấu hình ở dạng một cặp Name-Value được trả về
thông qua lớp đối tượng
System.Collections.Specialized.NameValueCollection


DictionarySectionHandler

Đọc thông tin cấu hình ở dạng một cặp Key-Value được trả về
thông qua lớp đối tượng System.Collections.Hashtable


SingleTagSectionHandler

Đọc thông tin cấu hình ở dạng một cặp Key-Value và trả về thông
qua lớp đối tượng System.Collections.Hashtable



IgnoreSectionHandler

cung cấp một section handler định nghĩa cho configuration section
được truy xuất và xử lý bởi hệ thống khác hơn là dùng
System.Configuration. Để truy cập thông tin trong phần này,
chúng ta phải đọc và duyệt qua toàn bộ thẻ XML trong tập tin cấu
hình


User-defined Section
handlers

do người dùng định nghĩa bằng cách cài đặt giao diện
System.Configuration.IConfigurationSectionHandler


×