Tôi đã sử dụng các khuôn khổ cấu hình cây nhà lá vườn sau đây để quản lý cấu hình của các dự án của tôi cho một vài năm nay:khung cấu hình thay thế, tìm kiếm một sự thay thế
Người bắt chước đầu tiên
.properties
file Java (một bó củasupergroup.subgroup.property=value
dòng với hỗ trợ cho các bộ sưu tập) và hoạt động tốt cho nhiều tình huống (tôi thấy nó tốt nhất cho các ứng dụng nhỏ). Cái này tốt cho cấu hình rất đơn giảnThứ hai dựa trên
DataContractSerializer
(và tùy chọnXmlSerializer
) cho phép tất cả chức năng của cái đầu tiên có tất cả đặc quyền của XML và ít ống nước hơn để làm cho nó hoạt động. Điều này là tốt nhưng không thực tế và cồng kềnh để quản lý mà không có một giao diện người dùng rõ ràng trên đầu trang của nó để giảm thiểu đau đầu của việc dạy người dùng cuối để sửa đổi XML.
Cả hai khung soái hiện đến và đi từ POCOs mà không vấn đề cho phép truy cập đến giá trị cấu hình thông qua các thuộc tính/lĩnh vực (thông qua bằng tay/serialization tự động tương ứng), vì vậy chúng rất dễ dàng để làm việc với một nhà phát triển.
Bây giờ tôi đang xem xét khả năng bật cấu hình cơ sở dữ liệu và cấu hình thông thạo của mình, tôi đang tìm kiếm một giải pháp thay thế (tốt nhất là nguồn mở). Tôi không có vấn đề với việc làm lại tất cả các dự án hiện tại của tôi nếu tôi có thể giảm trùng lặp mã không cần thiết và cho phép họ truy cập vào DB và cấu hình thông thạo (ngoài khả năng hiện có của họ).
Bất kỳ đề xuất nào hoặc liệu nó có đáng để tôi tự mình có được các tính năng tôi đang theo dõi không?
Trong nghiên cứu của mình, tôi tìm thấy this câu hỏi có khả năng trùng lặp được trả lời bởi Nini nhưng chưa được cập nhật trong gần 2 năm và chỉ hỗ trợ các tùy chọn mà tôi đã có (dựa trên tài liệu của nó). Tôi đã bỏ lỡ điều gì đó trong nghiên cứu của tôi hay là có một lựa chọn tốt hơn?
Cập nhật
Các tính năng rõ ràng tôi sau là:
- file XML
- INI/Java như
properties
file - Cơ sở dữ liệu (ít nhất là MS SQL và SQLite, tùy chọn MySQL và bất kỳ người nào khác như bạn có thể tưởng tượng)
- Lưu loát (không cần tạo mã)
- Một số loại API tiện ích mở rộng cho phép tôi thêm các nguồn của riêng mình
- Chắc chắn cần phải tuần tự hóa/từ bất kỳ nguồn dữ liệu nào có thể truy cập thông qua thuộc tính/trường.
- hỗ trợ Enumeration
Tôi muốn được quan tâm trong việc mở rộng một khuôn khổ hiện tại nếu nó là đủ mở để làm những gì tôi cần phải làm, nhưng nếu không nó có thể không phải là một sự phù hợp tốt.
CẬP NHẬT
Chức năng từ System.Configuration
namespace hiện là rất tốt, và tôi quen với tốt như thế nào nó có thể làm việc nhưng nhìn chung nó không làm những gì tôi đang tìm kiếm. Tôi đã sử dụng nó (ngay cả trong các kịch bản nâng cao) nhưng là nó chỉ cho phép khả năng mở rộng XML hạn chế: nó không chỉ là những gì tôi sau.
Nếu tôi phải cung cấp bất kỳ chức năng được xác định trước nào, tôi muốn nói cấu hình thông thạo là quan trọng nhất (sẽ rất khó để cung cấp giao diện có giá trị cho điều này một cách chung chung). Tôi sẽ chỉ buông một thứ gì đó lên trên bất cứ thứ gì tôi tìm thấy.
Thực tế là đã hơn 24 giờ (và> 125 lượt xem) và không ai có thể đưa ra một thay đổi hợp lý cho tôi biết điều này có thể không tồn tại. Tôi sẽ bắt đầu một mình với hy vọng rằng ai đó có thể cung cấp một giải pháp thay thế thú vị.
Bạn có thể làm rõ các tính năng bạn đang theo dõi không? Truy cập vào DB (có nghĩa là lưu trữ cấu hình vào một kho lưu trữ trung tâm, tôi đoán) và cấu hình lưu loát. Còn gì nữa không? –
@VincentHubert - Được cập nhật với các yêu cầu tối thiểu. –
về mặt sửa đổi dự án, lưu ý Giao diện không thực hiện - IMHO, đây là loại điều bạn tạo giao diện xác định cách bạn muốn mã của bạn có thể tương tác với bất kỳ điều gì xảy ra là khung cấu hình hiện tại. Sau đó, nếu một cái gì đó không đáp ứng tất cả nhu cầu của bạn, bạn chỉ có thể 'điền vào những khoảng trống' để có được giao diện thực hiện –