45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # .NET 8 Backend
 | ||
| 
 | ||
| Функционально эквивалентный бэкенд на .NET 8 для Dex Demo.
 | ||
| 
 | ||
| ## Запуск
 | ||
| 
 | ||
| ### Локально
 | ||
| ```bash
 | ||
| dotnet run
 | ||
| ```
 | ||
| 
 | ||
| ### Docker
 | ||
| ```bash
 | ||
| docker build -t dex-demo-backend-dotnet:latest .
 | ||
| docker run -p 8000:8000 \
 | ||
|   -e DB_HOST=postgres \
 | ||
|   -e DB_PORT=5440 \
 | ||
|   -e DEX_ISSUER=https://dex.127.0.0.1.sslip.io/ \
 | ||
|   dex-demo-backend-dotnet:latest
 | ||
| ```
 | ||
| 
 | ||
| ## Особенности реализации
 | ||
| 
 | ||
| - **Minimal APIs**: современный подход ASP.NET Core без лишнего бойлерплейта
 | ||
| - **Records**: для моделей данных (immutable, concise)
 | ||
| - **Dapper**: микро-ORM для чистой и производительной работы с БД
 | ||
| - **Dommel**: расширение Dapper для CRUD операций
 | ||
| - **OpenIdConnect**: стандартный механизм получения JWKS
 | ||
| - **Npgsql**: официальный PostgreSQL provider для .NET
 | ||
| - **Async/await**: полностью асинхронный код
 | ||
| - **Top-level statements**: без Program/Main класса
 | ||
| 
 | ||
| ## API
 | ||
| 
 | ||
| - `GET /api/health` - проверка здоровья
 | ||
| - `GET /api/user-info` - информация о пользователе (требует авторизацию)
 | ||
| 
 | ||
| ## Переменные окружения
 | ||
| 
 | ||
| Все переменные идентичны Python версии:
 | ||
| - `DB_HOST`, `DB_PORT`, `DB_NAME`, `DB_USER`, `DB_PASSWORD`
 | ||
| - `DEX_ISSUER`
 | ||
| - `INSECURE_DEV_MODE`, `INSECURE_DEV_EMAIL`
 | ||
| 
 |