In meinem Web-Service öffne ich einen Filestream zu einer Datei auf dem lokalen Datenträger. Ich behalte das für die Lebenszeit des Dienstes herum. Für jede eingehende Abfrage verwende ich den Filestream, um den Datenträger zu lesen. Ich mache dies, um zu vermeiden, den Filestream bei jeder Abfrage neu zu öffnen. Die Latenz dieses Pfades ist kritisch (sollte weniger als wenige ms betragen). Ich verwende SSD, um die IO-Zeit der Festplatte auf 0,1 ms oder weniger zu halten.Ist es sicher, C# Filestream für längere Zeit offen zu halten?
Kann der Filestream über längere Zeiträume (Tage) "fehlerhaft" (ungültig) werden. Ist es sicherer, den Filestream bei jeder Abfrage neu zu öffnen? Wenn ich wieder öffnen muss, was ist der Aufwand, einen Filestream mehrmals pro Sekunde zu öffnen?
Gibt es einen Grund, warum Sie den Inhalt der Dateien nicht im statischen Speicher laden, wenn Sie sich um Latenzzeiten sorgen? Ich denke, die Frage sollte sein, welches Muster Sie verwenden sollten, um schnell auf die Inhalte zuzugreifen. – AdamV
Die Datei ist zu groß, um in den Speicher zu passen. Ich habe einen Index, mit dem ich direkt zum richtigen Offset suchen und von dort lesen kann. Es sollte nicht mehr als 1 IO sein. Die Menge der gelesenen Daten ist gering. – user201511
Haben Sie eine Testumgebung geschrieben, um zu versuchen, einen einzigen Dateistrom geöffnet zu haben, im Gegensatz zu Öffnen und Schließen? Ich würde vorschlagen, dass Sie versuchen, einen Test dagegen zu schreiben und die Ergebnisse zu vergleichen. – AdamV