Основной особенностью данного проекта является реализация расширения возможностей программы без её переустановки. Это было реализованно с помощью внешних модулей, подключаемых прямо "налету".
Серверная часть выполнена на ASP.NET Core с использованием MVC. Веб страницы сделаны в виде макета на движке представлений Razor pages. Отдельно выделен простой API для связи серверной и клиентской части. Данные, для работы сохраняются в СУБД PostgreSQL. БД создана методом CodeFirst через EntityFramework Core. Для удобства модификации применялись миграции.
Клиент выполнен на .NET 6. Обмен данными с сервером происходит по http через библиотеку RestSharp. Реализована система обработки команд, позволяющая добавлять новые команды с минимальным изменением исходного кода. Система подключения модулей основана на рефлексии: файл dll с классом, реализующим интерфейс IExternalModule, добавляется к работающему процессу. Благодаря интерфейсу работа с модулями унифицирована, есть несколько стандартных команд (запустить/остановить модуль), но и есть возможность реализовать уникальные команды для каждого модуля.
-
В планах реализовать систему обновления ядра клиента на случай обнаружения критических ошибок в нём, которые нельзя будет исправить добавлением внешних модулей.
-
Так же необходимо переработать пользовательский интерфейс управления, так как пока слишком минималистичен
Warning
Этот проект не предназначен для использования в корыстных целях :)