All'interno del mio servizio Web, apro un filestream a un file sul disco locale. Continuo a questo per tutta la durata del servizio. Per ogni query che arriva, io uso il filestream per leggere il disco. Lo faccio per evitare di dover riaprire il filestream su ogni query. La latenza di questo percorso è fondamentale (dovrebbe essere inferiore a pochi ms). Io uso SSD per mantenere il tempo di IO del disco a 0,1 ms o meno.È sicuro tenere aperto C# Filestream per lunghi periodi di tempo?
Può il filestream 'andare male' (diventare non valido) per lunghi periodi di tempo (giorni). È più sicuro riaprire il filestream su ogni query? Se devo riaprire, qual è il sovraccarico di riaprire costantemente un filestream più volte al secondo?
C'è un motivo per cui non stai caricando il contenuto dei file nella memoria statica se ti preoccupi della latenza? Penso che la domanda dovrebbe essere quale modello dovresti utilizzare per accedere rapidamente ai contenuti. – AdamV
Il file è troppo grande per adattarsi alla memoria. Ho un indice che mi consente di cercare direttamente l'offset corretto e di leggere da lì. Non dovrebbe essere più di 1 IO. La quantità di dati letti è piccola. – user201511
Avete scritto un cablaggio di test per provare ad avere un singolo flusso di file aperto rispetto all'apertura e alla chiusura. Ti suggerirei di provare a scrivere un test contro questo e confrontare i risultati. – AdamV