Pull to refresh

ABCat: Новая версия приложения для загрузки и каталогизации аудиокниг

Reading time 5 min
Views 6.4K

Прошел месяц с момента выхода первой статьи.

20 ноября был выпущен ABCat v2.1.1a, в который вошло довольно много изменений:
  • SQL CE + EF 6.0.1 заменены на SQLite.Net-PCL
  • Логика приложения отвязана от особенностей хранения данных
  • Существенно переработана система конфигурации
  • Доработан плагин загрузки аудиокниг
  • Доработан плагин редактирования списка автозамены
  • Добавлено логирование ошибок
  • Упрощение развёртывания приложения
  • Множество изменений «под капотом»

Порядок установки и запуска

  1. Скачайте архив с релизом
  2. Распакуйте архив
  3. Запустите ABCat.exe
  4. При первом запуске появится окно конфигурации — настройте всё, что необходимо, нажмите «сохранить» в окне конфигурации
  5. Пользуйтесь

Смена БД и ORM

По результатам эксплуатации версии 2.0.1a выяснилось, что большинство проблем у пользователей возникают с SQL Compact Edition. Несмотря на то, что в релиз приложения были включены портабельные версии DLL, большинству пользователей все же требовалась установка движка SQL CE в систему. Кому-то даже пришлось удалять из системы SQL CE 4.0 и устанавливать SQL CE 4.0, чтобы запустить приложение.



Некоторым вообще не удалось запуститься и никакие манипуляции с SQL CE не помогали.
Учитывая всё это, а также то, что сам SQL CE по факту можно считать умершим, было принято решение заменить его на другую встраиваемую БД – SQLite. В поисках способов завести Entity Framework 6.0.1 на SQLite я наткнулся на проект SQLite.Net-PCL. Это довольно примитивная по функционалу ORM, но его возможностей для ABCat оказалось вполне достаточно. Проведенные тесты производительности (без цифр – на глазок) оказались более чем впечатляющими. Даже на примитивных операциях типа добавления объектов в базу был получен прирост скорости, который измерялся не в процентах, а в разах. Я не знаю, чем именно был обусловлен такой прирост – заменой SQL CE на SQLite или EF на SQLite.Net-PCL. Скорее всего и тем и другим.

Большим сюрпризом стало уменьшение файла БД. Файл кешированных страниц, который по версии SQL CE весил 200+ Мб, похудел почти на 60 мегабайт.

У SQLite.Net-PCL нет трекинга изменений объектов, поддержки массовых операций, выборочного массового удаления объектов, многопоточного доступа к файлу БД и др. Эти вещи пришлось реализовывать самостоятельно.

Из отрицательных последствий перехода – потеря совместимости БД с предыдущим релизом ABCat. Инструменты для импорта старых настроек автозамены отсутствуют. Если у кого-нибудь в первой версии осталось много настроек – сообщите об этом – можно написать утилиту для конвертации. Смелые могут попробовать перекинуть данные из старой БД в новую вручную – логическая структура баз практически не изменилась.

Переезд DAL в плагин, отвязка основной логики от особенностей хранения данных

В процессе переезда на новую ORM я переосмыслил архитектуру приложения. Чтобы не завязывать основную логику приложения на особенности одной конкретной БД я вынес весь DAL в отдельный плагин. С этого момента можно добавлять плагины для поддержки других БД, не меняя логику остальных плагинов.

Конфигурация

Следующим масштабным изменением стала система настройки приложения. Перед выпуском прошлой версии я подумал, что хабравчане хоть и технически подкованный народ, но все-таки заставлять людей ковыряться в XML-файлах для настройки приложения будет негуманно. Потому я потратил тогда пару часов и слепил окно настройки системы. Оно работало по никому не понятной (даже мне) логике, обладало зачатками интеллекта и свободой воли. Многие жаловались на то, что такое окно – не самый лучший способ встретить нового пользователя системы.В новой версии я решил полностью переделать систему конфигурации.

