- PVSM.RU - https://www.pvsm.ru -

Прошел месяц с момента выхода первой статьи [1].
20 ноября был выпущен ABCat v2.1.1a [2], в который вошло довольно много изменений:
По результатам эксплуатации версии 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. Инструменты для импорта старых настроек автозамены отсутствуют. Если у кого-нибудь в первой версии осталось много настроек – сообщите об этом – можно написать утилиту для конвертации. Смелые могут попробовать перекинуть данные из старой БД в новую вручную – логическая структура баз практически не изменилась.
В процессе переезда на новую ORM я переосмыслил архитектуру приложения. Чтобы не завязывать основную логику приложения на особенности одной конкретной БД я вынес весь DAL в отдельный плагин. С этого момента можно добавлять плагины для поддержки других БД, не меняя логику остальных плагинов.
Следующим масштабным изменением стала система настройки приложения. Перед выпуском прошлой версии я подумал, что читатели хоть и технически подкованный народ, но все-таки заставлять людей ковыряться в XML-файлах для настройки приложения будет негуманно. Потому я потратил тогда пару часов и слепил окно настройки системы. Оно работало по никому не понятной (даже мне) логике, обладало зачатками интеллекта и свободой воли. Многие жаловались на то, что такое окно – не самый лучший способ встретить нового пользователя системы.В новой версии я решил полностью переделать систему конфигурации.
ABCat построен на плагинах, поэтому с настройками все довольно непросто. Плагины могут исчезать и появляться, каждый из них имеет свои специфические параметры для настройки, поэтому одним файлом конфигурации тут не обойтись. В новой версии плагины получили индивидуальные настройки. За конфигурирование приложения по-прежнему отвечает единое окно, но теперь оно содержит несколько разделов, для каждого плагина отдельно. Система проверки корректности настроек также претерпела изменения и теперь правильно обрабатывает различные ситуации вроде отсутствия файлов и папок.

Стал умнее плагин загрузки аудиокниг. Ранее требовалось указать путь к uTorrent для того, чтобы иметь возможность запустить загрузку.
Теперь в настройках можно выбрать действие, которое будет выполнено над загруженным torrent-файлом:
Повторная авторизация на rutracker происходит с использованием сохраненных cookie.
Для логирования ошибок был прикручен NLog.
Следующим изменением стал отказ от MahApps.Metro. Эта библиотека обеспечивала стилизацию внешнего вида приложения. Возможно разработчик в какой-то момент доработает её до нормального состояния, но на данный момент я столкнулся с множеством необъяснимых проблем, начиная от невозможности изменения цвета заголовка окна (как я ни пытался соблюдать инструкции – ничего не получалось), заканчивая отображением черных прямоугольников вместо всплывающих подсказок. Мне по большому счету требовалась лишь стилизация заголовка приложения (которое по умолчанию для WPF почему-то стилизуется под окно Windows 7), и эта задача была решена другим способом, без использования сторонних компонентов.
Кроме этого был переработан контрол редактирования списков автозамены. Просмотрщик и редактор были объединены в одно окно, появились кнопки для удаления элементов.


В списке записей появилось условное окрашивание строк. Записи, добавленные в список в последние 24 часа, окрашиваются зеленым, в последнюю неделю – желтым. Записи, не обновленные более 30 дней окрашиваются красным.
Добавлены ещё 2 варианта логики группировки записей.
Множество мелких изменений произошло под капотом, поэтому не буду на них подробно останавливаться.
Для запуска приложения больше не нужно качать никаких дополнительных файлов – в релизе уже есть стартовые базы данных.
Страница проекта на codeplex [4]
Обо всех проблемах сообщайте сюда [5]
Исходники [6]
Благодарю всех, кто сообщал об ошибках, вносил предложения по доработкам и тестировал промежуточные версии.
Особые благодарности romantk [7], SlavasssR [8] и ItGold [9].
Приложение по-прежнему не просит денег, донейтов, не показывает рекламу и не предлагает установить панель для браузера или «защитника» системы. Просьба с пониманием относиться к возможным ошибкам и недоработкам.
Перед скачиванием книги убедитесь в том, что автор релиза позаботился о соблюдении авторских прав на неё.
И не уходите с раздачи.
Автор: ICELedyanoj
Источник [10]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/net/49177
Ссылки в тексте:
[1] первой статьи: http://habrahabr.ru/post/197528/
[2] ABCat v2.1.1a: https://abcat.codeplex.com/releases/view/115144
[3] релизом: https://abcat.codeplex.com/downloads/get/759999
[4] codeplex: https://abcat.codeplex.com/
[5] сюда: https://abcat.codeplex.com/workitem/list/basic
[6] Исходники: https://abcat.codeplex.com/SourceControl/latest
[7] romantk: https://www.codeplex.com/site/users/view/romantk
[8] SlavasssR: https://www.codeplex.com/site/users/view/SlavasssR
[9] ItGold: http://habrahabr.ru/users/itgold/
[10] Источник: http://habrahabr.ru/post/203500/
Нажмите здесь для печати.