2012-11-20 11 views
12

Qualcuno sa se si ottiene un risultato in termini di prestazioni chiamando il metodo GetSetting di CloudConfigurationManager? Riappare il file azzurro per esempio o è memorizzato nella cache? Non sono sicuro se dovrei aggiungere la mia cache/variabile statica per migliorare il perf per qualcosa chiamato spesso come una stringa di connessione.La cache del metodo GetSetting di CloudConfigurationManager?

Grazie

+0

Basta dare un'occhiata al metodo GetSetting usando Reflector e facci sapere :) –

+1

Ha. Ho postato per evitare di farlo. Non è una priorità per me, ma probabilmente lo farò e postare indietro se non sento nulla da nessuno. – Bryan

+0

Non penso che stia memorizzando il valore nella cache. – Guy

risposta

11

Il source è disponibile su GitHub.

Se dai un'occhiata all'origine puoi vedere che non sta facendo alcun caching, quindi se stai riscontrando problemi di prestazioni potresti voler implementare il tuo caching personale.

Il corpo di GetSetting mostra un semplice ritorno:

value = GetValue("ServiceRuntime", name, GetServiceRuntimeSetting); 

if (value == null) 
{ 
    value = GetValue("ConfigurationManager", name, n => ConfigurationManager.AppSettings[n]); 
} 

return value; 
+0

La tua risposta potrebbe essere migliorata aggiungendo uno snip di codice pertinente dalla fonte. In realtà il tuo link non è più valido. :( –

+0

Ho aggiornato il collegamento, c'è un bel po 'di codice che devi leggere per vedere che non si tratta di cache probabilmente è troppo da incollare qui. – Estyn

+0

Non mi sembra cache, ma non è ovvio dal codice hai postato se è così. Passa la chiamata a 'GetServiceRuntimeSetting' che potrebbe memorizzare i valori di cache per tutto quello che so. – Rory

1

No, non è memorizzato nella cache, come lei ha suggerito che avrebbe dovuto creare i propri caching per il miglioramento delle prestazioni.

2

La risposta accettata potrebbe non essere corretta.

E 'vero che CloudConfigurationManager sé non cache, ma è perché internamente ai delegati di ConfigurationManager o WebConfigurationManager, che fare cache di valori.

Da MSDN:

Per <appSettings> e <connectionStrings>, utilizzare l'AppSettings e connectionStrings proprietà. Questi metodi eseguono operazioni di sola lettura , utilizzano una singola istanza memorizzata nella cache della configurazione e sono compatibili con multithread .

In modo che, anche se si accede direttamente da CloudConfigurationManager, molto probabilmente, non ci sarebbe alcuna operazione IO sostenuta.

Problemi correlati