Бюджет:
400 €
Требуется разработать библиотеку на C#
Задача: синхронизация заданного набора файлов с другими экземплярами той же библиотеки, работающими на других хостах.
Задача на синхронизацию состоит из: набора хостов и набора файлов.
Набор файлов состоит из 1 большого файла и дополнительной папки.
На каждом из хостов будет работать экземпляр той же библиотеки.
Синхронизация может производиться в активном и пассивном режиме. В активном она производится только на одном из хостов. На остальных в пассивном. Задача соответственно состоит в том, чтобы на всех пассивных хостах состояние набора файлов стало идентичным активному хосту.
Процесс запускается по команде использующего библиотеку софта (вызов метода). При вызове библиотеке передаются данные для аутентификации, местоположение большого файла и дополнительной папки.
Библиотека должна быть в состоянии одновременно и независимо работать над несколькими задачами синхронизации (комбинация режимов активных и пассивных произвольная). Т.е., при получении от использующего софта команды на исполнение новой задачи синхронизации, уже исполняющиеся задачи не должны прекращаться или как-то замечать появление новой (помимо уменьшения доступного интернет-канала по очевидным причинам).
Библиотека должна давать использующему софту подробную информацию о ходе процесса.
Реализация должна учитывать и корректно обрабатывать:
- проблемы связи;
- хосты за NAT;
- синхронизацию частично измененного набора файлов перекачивать весь набор при изменении двух файлов недопустимо;
- случаи нахождения нескольких хостов в одной локальной сети определять и использовать этот факт для ускорения процесса;
- хосты, не владеющие аутентификационной информацией они не должны допускаться до получения данных.
Протокол общения между библиотеками на ваше усмотрение, torrent общая идея.
Допускается использовать готовые библиотеки для непосредственного low-level взаимодействия по torrrent-протоколу.
Реализация должна быть кроссплатформенной (корректно работать как на .NET в среде Windows, так и на Mono в среде Mac OS и Linux).
Детальное API библиотеки будет обсуждаться при личной беседе.
Указанный бюджет примерный, допускается разумно мотивированное увеличение.
Сроки не критичны в разумных пределах.
Форма оплаты PayPal или Skrill (ex-Moneybookers).