Memorizzazione di un singolo valore letto / scrivibile per un servizio Web

0

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?

  1. Memorizza il singolo valore leggibile e scrivibile nella propria tabella in un database,
  2. Memorizzalo come impostazione dell'applicazione nel file Web.config o
  3. Archivialo in un file flat.
posta dumbledad 07.05.2014 - 12:26
fonte

1 risposta

1
  1. Altro. Che ne dici di una variabile statica? I single non giocano bene nell'ambiente web, ma potrebbe funzionare a tuo vantaggio. Vedi anche Variabile di sessione di Asp.net .

Un altro pensiero: hai ragione su una colonna / una tabella di record, ma se hai già l'infrastruttura impostata per leggere & scrivere tabelle, quindi il "costo" aggiuntivo per questo sarebbe piuttosto piccolo. Sarebbe facile da mantenere poiché utilizza la stessa logica utilizzata da tutto il resto.

    
risposta data 07.05.2014 - 15:15
fonte

Leggi altre domande sui tag