In meiner Web-Anwendung, las ich einige Einstellungen von einer externen Konfigurationsdatei während Application_Start
, sie dann über die vielen Methoden der Anwendung aufzurufen:Müssen diese statischen Anwendungseigenschaften gesperrt werden?
namespace Common
{
public static class CommonConfigSettings
{
public static string DataSource { get; set; }
public static string DatabaseName { get; set; }
public static string DatabaseUserName { get; set; }
public static string DatabasePassword { get; set; }
}
}
Während Application_Start
diese aus einer XML-Datei in die statische Variable gelesen werden:
DataSource = els.FirstOrDefault(item => item.Attribute("key").Value == "DataSource").Attribute("value").Value;
DatabaseName = els.FirstOrDefault(item => item.Attribute("key").Value == "DatabaseName").Attribute("value").Value;
DatabaseUserName = els.FirstOrDefault(item => item.Attribute("key").Value == "DatabaseUserName").Attribute("value").Value;
DatabasePassword = els.FirstOrDefault(item => item.Attribute("key").Value == "DatabasePassword").Attribute("value").Value;
Bei der Anwendung sie werden wie folgt verwendet:
myConn.ConnectionString = string.Format("Persist Security Info=False; User ID={0}; Password={1}; Initial Catalog={2}; Data Source={3}; Connection Timeout=60",
CommonConfigSettings.DatabaseUserName,
CommonConfigSettings.DatabasePassword,
CommonConfigSettings.DatabaseName,
CommonConfigSettings.DataSource);
Zu keinem Zeitpunkt werden die statischen Werte in die folgenden Application_Start
geschrieben - sie werden nur wieder ausgelesen (obwohl vielleicht von 2 + Personen gleichzeitig). Es gibt auch keine statischen Methoden, nur Eigenschaften. Ich lese über Verriegelung und Gewindesicherheit here und here, habe mich aber nur verwirrt. Soll ich diese Werte sperren und wenn ja, an welchem Punkt bitte?
Danke - das ist gut zu wissen. Ist das Sperren dann erforderlich, wenn die Kombination von gleichzeitigem Schreiben und Lesen eingeführt wird (was ist sinnvoll)? – EvilDr
Gerade für diesen Fall bearbeitet. ;-) Ja, wenn simultanes Schreiben und Lesen der Fall wäre, müssten Sie einen Sperrmechanismus haben. – Udontknow
* "alle benötigten Daten in einer einzigen Struktur zurückgeben" *. Entschuldigung, kannst du bitte erklären, was das bedeutet (wie anders ist es, was ich gerade mache)? – EvilDr