Ищите идеи решения о том, как обновлять файлы в режиме реального времени, которые могут быть заблокированы другим программным обеспечением - PullRequest
0 голосов
/ 07 января 2010

Я заинтересован в том, чтобы получить идеи решения проблемы, которая у нас есть.

Справочная информация:

У нас есть программные инструменты, которые работают на ноутбуках и переносят данные на аппаратные компоненты. Это программное обеспечение считывает серию файлов данных, чтобы выполнить программирование на оборудовании. Он находится в производственной среде и работает непрерывно в течение дня.

Проблема:

В настоящее время это центральное хранилище, к которому подключается программное обеспечение для чтения файлов данных. Программное обеспечение считывает файлы и сохраняет их на протяжении всего процесса перепрошивки. Он работает весь день на разных аппаратных компонентах, поэтому вполне возможно, что эти файлы могут быть «заблокированы» большую часть дня.

Существуют новые требования, согласно которым эти файлы данных, которые считывает программное обеспечение, должны обновляться в реальном времени, что окажет минимальное влияние на конечного пользователя, который выполняет перепрошивку. Мы будем писать сервис, который удаляет файлы в режиме реального времени.

Программное обеспечение разработано сторонним поставщиком и не может быть изменено нами. Тем не менее, он ожидает, что место для поиска файлов данных, так что все, вплоть до момента перепрошивки, наш процесс, который мы можем изменить.

Вопрос:

Какой подход вы бы использовали для решения этой проблемы с точки зрения программирования решения? Мы не уверены, как удалять файлы в режиме реального времени, учитывая блокировки, которые будут присутствовать на них в течение дня. Мы согласимся на «как можно скорее» решение, если это будет значительно проще.

Ответы [ 2 ]

1 голос
/ 07 января 2010

Единственным выходом из этой загадки, кажется, является введение дополнительного файлового хранилища вместе с подобной сервису логикой, отвечающей за синхронизацию этих хранилищ.

Другими словами, загрузка файла происходит в одном из репозиториев (назовите его «входной репозиторий»), а процесс перепрошивки использует другой репозиторий (назовите его «выходной репозиторий»). Логика синхронизации постоянно объединяет входной репозиторий для новых файлов (на основе метки времени файла или другого ...) и, когда находит такие новые файлы, пытается скопировать их в «выходной каталог»; такое копирование происходит мгновенно, когда мигающая логика не заблокировала соответствующий файл в выходном каталоге, или отличается до тех пор, пока файл не будет разблокирован.

Примечание. Во время копирования файла логика синхронизации может / должна блокировать файл, что очень временно предотвращает перезапись файла при новой загрузке, но обеспечивает полную целостность скопированного файла. Разница с существующей системой заключается в том, что блокировка удерживается в течение гораздо более короткого периода времени.

Недостатком этой системы является полное дублирование хранилища, и это может быть проблемой, если хранилище очень большое. Однако, похоже, что альтернатив не так много, поскольку мы не можем контролировать процесс перепрошивки.

0 голосов
/ 07 января 2010

«Как можно скорее» - ваш единственный вариант. Вы не можете обновить заблокированный файл, вот и весь смысл блокировки.


Edit: Можно ли поместить новый файл в другое место, а затем попросить стороннюю службу выполнить поиск в этом месте в следующий раз, когда ему понадобится файл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...