Leistungsprobleme mit wiederholten Aufrufen von ConfigurationManager.AppSettings zum Abrufen von Appsetting-Werten?

8

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.

    
Sara Gamage 22.07.2011, 06:23
quelle

2 Antworten

11

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,

%Vor%

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,

%Vor%

Dies ist nicht nur besser in der Leistung, sondern auch in hohem Maße wartbarer und erweiterbarer Code.

    
oazabir 23.07.2011, 19:26
quelle
3

Ein paar Dinge hier.

  1. Sie können überprüfen, ob es sich um ein Leistungsproblem handelt, indem Sie etwas wie ANTS Profiler oder DotTrace verwenden, mit dem Sie die Leistung der Anwendung überprüfen können
  2. Ich würde sagen, dass Sie für einige Probleme in der Zukunft offen sein könnten, wenn Sie Anrufe überall verstreuen, denken Sie zum Beispiel, wenn Sie sich entscheiden, den Namen einer der App-Einstellungen zu ändern, könnte es katastrophal sein. Ich empfehle persönlich, diese Art von Dingen zu zentralisieren, wenn aus irgendeinem Grund zukünftige Änderungen möglich sind.
  3. Aus Performanceperspektive sollten Sie darauf achten, dass Sie nicht etwas "voroptimieren", das gerade nicht benötigt wird. Sie könnten dann mehr Komplexität hinzufügen, wenn es gerade nicht benötigt wird.
Mitchel Sellers 22.07.2011 06:54
quelle

Tags und Links