Технологический РадарТехнологический Радар

.NET (C#)

backend
Adopt

.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 и т.д.)

Полезные ссылки