Проблема:
У меня есть несколько экземпляров одного и того же приложения C #, запущенного на разных компьютерах (ОС: Windows XP, Windows 7) в одной локальной сети. Я должен поделиться между ними некоторыми данными конфигурации. Каждый процесс должен иметь доступ для чтения и записи к данным. Мой работодатель настаивает на хранении этих общих данных в файле, который находится в общем каталоге на одном из этих компьютеров.
Возможные решения:
- Эксклюзивное открытие файла: Данные хранятся в файле TXT (также возможна сериализация в двоичный файл и обратно). Каждый процесс использует
File.Open
сFileShare.None
при попытке открыть файл. ПолучениеIOException
означает, что файл уже используется, поэтому процесс должен подождите и повторите попытку позже. - Встроенная база данных SQL Server CE: данные хранятся в файле SDF. Движок может обрабатывать не более 256 одновременных подключений (v3.5 SP2), что более чем достаточно.
- встроенная база данных SQLite: данные хранятся в файле базы данных SQLite. В документации говорится, что SQLite работает, но может быть ненадежным при использовании в общей сетевой папке.
- Другой?
Каков предпочтительный способ сделать это?