Ich arbeite an einer Codebasis, die viele identische ConfigurationManager.AppSetting-Aufrufe aufweist.
Hört sich das nach einem möglichen Leistungsproblem an?
Oder weil die Daten, die sehr klein sind, trivial und nicht "teuer" sind? Ständig zur Datei zurückkehren, um die Daten zu erhalten, oder speichert die .NET-Laufzeit die Datei / Werte / Aufrufe?
Wenn dies kein Leistungsproblem ist, handelt es sich nur um einen unorganisierten Ansatz für den Zugriff auf die Anwendungskonfigurationswerte. Es sollte lediglich überarbeitet werden, um eine sauberere und konsistentere Implementierung des Zugriffs auf die Einstellungen zu ermöglichen.
Ich würde sagen, dass es mehr um das Problem der Wartbarkeit von Codes geht als um das Leistungsproblem. Eine einfache Wörterbuchsuche in AppSettings
wird kein Problem darstellen, es sei denn, Sie haben Code, der versucht, in AppSettings
in einer Schleife, die etwa hundert Mal ausgeführt wird, eine Suche durchzuführen. Sicher wird ein solcher Code ein Leistungsproblem verursachen. Aber noch wichtiger ist, dass Sie in Ihrer Codebasis ConfigurationManager.AppSettings["MyKey"]
haben. Sie führen eine magische Schnur ein. Wenn Sie den Schlüssel in Ihrer Konfigurationsdatei ändern müssen, müssen Sie in all Ihren Projekten gründlich suchen und ersetzen. Darüber hinaus treffen wir in der Regel eine Entscheidung basierend auf dem in appSettings gespeicherten Wert. Es ist nicht immer geradlinig zu lesen und den Wert wie er ist zu verwenden. Manchmal treffen Sie Entscheidungen basierend auf dem Wert. Zum Beispiel,
Sie könnten diese Logik an hundert Stellen wiederholen. Nehmen wir an, Sie müssen dort eine weitere Bedingung hinzufügen:
%Vor%Das wird chaotisch. Dein Code beginnt zu stinken.
Ich empfehle meinem Entwicklerteam daher immer, ConfigurationManager.AppSettings
nirgendwo im Code zu verwenden. Verwenden Sie eine statische Klasse, in der Sie die Konfigurationswerte lesen, und alle diese Entscheidungen werden in eine einzige Variable eingekapselt. Zum Beispiel,
Dies ist nicht nur besser in der Leistung, sondern auch in hohem Maße wartbarer und erweiterbarer Code.
Ein paar Dinge hier.
Tags und Links .net performance appsettings