2008-10-29 1 views
6

Ich habe einige Konfigurationswerte für eine asp.net Web App. Sie werden von einem Systemadministrator verwaltet, sobald das System in Betrieb genommen wird. Soll ich diese Werte in der Datenbank oder in einer Konfigurationsdatei speichern? Gibt es eine Best Practice für so etwas?Config Werte in DB oder Datei?

Antwort

8

Es ist einfach und bequem, eine robuste Schnittstelle zum Bearbeiten der Werte in der Datenbank zu erstellen.

Es ist weniger einfach, einen guten für die Konfigurationsdatei zu erstellen.

Also würde ich normalerweise möchten Sie alles, was Sie möchten, dass Ihre Benutzer/Administratoren später in der Datenbank bearbeiten können. Alles, was nur bei ernsthaften Änderungen wie Neuinstallation etc. berührt werden muss, ist in der Konfigurationsdatei besser aufgehoben.

+0

Ilya, ich glaube es ist nicht so einfach. Sie sprechen über zusätzliche Seiten, Tests, Sicherheitsmanagement. Habe ich das Testen erwähnt? Das kostet Zeit, Mühe und Geld. Ich würde argumentieren, dass die Konfigurationsdatei die "einfachen" und "praktischen" Vorteile hat. Sie möchten die Datenbankoption, wenn: 1. Administratoren keinen Zugriff auf die Konfigurationsdatei haben 2. Es gibt mehrstufige Sicherheitsrollen 3. Die Einstellungen müssen von anderen Anwendungen gelesen werden, nicht nur von dieser ASP.NET-Anwendung. Mit anderen Worten, in größeren und komplexeren Situationen ist die Konfigurationsdatei nicht ausreichend. Wenn es * ausreicht, benutze es. Was vermisse ich? –

0

Je nach Kontext der Konfigurationsinformationen können Sie festlegen, dass sie in der Datei "web.config" beibehalten werden sollen, oder Sie können Wartungstabellen für sie in der Datenbank erstellen. Ich würde typischerweise halten Dinge Backend spezifischer, wie Verbindungszeichenfolgen, FTP-Speicherorte, Benutzernamen/Kennwörter (für die Anwendung, nicht Benutzerberechtigungen) in der web.config obwohl.

Normalerweise halte ich mehr relative Informationen, die sich auf die Informationen in der Datenbank beziehen, als die Anwendung selbst in der Datenbank.

Dies ist alles lose basiert und nicht immer der Fall.

+0

Durch das Aktualisieren der Datei web.config wird die Site von IIS wiederverwendet. –

+0

Wie gesagt, alles hängt vom Kontext ab. – thismat

+1

Es stimmt, dass die Anwendung sofort reagiert, wenn Sie die Konfigurationsdatei ändern. Der nächste Treffer sieht neues und nicht altes Verhalten. Es stimmt nicht, dass IIS wiederverwendet wird. ASP.NET verwendet die NTFS-Dateiänderungsbenachrichtigungen, sodass es informiert wird, wenn sich der Inhalt der Datei ändert. Das ist viel leichter als das Recycling von IIS. –

0

Ich bevorzuge es, Datenbanken zu vermeiden, wenn ich kann und ich brauche die Leistung nicht. Wenn Sie eine Datenbank benötigen/haben, dann würde ich sagen, so viel wie möglich an einem Ort. Eine Sache zu verwalten.

3

Ich würde immer Datenbank empfehlen, einfach weil Sie ein Admin UI relativ einfach erstellen und alle Änderungen mit ähnlicher Leichtigkeit überprüfen können. Obwohl Sie das Gleiche mit Änderungen an einer Datei erreichen können, ist die Datenbankroute mit einer Art Admin-Kontrollbereich immer vorzuziehen. Vor allem, wenn Sie wissen wollen, wer wann was geändert hat.

Auch in unserer Umgebung beinhaltet das Ändern einer Konfigurationsdatei, wenn ein Fehler aufgetreten ist, die gesamten Änderungsmanagement-Genehmigungen/etc., Was ziemlich schmerzhaft ist. Wenn Sie also die Zeit nehmen, Konfigurationseinstellungen in eine Datenbank einzubauen, wird es auf lange Sicht besser funktionieren. Nur meine $ 0,02.

+0

Vereinbart, wenn Auditing notwendig ist, ist das ein Grund für die Datenbank. Wenn Ihr Änderungsmanagementprozess anders ist, weil die konzeptionellen Informationen in einer Datei im Vergleich zu einer Datenbank gespeichert sind, ist dieser Prozess fehlerhaft. –

1

Ich ziehe eine Textkonfigurationsdatei, ini-Stil oder XML-Stil aus diesen zwei Gründen:

1 - Sie können Kommentare in der Textdatei setzen.

2 - Texteditoren haben einen "Rückgängig" -Befehl.

0

Ich denke Datenbanken sind ein großartiger Ort für Konfigurationswerte für verteilte Anwendungen, wo Sie Benutzereinstellungen verfügbar sein sollen, egal welchen Computer sie verwenden.

In Dateien gespeicherte Konfigurationswerte sind sehr nützlich für computerspezifische Konfigurationen (z. B. wenn Sie ein zugeordnetes Laufwerk zum Identifizieren eines Speicherorts verwenden und jeder Benutzer eine andere Zuordnung hat, z. B. ein CD/DVD-Laufwerk).

Wenn Sie noch keine Datenbank für die von Ihnen entwickelte Anwendung haben, ist es möglicherweise zu viel Aufwand, eine Datenbank exklusiv für die Anwendungskonfiguration zu haben.

+0

JettGeek, die ursprüngliche Frage war über eine ASP.NET-Webanwendung, so dass computerspezifische Einstellungen für die Benutzer nicht gelten. –

0

Ich bevorzuge einen Text .ini Datei. Sie sind einfach zu bearbeiten und leicht zu verschieben, wenn sich Ihre Anwendung bewegt. Hier ist ein Beispiel Setting class, das Sie nützlich finden können.

+0

Protagonist, ich verstehe nicht, warum Sie das überhaupt tun würden. Im Prinzip sind ini-Dateien und Konfigurationsdateien ähnlich: einfache Textdateien, die mit einem Texteditor bearbeitet werden können, Notepad reicht. Der Unterschied zu Konfigurationsdateien besteht in der umfangreichen Unterstützung von .NET Framework in den Systembereichen System.Configuration und System.Web.Configuration. So geben Konfigurationsdateien Ihnen die Vorteile der INI-Datei-Idee und umfangreiche Infrastruktur-Unterstützung. Der einzige Vorteil, den ich für Ini-Dateien sehen kann, ist eine subjektive Meinung, dass das Ini für den Menschen besser lesbar ist. Einfach das Lesen von XML üben! –