Sto scrivendo un servizio web per alcune visualizzazioni fisiche di dati che stiamo raccogliendo e mostrando come parte di un progetto che stiamo eseguendo localmente link Alcune visualizzazioni saranno basate sullo schermo e alcune saranno fisiche (ad esempio, pagina 25 di questa presentazione di Resonate 2014 ). Una cosa che il mio servizio Web farà è segnalare alle visualizzazioni quando cambiare set di dati. Per farlo ho un singolo intero, DemoDataSetsDwellTime
. Ho iniziato con il pensiero SQL per aggiungere questo valore tra le mie dichiarazioni di tabella esistenti, ad es.
CREATE TABLE ActiveDemoDwells
(secondsDwell INT NOT NULL)
Ma questo sembra sbagliato - perché creare una tabella che memorizzerà sempre un solo numero, un solo record.
Quindi ho pensato di utilizzare le impostazioni dell'applicazione nel file Web.config
[Route("api/getdemodwelltime/")]
[AcceptVerbs("GET", "POST")]
public int GetDemoDwellTime()
{
return Int32.Parse(ConfigurationManager.AppSettings["DemoDataSetsDwellTimes"]);
}
con la voce corrispondente
<appSettings>
<add key="DemoDataSetsDwellTimes" value="20"/>
</appSettings>
Ma ho realizzato (da questa risposta ) che il file delle impostazioni non deve essere realmente utilizzato per i dati scrivibili, è più adatto / destinato alle impostazioni di sola lettura.
Quindi alla fine ho pensato di usare un semplice file flat, ad esempio qualcosa di simile
[Route("api/getdemodwelltime/")]
[AcceptVerbs("GET", "POST")]
public int GetDemoDwellTime()
{
var lines = File.ReadAllLines("settings.txt");
var dwellTimeLine = lines.TakeWhile(line => line.StartsWith("dwellTime=")).FirstOrDefault();
int result;
return (dwellTimeLine != null && Int32.TryParse(dwellTimeLine.Remove(0, "dwellTime=".Length), out result)) ? result : -1;
}
Ma questo potrebbe causare un disastro nell'evento (improbabile) in cui i metodi get e set vengono chiamati simultaneamente (penso, non sono sicuro di come i server web gestiscono l'accesso al file system locale).
Quindi, quale di questi è l'approccio "corretto" o c'è un'altra soluzione che ho trascurato?
- Memorizza il singolo valore leggibile e scrivibile nella propria tabella in un database,
- Memorizzalo come impostazione dell'applicazione nel file Web.config o
- Archivialo in un file flat.