Ниже представлены изображения 1000 x 750 пикселей, ~ 130 КБ JPEG
, размещенные на ImageShack .
Я должен упомянуть, что каждый пользователь (клиентских ящиков) будет работать прямо с общего ресурса / Foo
. Из-за особенностей бизнеса пользователям никогда не нужно будет одновременно просматривать документы друг друга или работать с ними, поэтому конфликты такого характера никогда не будут проблемой. Доступ должен быть как можно более простым, что, вероятно, означает сопоставление диска с их соответствующим подкаталогом / Foo / username
.
Кроме того, никто, кроме моих приложений (собственных и на сервере) будут напрямую использовать каталог FTP.
Я, вероятно, в конечном итоге воспользуюсь чем-то вроде второго из соображений производительности.
Поскольку эта синхронизация должна происходить в рабочее время, первая проблема, которая возникает, возникает на этапе внешней загрузки .
Пока я передаю файл за пределы сайта, мне необходимо запретить пользователям писать в файл (например, использовать CreateFile
с FILE_SHARE_READ
или что-то в этом роде), пока я читаю оттуда. Скорость исходящего потока Интернета в их офисе далеко не симметрична размерам файлов, с которыми они будут работать, поэтому вполне возможно, что они вернутся к файлу и попытаются изменить его, пока я все еще читаю из него.
Самым простым решением вышеупомянутой проблемы было бы создать копию рассматриваемого файла (ов) в другом месте файловой системы и без помех передать эти «снимки».
Файлы ( некоторые из них будут двоичными), с которыми эти ребята будут работать, относительно малы, вероятно, ≤20 МБ, поэтому их копирование (и, следовательно, временная блокировка) будет почти мгновенным. Вероятность того, что они попытаются записать в файл в тот же момент, когда я его копирую, должна быть близка к нулю.
Это решение кажется некрасивым, и я почти уверен, что есть лучший способ справиться
Одна вещь, которая приходит на ум, - это что-то вроде фильтра файловой системы, который заботится о репликации и синхронизации на уровне IRP, что-то вроде того, что делают некоторые аудио / видео. Однако для моего проекта это перебор.
Это первый раз, когда мне приходилось сталкиваться с подобными проблемами, так что, возможно, я слишком много над этим думаю.
Я ' m заинтересованы в чистых решениях, которые не требуют чрезмерного усложнения реализации. Возможно, я пропустил что-то в WinAPI, которое изящно решает эту проблему?
Я еще не решил, в чем буду писать это, но мне комфортно: C, C ++, C #, D и Perl.