2010-08-31 33 views
10

Tôi có một giải pháp với khoảng 10 dự án có cấu hình chỉ đọc. Chúng là các ứng dụng web, dịch vụ windows, ứng dụng giao diện điều khiển, vv Tất cả các dự án ngoại trừ một dự án trên cùng một máy chủ. Mỗi dự án có 3 môi trường - dev, test và production. Vì vậy, có 30 bộ cấu hình khác nhau, mỗi cấu hình có số lượng cài đặt phù hợp. Nó cồng kềnh để giữ cấu hình nhất quán trên mọi ứng dụng và môi trường.Bạn sẽ tập trung cấu hình qua nhiều dự án như thế nào?

Tôi đã nhận thấy hầu hết cấu hình là phổ biến trên mỗi dự án, vì vậy tôi đã nghĩ sẽ tốt hơn nếu tập trung cấu hình theo một cách nào đó. Tôi đọc ở đâu đó rằng một dịch vụ WCF có thể là một cách tiếp cận tốt. Tôi nghĩ có thể một thư viện có chứa một lớp tĩnh mã hóa cứng thực sự có thể làm việc OK - mặc dù phải biên dịch để thay đổi cấu hình. Lý tưởng nhất là cấu hình sẽ xuất hiện trong tệp .config thực tế.

Bạn sẽ tập trung cấu hình cho nhiều dự án như thế nào?

Trả lời

11

Nếu bạn muốn duy trì giao diện cấu hình chuẩn, hãy xem ProtectedConfigurationProvider. cung cấp dịch vụ này cho phép bạn lưu trữ dữ liệu cấu hình của bạn bên ngoài của một tập tin cấu hình tiêu chuẩn, mã hóa nó tuy nhiên bạn thích, hoặc chuyển hướng các yêu cầu về cấu hình trong bất kỳ cách nào bạn thấy phù hợp:

Vẻ đẹp của cách tiếp cận này là không có gì thay đổi trong các ứng dụng hiện có của bạn. Họ không cần phải biết nơi lưu trữ cấu hình của họ. Việc truy xuất dữ liệu cấu hình được phân lập trong nhà cung cấp. Bạn có thể lưu nó trong một tập tin trung tâm, lưu trữ nó trong một cơ sở dữ liệu, hoặc truy cập nó thông qua một dịch vụ web. Nếu bạn thay đổi ý định, bạn chỉ phải cập nhật nhà cung cấp của mình. Mọi thứ khác vẫn như cũ.

+0

Tôi nhớ điều này từ đâu đó;) Câu trả lời tuyệt vời! –

2

Bạn chắc chắn có thể thiết lập dịch vụ WCF có thao tác đơn giản để truy xuất cài đặt cấu hình, tham gia ứng dụng và môi trường làm tham số; sau đó bạn có thể tải dịch vụ lên cấu hình chính xác từ một tệp và gửi lại cho người gọi. Nó có thể là một ý tưởng tốt để làm các tập tin cấu hình lồng nhau, do đó các thiết lập chung chỉ được xác định một lần ở mức chung nhất của chúng. Một vấn đề tiềm năng có thể phát sinh nếu dịch vụ WCF bị hỏng khi khởi động một trong các ứng dụng của bạn - bạn sẽ cần phải quyết định xem có cấu hình/bộ nhớ đệm mặc định của bản sao trước đó cho tình huống này hay không. t cho phép các ứng dụng khởi động nếu chúng không thể kết nối.

Một điều nữa cần xem xét, là lợi ích của tệp .config trong .NET khi chúng thay đổi ứng dụng có thể phản hồi; bạn có thể muốn có một dịch vụ WCF gọi lại thông báo cho khách hàng nếu cấu hình của họ đã được cập nhật trên máy chủ trung tâm, vì vậy họ có thể yêu cầu bản sao mới và tự cập nhật nếu cần.

+0

Bạn đã đưa ra một số điều tôi đã không mặc dù với cách tiếp cận WCF. Tôi upvoted câu trả lời của bạn. – HAL9000

1

Vì chúng (gần như) tất cả trên cùng một máy chủ, bạn có thể xem xét cung cấp mặc định trong các tệp machine.config và/hoặc trung tâm web.config. Tôi thường không phải là người hâm mộ sử dụng/thay đổi các tệp này nhưng chúng đang ở đó ... trong \Windows\Micsrosoft.NET\Framework<version>\Config\

+0

Không phải là một lựa chọn tồi. Nếu tôi sở hữu các máy chủ tôi sẽ sử dụng machine.config. Tôi đang ở một tổ chức lớn và chúng tôi đang cố gắng giữ cho máy chủ xây dựng thực sự đơn giản. – HAL9000

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