У меня есть приложение, которое подключается к базе данных и может использоваться в многопользовательском режиме, при котором несколько компьютеров могут подключаться к одному и тому же серверу базы данных для просмотра и изменения данных. Один из клиентов всегда назначается «главным» клиентом. Этот мастер также получает текстовую информацию от входа RS232 или UDP и записывает эти данные каждую секунду в текстовый файл на локальном компьютере.
Моя проблема в том, что другим клиентам необходимо получить доступ к этим данным от главного клиента. Мне просто интересно, как лучше и эффективнее решить эту проблему. Рассматриваю два варианта:
- Напишите класс синхронизации папок для синхронизации папки на удаленном (главном) компьютере с папкой на локальном (клиентском) компьютере. Это будет процедура копирования файлов с буферизацией в потоках.
- Реализуйте клиент / сервер, чтобы главный компьютер мог передавать эти данные любому клиенту, который подключается и запрашивает данные. Мастер отправит файл через TCP / UDP запрашивающему клиенту.
Решение должно будет учитывать следующее:
а. Файлы журнала записываются каждую секунду. Он должен избегать любых потенциальных проблем с блокировкой файлов.
б. Процедура копирования должна копировать только те файлы, которые были изменены позже, чем те, которые уже были на клиентской машине.
c. Будьте максимально эффективны
d. Все машины подключены к локальной сети
е. Синхронизацию необходимо выполнять, скажем, каждые 10 минут или около того.
f. Объем данных составляет порядка ~ 50 МБ, но после завершения начальной (первой) синхронизации объем данных для передачи будет порядка ~ 1 МБ. Это будет увеличиваться в будущем
Какой метод лучше использовать? Какие плюсы / минусы? Я также видел сообщение Fast File Copy, которое я собираюсь использовать.