Коллеги, приветствую!
Множество разных событий подарило нам первое полугодие. Никогда такого не было, и вот опять - жизнь и сама ситуация в мире вносят свои коррективы. Расскажем, чем мы планируем заниматься в ближайшие полгода:
Цифровой суверенитет
В рамках импортозамещения, мы планируем:
-
Подтвердить работоспособность BarsUp.Net на одной из отечественных ОС, функционирующей на сервере с процессорами Байкал
-
Пройти повторную сертификацию совместимости с отечественными ОС (Astra Linux, AltLinux, ROSA, РЕД ОС).
.NET 6
Обновление программной платформы до актуальной LTS-версии принесет нам исправление багов, повышение общей производительности, ускорение работы со строками и регулярными выражениями, плюс новые классные фичи нашего любимого языка C# и много чего еще полезного и интересного.
Рефакторинг мигратора
Существующая реализация предполагает, что каждая миграция модуля должна иметь атрибут [MigrationDependsOn]
, с помощью которого мигратор выстраивает порядок проведения миграций.
При этом никак не учитывается взаимозависимости модулей, и миграции в рамках одного модуля могут пойти не по порядку, если разработчик неверно указал зависимость, либо не указал ее вовсе.
Так же изменения коснутся формата указания версии миграции. На текущий момент атрибут [Migration]
позволяет указать в качестве версии любое строковое значение - Version_1
, 2018-1-02
, 05.02.2020
, 1
- многие это видели в своих проектах и в модулях Платформы.
Мы планируем изменить правила описания миграций следующим образом:
- Версия миграции должна отражать дату и время ее создания. Фактически, версия миграции - это новая версия схемы данных модуля, поэтому мы, скорее всего, вместо одного строкового значения будем указывать версию миграции в формате
[Migration(Год, Месяц, День, Час, Минута, Секунда)]
- это позволит исключить путаницу в версиях и будет явно отражать дату и время миграции. - Сортировка миграций будет основана на
- зависимости модулей (
SetDependencies / DepedsOn<M>
) - версии миграции в виде даты
- зависимости модулей (
Таким образом, не будет необходимости указывать зависимости между миграциями одного модуля, либо зависимых модулей - прямые миграции (Up
) будут выполняться в порядке зависимостей модулей с сортировкой по дате.
Рефакторинг ядра
Сейчас в модулях ядра (Core
, DataAccess
, Web
, Security
) слишком много кода - тут и основные контракты аутентификации/авторизации, и контракты на слой доступа к данным, и миграции и тд.
Мы вынесем бОльшую часть абстракций в отдельные проекты, чтобы ядро Платформы на старте приложения выполняло следующие действия:
- загрузка конфигурации приложения - из файлов, переменных окружения и переданных аргументов
- настройка логирования - конфигурирование логгера (
SeriLog
) на основе переданной конфигурации - конфигурирование хост-приложения и запуск веб-сервера при необходимости - в некоторых проектах есть необходимость обрабатывать сообщения из очереди, но нет необходимости обрабатывать http-запросы.
Разделение модулей на UI и сервисы/контроллеры
Этим мы планировали заняться еще в прошлом году, однако приоритеты были смещены и эта активность была перенесена на год текущий.
Сейчас же активность по разделению модулей обусловлена в том числе и тем, что мы должны в будущем перейти на новый ui-фреймворк Plex.Vue.
Изменение целевого UI-фреймворка
К концу года, по готовности фрейморка Plex.Vue мы планируем осуществить переход на него как на уровне фреймворка BarsUp.Net, так и на уровне кодогенерации BarsUp.Designer - после этого этапа, каждый пользователь сможет мышкой накликать себе не только систему с реестрами и карточками, но и что-то красивое, подобное нашему новому Порталу