Структура проекта - quilin/dm GitHub Wiki

Структура проекта

Backend

Бэкенд DM представляет собой группу сервисов: монолитный DM.API, построенный готовым к разделению на независимые сервисы, а также несколько сервисов-консюмеров, которые отвечают за разные системы. Для корректной работы им требуется 2-3 базы данных (хаха), очередь сообщений, SMTP-сервер, файловое хранилище (S3-совместимое) и все вот это вот. По сути, всё необходимое окружение можно изучить в docker-compose.yml.

Весь исходный код бэка находится в солюшне DM.sln.

Services

Это виртуальная папка для проектов, связанных с BL-уровнем. В ней не планируется держать проекты напрямую, они должны относиться к следующему уровню виртуальных папок - разделяясь по доменам.

Core

Это виртуальная папка центральных сборок с обобщенной недоменной логикой. Предполагается, что сборки из данной папки не могут ссылаться на другие сборки - исключительно наоборот. Содержит проекты:

  • MessageQueuing - клиент RabbitMQ
  • Mail - библиотека рендеринга писем на Razor-шаблонах, а также консюмер очереди отправки писем
  • Core - базовые абстракции, типа IDateTimeProvider/IGuidFactory
  • DataAccess - центральный слой уровня доступа к БД. Пока приложение монолитное, эта абстракция собирает в себе все данные о таблицах и DAL-моделях

Authentication

Домен аутентификации и авторизации. Это абстракция, отвечающая за процессы связанные с регистрацией, входом-выходом, связями с соцсетями итд. В будущем подлежит полному перепилу для поддержки OAuth.

Common

Домен общих бизнесс-процессов, которые не принадлежат эксклюзивно к конкретным поддоменам. Сюда входит центральная шина авторизации, комментарии, лайки, счетчики непрочитанных сущностей, загрузки файлов.

Community

Домен сообщества. Отвечает за бизнесс-процессы DM as a social network - поиск друзей, подписки, личная переписка, актуализация личных данных, отзывы пользователей о сайте, опросы итд.

Forum

Домен форума. Отвечает за форумные бизнесс-процессы, как то: создание/поиск тем на форуме, форумные комментарии итд.

Gaming

Домен игр. Отвечает за игровые бизнесс-процессы, как то: создание/поиск игр, обсуждения игр, проведение, участие, голоса за посты других игроков, настройки схем характеристик, бросание кубов итд.

SearchEngine

Домен поиска по сайту. Возможно, он в дальнейшем уедет в Common, предоставив интерфейсы доменным проектам для того, чтобы логика ранжирования и поиска лежала в соответствующих доменах. Состоит из сервиса самого поиска, а также из консюмера центральной биржи событий, который отвечает за индексацию в поисковом движке.

Notification

Домен уведомлений в реальном времени. Состоит из сервиса хранения/поиска/настройки уведомлений и консюмера центральной биржи событий, который отвечает за создание уведомлений и за их рассылку на Web-клиенты в реальном времени.

Web

Core

Легаси-проект, содержащий базовые абстракции для одновременной работы WebAPI и ASP.NET MVC приложений.

API

REST-API приложение.