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

Проект Common

Документация общих библиотек и компонентов платформы.

О проекте

Common — это набор переиспользуемых библиотек, фреймворков и компонентов, используемых в микросервисной архитектуре платформы.

Основные компоненты

  • MentKit — фреймворк для построения микросервисов на основе DDD, CQRS и Event Sourcing
  • Authorization — библиотека для управления авторизацией и контроля доступа
  • Timeline — компонент для работы с временными линиями событий
  • Sporteco — библиотека для работы со спортивными данными

Технологический стек

  • Backend: .NET 8.0 (C#)
  • Database: PostgreSQL, MongoDB
  • Messaging: Apache Kafka
  • Coordination: Apache ZooKeeper
  • Cache: Redis
  • Architecture: DDD, CQRS, Event Sourcing

MentKit - Основной фреймворк

MentKit — это набор библиотек для построения микросервисных приложений на основе принципов Domain-Driven Design (DDD), Event Sourcing и CQRS.

Основные возможности

  • Domain-Driven Design — агрегаты, сущности, value objects
  • CQRS — разделение команд и запросов
  • Event Sourcing — сохранение состояния через события
  • Event-Driven Architecture — асинхронная интеграция
  • Read Models — оптимизированные проекции для чтения
  • Распределенные блокировки — через ZooKeeper

Архитектура микросервиса

Service/
├── Service.Domain/ # Доменная модель (агрегаты, value objects)
├── Service.Application/ # Use cases, команды, запросы
├── Service.Infrastructure/ # Реализация репозиториев, DbContext
├── Service.Api/ # REST API (контроллеры)
└── Service.Migrations/ # Миграции БД

Быстрый старт

Установка MentKit

dotnet add package MentKit.Domain
dotnet add package MentKit.Persistence.EntityFramework
dotnet add package MentKit.Events.Publisher

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

  1. Создать доменную модель:
public class Order : AggregateRoot<Guid, OrderId>
{
// Бизнес-логика
}
  1. Создать команду:
public class CreateOrderCommand : ICommand<CreateOrderResult>
{
// Параметры команды
}
  1. Создать обработчик:
public class CreateOrderCommandHandler
: ICommandHandler<CreateOrderCommand, CreateOrderResult>
{
// Логика обработки
}

Разделы документации

  • Backend — организация и архитектурные принципы backend-сервисов
  • AI — предложения по использованию AI в документации
  • Support — процессы поддержки и post-mortem анализ