Перейти к основному содержимому

Core

Здесь описывается структура Core проекта

Config

Конфиг приложения - это readonly статичный класс, который инициализируется и валидируется при старте приложения.

В нем содержится множество различных констант, которые так или иначе настраивают работу приложения. А также в нем есть sensitive данные такие как строка подключения к бд.

Для того, чтобы можно было в 1 конфиге сочитать важную информацию и константы была придумана следующая схема:

  • Создается внутренняя структура, которая объявляет значения, которые приложение будет получать из внешнего источника (встроенными средствами .NET).
  • При инициализации Cfg мы считываем значения из внешнего источника в этот класс
  • Копируем значения из класса в статичные свойства Cfg
  • Оставшиеся значения мы инициализируем прям в коде, чтобы не пришлось запихивать их все в внешний источник

Благодаря такому подходу у нас есть один источник значений для приложения (вместо 2 сам конфиг и файл Constants как было раньше) доступ к которому имеет весь код (т.к. он статичный).

Logging

Инициализация логгера для приложения. Также принимает в себя имя приложения appName и снабжает все логи им. Это нужно, чтобы в будущем можно было различать логи из нескольких приложений (Сам журнал и админка).

Jobs

Крон джобы, которые запускаются и совершают какие-либо обслуживающие действия (авто-архивация должников, обновление списка студентов).

Для крон джоб мы используем библиотеку Coravel.

Commands

Вся основная бизнес-логика журнала. Каждая команда - это отдельное законченное действие с журналом, со своими входными-выходными параметрами и ошибками.

Каждая команда наследуется от ICommand, чтобы у них был единый интерфейс и возвращает в качестве ответа объект Result.