2008-10-21 6 views
6

Có nhiều giá trị tôi đã lưu trữ trong phần cấu hình ASP.NET cho mỗi "mô-đun". Tôi đã tự hỏi nếu họ thậm chí thuộc về các tập tin này cả.Những giá trị này có thuộc về tệp cấu hình hoặc cơ sở dữ liệu không?

Bối cảnh là: Đây là nhiều phiên bản của ứng dụng web được triển khai. Tất cả đều sử dụng cùng một cơ sở dữ liệu nhưng có cài đặt riêng của họ.

Tôi chắc chắn rằng sự khác biệt giữa phát triển và sản xuất có trong tệp cấu hình. Một số giá trị tôi biết nên bao gồm: chuỗi kết nối, nhà cung cấp để sử dụng, cài đặt gỡ lỗi, v.v.

Tôi đã tính ra tất cả các phần phổ biến trong các lớp với các quy tắc và phương pháp riêng của chúng. Các phần còn lại là các cài đặt linh tinh cho mỗi mô-đun trong mỗi trang web. Một số tùy chọn tôi không rõ bao gồm:

  • Đối ModuleA, Show/Hide Lựa chọn
  • Đối ModuleB, các thuật ngữ được sử dụng cho lĩnh vực này
  • Đối ModuleC, Cho phép người dùng cuối để là gì thực hiện hành động X
+0

Tất cả các thiết lập được toàn cầu để các trường hợp ứng dụng, nhưng có thể được thay đổi trong thời gian chạy. –

Trả lời

4

Mmm những âm thanh như những thứ bạn có thể muốn thay đổi trong thời gian chạy cho ứng dụng của mình mà không phải sửa đổi app.config. Một quy tắc của ngón tay cái tôi muốn làm theo là bất cứ điều gì trong cấu hình nên được cho việc triển khai hoặc cấu hình máy chủ. Trong trường hợp này, các thiết lập của bạn dường như đang thay đổi hành vi ứng dụng và vì vậy tôi có thể sẽ chuyển chúng vào DB nếu nó không phải là rất nhiều nỗ lực.

+0

Bạn có bất kỳ đề xuất nào cho bố cục cơ sở dữ liệu không? Nếu nó đi vào cơ sở dữ liệu, chúng tôi đang cân nhắc việc có một bảng đơn với applicationId, moduleId, khóa và giá trị là các trường hoặc bảng được định nghĩa rõ ràng (IE: config_moduleA, config_moduleB, v.v ...)? –

+0

bảng đơn với cột cho id mô-đun. Sau đó, bạn có thể thêm các tập con của mô-đun hoặc mô-đun bổ sung, dễ dàng. Nó cũng dễ quản lý hơn để sao lưu và di chuyển DB, và thực tế là mọi thứ. – gbjbaanb

+0

Nó thực sự phụ thuộc vào các thiết lập và cách cấu hình bạn muốn làm cho nó. Tôi sẽ bắt đầu tại một bảng duy nhất như @gbjbaanb nói sau đó đi từ đó. Chúc may mắn. – smaclell

1

Âm thanh ModuleA và ModuleC giống như chúng có thể là thông tin hồ sơ người dùng. Nếu chúng không hoạt động theo người dùng, nhưng bạn có thể thêm chức năng sau này, sau đó có thể chuyển chúng sang DB.

Tôi đã viết các ứng dụng trong đó ModuleB cũng sẽ được đặt trong DB. Những thứ như nhãn biểu mẫu, v.v. có thể dễ dàng đi vào DB. Nếu, vào một ngày sau đó, ai đó quyết định thêm hoặc loại bỏ dấu hai chấm cho tất cả các nhãn biểu mẫu, đó là một điều khá dễ dàng để làm nếu tất cả văn bản được lưu trữ trong một DB.

1

Cân nhắc tình huống khi bạn cần chỉnh sửa một trong các giá trị.

Nếu giá trị nằm trong web.config, việc lưu thay đổi vào tệp đó sẽ khiến ứng dụng tái chế, gây bất tiện cho người dùng hiện tại. Không quá nhiều vấn đề nếu ứng dụng của bạn nằm trên mạng nội bộ chỉ được sử dụng trong giờ làm việc (mặc dù bạn có thể nhận được cuộc gọi tức giận từ anh chàng ở lại làm việc muộn). Nhưng có thể là một vấn đề trên một trang web công cộng với người dùng quốc tế.

Nếu giá trị nằm trong cơ sở dữ liệu, nó sẽ không ảnh hưởng đến quá trình xử lý của ứng dụng theo cách đó.

Dù bằng cách nào, hãy cân nhắc xem các giá trị có được lưu trong bộ nhớ RAM của ứng dụng hay không (web.config). Các giá trị cơ sở dữ liệu trong biến Ứng dụng hay trong Cache? Nếu có, bạn có thể không biết khi nào thay đổi sẽ xảy ra. Trừ khi bạn muốn khởi động lại ứng dụng.

Và quản trị viên thích hợp nào cần phải thực hiện thay đổi? Ai đó sẽ phải có quyền truy cập vào (các) máy chủ web để thay đổi web.config hoặc sang cơ sở dữ liệu (và bảng) để thay đổi điều đó.

0

Một vài câu hỏi: Tại sao bạn sử dụng cùng một DB cho nhiều phiên bản của ứng dụng và làm cách nào để có hiệu quả bảo trì? Trong tương lai, nó sẽ là một tùy chọn để tách db để cải thiện hiệu suất? Mô hình cấu hình có hỗ trợ thay đổi tốt hơn sau đó thay đổi dựa trên DB không?

Nói cách khác, bạn sẽ phải cân nhắc một biến rất nhiều để trả lời câu hỏi của bạn :-)

+1

Nhiều trường hợp được lưu trữ tập trung trên cùng một ứng dụng và máy chủ cơ sở dữ liệu nhưng yêu cầu các bộ cài đặt hoàn toàn khác nhau. –