Hospital Management System — это современный REST API микросервис для управления поликлиникой, построенный на строгих принципах Clean Architecture. Приложение позволяет управлять записями пациентов к врачам, собирать аналитику и обрабатывать внешние потоки данных в реальном времени с использованием gRPC Bidirectional Streaming. Оркестрация сервисов и базы данных полностью автоматизирована через .NET Aspire.
- Чистая архитектура (Clean Architecture): Строгое разделение ответственности на слои Domain, Application, Infrastructure и API. Бизнес-логика полностью изолирована от деталей работы базы данных и сети.
- Микросервисное взаимодействие (gRPC): Реализован паттерн Producer-Consumer. Отдельный микросервис-генератор непрерывно стримит новые данные по HTTP/2, а основное API асинхронно потребляет их через
BackgroundServiceбез блокировки основных контроллеров. - Cloud-Native Оркестрация: Использование
.NET Aspireдля бесшовного локального запуска всех компонентов (Main API, gRPC Generator, MongoDB) и сбора телеметрии одной кнопкой. - NoSQL Database: Использование документоориентированной БД MongoDB через Entity Framework Core Provider.
Решение разделено на логические слои и микросервисы:
- 📁 Hospital.Domain — Ядро системы. Содержит бизнес-модели (
Patient,Doctor,Appointment), Enums и абстракции репозиториев. - 📁 Hospital.Application & Hospital.Application.Contracts — Слой бизнес-логики. Содержит сервисы (CRUD и аналитика), DTO и профили AutoMapper для маппинга данных.
- 📁 Hospital.Infrastructure.EfCore — Слой доступа к данным. Реализация паттерна Repository поверх
DbContextдля работы с MongoDB. - 📁 Hospital.Api — Основной веб-интерфейс (REST API контроллеры) и фоновый gRPC-клиент.
- 📁 Hospital.Grpc.Server & Hospital.GrpcContracts — Независимый микросервис-генератор данных и общие Protobuf-контракты.
- 📁 Hospital.AppHost — Проект оркестрации .NET Aspire.
- Платформа: C#, .NET 8
- База данных: MongoDB, Entity Framework Core 9
- Межсервисное взаимодействие: gRPC (Bidirectional Streaming, Protobuf)
- Оркестрация и Телеметрия: .NET Aspire
- Маппинг данных: AutoMapper
- Тестирование и мокирование: xUnit, Bogus
Благодаря использованию .NET Aspire, запуск сложной распределенной системы сводится к одной команде. Вам не нужно вручную поднимать Docker-контейнеры с базой данных — Aspire сделает это автоматически.
- .NET 8 SDK
- Docker Desktop
- Aspire Workload (устанавливается командой
dotnet workload install aspire)
Перейдите в корневую директорию проекта и запустите AppHost:
dotnet run --project Hospital/Hospital.AppHostПосле запуска в консоли появится ссылка на Aspire Dashboard. Перейдите по ней в браузере, чтобы увидеть:
- Единый интерфейс управления контейнером MongoDB, REST API и gRPC-сервером.
- Логи всех запущенных сервисов.
- Распределенную трассировку (Traces) и метрики производительности.
Для тестирования REST-эндпоинтов кликните на ссылку проекта hospital в дашборде Aspire.

База данных автоматически заполняется начальным seed-набором данных при первом запуске.