.NET (C#)
backendAdopt
.NET
.NET — кроссплатформенная платформа с открытым исходным кодом для создания приложений.
Наш опыт
Подавляющая часть Backend сервисов написана на языке C# и работает на платформе .NET.
Версии .NET
- NET 6.0 (устаревшая - используется в меньшей части сервисов)
- NET 8.0 (целевая для основной части сервисов)
- NET 10.0 (будущая - в процессе перехода)
Доступ к данным
- MongoDB.Driver — основной драйвер БД
- StackExchange.Redis — клиент Redis
- AWSSDK.S3 — клиент S3-совместимого хранилища
- Entity Framework Core — целевое ORM для MySQL
- linq2db — целевое ORM для PostgreSQL
- dbmate — целевой механизм проведения миграций для PostgreSQL
Брокеры сообщений
- KafkaFlow — целевой фреймворк для работы с Kafka для большей части сервисов
- Confluent.Kafka — клиент Kafka при необходимости более "низкоуровневого" взаимодействия
Поиск
- Elastic.Clients.Elasticsearch — целевой клиент Elasticsearch
- NEST — устаревший клиент Elasticsearch
Логирование и мониторинг
- Serilog — логирование
- Elastic APM — трассировка
- OpenTelemetry — метрики (вместо App.Metrics), трассировка (внедряется как замена Elastic APM)
- App.Metrics (устаревшее) — сбор метрик
Фоновые задачи
- Hangfire (целевое) — отложенные и повторяемые задачи
- Elsa Workflow (изучаемое) — перспективный движок workflow
- Quartz.NET (устаревшее) — планировщик задач
- WorkflowCore (устаревшее) — движок workflow
Устойчивость
- Polly — Circuit Breaker, Retry
Валидация
- FluentValidation — валидация HTTP запросов
- Calzolari.Grpc.AspNetCore.Validation — валидация gRPC-запросов
Тестирование
- xUnit v2 — unit и интеграционные тесты
- Testcontainers — контейнеризированная инфраструктура в тестах (MongoDb, Kafka, PostgreSQL и т.д.)