ABCat построен на плагинах, поэтому с настройками все довольно непросто. Плагины могут исчезать и появляться, каждый из них имеет свои специфические параметры для настройки, поэтому одним файлом конфигурации тут не обойтись. В новой версии плагины получили индивидуальные настройки. За конфигурирование приложения по-прежнему отвечает единое окно, но теперь оно содержит несколько разделов, для каждого плагина отдельно. Система проверки корректности настроек также претерпела изменения и теперь правильно обрабатывает различные ситуации вроде отсутствия файлов и папок.

Новое окно конфигурации

Загрузка аудиокниг

Стал умнее плагин загрузки аудиокниг. Ранее требовалось указать путь к uTorrent для того, чтобы иметь возможность запустить загрузку.
Теперь в настройках можно выбрать действие, которое будет выполнено над загруженным torrent-файлом:
  • Просто показать в проводнике. Для тех, кто скармливает torrent-файлы NAS, и не использует клиенты на ПК.
  • Выполнить системное действие. После загрузки torrent-файл будет просто запущен на исполнение и ОС автоматически выполнит действие, сопоставленное с этим типом файла
  • Запустить загрузку в торрент-клиенте. Это как раз то действие, которое было единственно возможным в первой версии. Torrent-клиент будет запущен с параметрами командной строки и закачка начнется автоматически. Путь к torrent-клиенту указывать больше не нужно – ABCat загружает из реестра список установленных torrent-клиентов и нужно просто выбрать предпочитаемый клиент из комбобокса в окне настроек. Добавлена поддержка BitTorrent.

Повторная авторизация на rutracker происходит с использованием сохраненных cookie.

Вкратце о других изменениях

Для логирования ошибок был прикручен NLog.

Следующим изменением стал отказ от MahApps.Metro. Эта библиотека обеспечивала стилизацию внешнего вида приложения. Возможно разработчик в какой-то момент доработает её до нормального состояния, но на данный момент я столкнулся с множеством необъяснимых проблем, начиная от невозможности изменения цвета заголовка окна (как я ни пытался соблюдать инструкции – ничего не получалось), заканчивая отображением черных прямоугольников вместо всплывающих подсказок. Мне по большому счету требовалась лишь стилизация заголовка приложения (которое по умолчанию для WPF почему-то стилизуется под окно Windows 7), и эта задача была решена другим способом, без использования сторонних компонентов.

Кроме этого был переработан контрол редактирования списков автозамены. Просмотрщик и редактор были объединены в одно окно, появились кнопки для удаления элементов.

Быстрое удаление элементов в редакторе автозамены

Быстрое удаление элементов в списке автозамены

В списке записей появилось условное окрашивание строк. Записи, добавленные в список в последние 24 часа, окрашиваются зеленым, в последнюю неделю – желтым. Записи, не обновленные более 30 дней окрашиваются красным.

Добавлены ещё 2 варианта логики группировки записей.

Множество мелких изменений произошло под капотом, поэтому не буду на них подробно останавливаться.

Для запуска приложения больше не нужно качать никаких дополнительных файлов – в релизе уже есть стартовые базы данных.

Ссылки

Страница проекта на codeplex
Обо всех проблемах сообщайте сюда
Исходники

Благодарю всех, кто сообщал об ошибках, вносил предложения по доработкам и тестировал промежуточные версии.
Особые благодарности romantk, SlavasssR и ItGold.
Приложение по-прежнему не просит денег, донейтов, не показывает рекламу и не предлагает установить панель для браузера или «защитника» системы. Просьба с пониманием относиться к возможным ошибкам и недоработкам.
Перед скачиванием книги убедитесь в том, что автор релиза позаботился о соблюдении авторских прав на неё.
И не уходите с раздачи.
Tags:
Hubs:
+10
Comments 8
Comments Comments 8

Articles