2012-10-27 43 views
17

Điều này nghe có vẻ như một câu hỏi nhỏ, tuy nhiên tôi đã xem qua web một thời gian ngắn và những gì tôi thấy là app.config về cơ bản là cơ chế cũ để lưu trữ khóa/cặp ứng dụng cho ứng dụng.C# App.config vs Settings File

Điều tôi muốn biết là có lý do nào chúng tôi (với tư cách là nhà phát triển .NET) sẽ chọn sử dụng app.config qua số Settings file không?

-Một người nào đó vui lòng cung cấp một số ưu và nhược điểm trên cả hai để chúng tôi có thể sử dụng chúng đúng cách.

nhờ một lần nữa

+0

Cài đặt ứng dụng rộng được lưu trữ trong app.config http://geekswithblogs.net/mbcrump/archive/2010/06/17/configuring-applicationuser-settings-in-wpf-the-easy-way.aspx – kenny

+0

có nhưng cài đặt ứng dụng rộng cũng có thể được sử dụng trong tệp cài đặt, bằng cách chọn phạm vi là Ứng dụng – IEnumerable

+2

Có. Nhìn dưới bìa của tập tin cài đặt và nó sử dụng app.config – kenny

Trả lời

25

App.config cho ứng dụng dành cho máy tính để bàn và Web.config cho ứng dụng web là một phần của hệ thống cấu hình .NET. Chủ yếu chúng được sử dụng để kiểm soát các thiết lập khung công tác .NET đối với ứng dụng của chúng ta. Đây là những thiết lập cấu hình như thay thế các phiên bản của hội đồng (phần <assemblyBinding>), thay thế phiên bản .NET framework (< khởi động >) vv (xem msdn cho lược đồ app.config đầy đủ.) Một phần dành riêng cho cài đặt tùy chỉnh của nhà phát triển ứng dụng (<appSettings>). Ngoài ra còn có khả năng tạo các phần tùy chỉnh. Vì vậy, khi chúng ta cần lưu trữ các thiết lập, chúng ta có thể quay trở lại trên app.config hoặc tạo các tệp cấu hình riêng của chúng ta.

Dưới đây là những ưu và contras của việc sử dụng app.config:

  1. Pro: Đã có một API chuẩn trong .NET đọc cài đặt từ phần appSettings. Nếu bạn chỉ cần một vài cài đặt cấu hình, thì việc sử dụng API sẵn sàng này dễ dàng hơn nhiều so với việc phát triển và kiểm tra lớp của riêng bạn để đọc các tệp cấu hình của bạn. Ngoài ra, tệp app.config đã được đưa vào dự án VS cho bạn.

  2. Pro: Có cấu trúc phân cấp chuẩn của machine.config/app.config. Nếu bạn có kế hoạch thiết lập như vậy mà có thể được thiết lập máy rộng và ghi đè hoặc trái như-là cho các ứng dụng cá nhân, bạn nên sử dụng app.config.

  3. Pro/Con: App.config được lưu trong bộ nhớ cache trong thời gian chạy. Nếu bạn dự đoán cập nhật của nó trong khi ứng dụng của bạn đang chạy, bạn cần phải yêu cầu cụ thể làm mới một phần của tập tin cấu hình. Đối với web.config, ứng dụng web sẽ tự động khởi động lại khi có sự thay đổi trong tệp. Điều này khá thuận tiện.

  4. Con: app.config được lưu trữ trong cùng thư mục với tệp .exe của bạn. Thông thường nó sẽ nằm trong thư mục con của C: \ Program Files. Thư mục này được bảo vệ thêm trong Windows 7 bằng văn bản.Bạn cần phải là thành viên của nhóm Administrators để viết ở đó và nếu UAC (User Access Control) của bạn trong Control Panel không được thiết lập là 0 (thông thường là không), bạn sẽ được hệ điều hành hỏi để xác nhận việc ghi vào c: \ File chương trình. Vì vậy, người dùng không có quyền quản trị sẽ không thể thay đổi cấu hình trong app.config. Tương tự như vậy để thay đổi cài đặt của bạn theo lập trình: ứng dụng của bạn sẽ nhận được ngoại lệ khi cố gắng viết app.config nếu nó không chạy dưới người dùng quản trị trên Windows 7. Tệp cấu hình của riêng bạn thường đi tới C: \ ProgramData \ hoặc c: \ Users subfolder (trên Windows 7). Những vị trí này thân thiện hơn với văn bản của người dùng hoặc chương trình.

  5. Con: Nếu người dùng đã chỉnh sửa tệp app.config của bạn và vô tình bị hỏng, toàn bộ ứng dụng sẽ không bắt đầu với một số thông báo lỗi tối nghĩa. Nếu tệp cấu hình riêng của bạn bị hỏng, bạn sẽ có thể cung cấp thông báo lỗi chi tiết hơn.

Kết luận: app.config cung cấp cho bạn cách tiếp cận dễ dàng hơn (phát triển nhanh hơn), chủ yếu phù hợp với cài đặt chỉ đọc. Tệp cài đặt tùy chỉnh cho phép bạn tự do hơn (nơi lưu trữ tệp, xác thực/xử lý lỗi, linh hoạt hơn với lược đồ của nó) nhưng yêu cầu nhiều công việc hơn trong quá trình phát triển.

1

Bạn có nó ngược, các tập tin cài đặt (hoặc tập tin ini khi họ ban đầu được gọi) là cơ chế sử dụng để giữ cài đặt ứng dụng (cặp khóa/giá trị) trước khi Windows 95. Với việc phát hành của Windows 95, chúng tôi khuyên rằng các thiết lập ứng dụng sẽ được chuyển vào Windows Registry (điều này đã trở thành vấn đề vì nếu bạn đăng ký Windows của bạn thì Windows của bạn không thể khởi động được nữa).

Tệp .config được phát bằng .Net. Định dạng XML cho phép cấu hình cài đặt động và phức tạp hơn các cặp khóa/giá trị đơn giản.

Tệp người dùng/cài đặt hiện đại là phần mở rộng XML của tệp .config (cài đặt có thể ghi đè cài đặt nhất định trong .config trong điều kiện cụ thể).

+0

OK trở lại câu hỏi chính, trong .NET VS chúng ta có thể thêm tập tin Settings.settings hoặc app.config. Tại sao không chỉ app.config – IEnumerable

+0

Cài đặt trong. Net là heirarchial. Tệp machine.config chứa các thiết lập máy rộng và chỉ đọc khi chạy. App.config chứa các thiết lập ứng dụng rộng (có thể thêm vào hoặc ghi đè lên các thiết lập trong machine.config), cũng chỉ đọc khi chạy. Cài đặt người dùng cụ thể được chứa trong tệp user.config ("Cài đặt") và thêm vào hoặc ghi đè cài đặt trong app.config. Tệp user.config có thể được lưu vào thời gian chạy. – Kevin

+3

Sau khi đọc lại nhận xét ở trên - tôi vẫn không trả lời câu hỏi "tại sao". Một số cài đặt cần thiết để ứng dụng chạy (ví dụ: thông tin kết nối cơ sở dữ liệu, tên hàng đợi, v.v.) không nên được người dùng cập nhật và phải ở trong app.config. Các cài đặt khác (ví dụ: đường dẫn tệp đầu vào, đường dẫn tệp đầu ra, v.v.) bạn có thể muốn/cần cho phép người dùng thay đổi lúc rutime và có khả năng lưu thông tin được cập nhật. Các loại cài đặt này phải có trong tệp user.config ("Cài đặt"). – Kevin