...

понедельник, 25 ноября 2013 г.

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



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

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.

Приложение по-прежнему не просит денег, донейтов, не показывает рекламу и не предлагает установить панель для браузера или «защитника» системы. Просьба с пониманием относиться к возможным ошибкам и недоработкам.

Перед скачиванием книги убедитесь в том, что автор релиза позаботился о соблюдении авторских прав на неё.

И не уходите с раздачи.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.


Комментариев нет:

Отправить комментарий