Написать консольную программу, которая для заданных каталогов (включая подкаталоги) рассчитывает хэш-суммы содержащихся в них файлов и сохраняет результаты расчетов в базу данных.
Требования к механизму расчетов:
- Разбить работу программы на несколько потоков: первый поток обходит каталоги, ищет файлы, для которых нужно выполнить расчет, и помещает их в очередь.
- Рабочие потоки извлекают из очереди описания файлов и выполняют для их содержимого расчет хэш-суммы.
- Еще один поток сохраняет результаты вычисления в БД.
- В процессе работы программа должна периодически выводить в консоль информацию о прогрессе выполнения в следующем виде:
- Количество обработанных файлов/Количество файлов для обработки.
Требования к сохранению результатов:
- В БД должен сохраняться результат расчета по каждому файлу.
- В БД должна сохраняться информация об ошибках, произошедших в процессе обработки файлов.
Требования к реализации:
- Язык реализации: C#;
- СУБД: Oracle/MSSQL;
- Синхронизацию потоков выполнять с помощью базовых механизмов платформы (без использования TPL, Concurrent-коллекций).
- Для расчета хэш-сумм можно использовать классы платформы .NET.
- Результат выполнения задания должен находиться на одном из публичных Git-репозиториев и должен включать:
- ER-диаграмму БД;
- Скрипты на создание и наполнение БД;
- Код программы.