# STEP 9 — DI 등록 (`Program.cs`) + 설정 (`appsettings.json`) ## 사전 확인 (작업 전 반드시 수행) 1. `src/Web/Program.cs` 파일을 열어 전체 내용을 읽는다. 2. `src/Web/appsettings.json` 파일을 열어 전체 내용을 읽는다. 3. 아래 항목을 확인하고 기록한다: - [x] STEP 7이 완료되어 `ExperionFastService` 클래스가 존재하는가? - [x] STEP 8이 완료되어 `ExperionFastController`가 존재하는가? - [x] `Program.cs`에 `ExperionFastService` DI 등록이 이미 있는가? → 있으면 작업 1 건너뜀 - [x] `Program.cs`에 `ExperionFastCleanupService` 등록이 이미 있는가? → 있으면 작업 1 건너뜀 - [x] `appsettings.json`에 `"Fast"` 섹션이 이미 있는가? → 있으면 작업 2 건너뜀 - [x] 기존 서비스 등록 위치(줄 번호)를 확인한다 (`builder.Services.Add...` 블록) --- ## 작업 1 — Program.cs 서비스 등록 **위치**: 기존 `builder.Services` 등록 블록 마지막 줄 아래 ```csharp // ── FastTable Service ───────────────────────────────────────────────────────── // 중요: Singleton으로 하나만 생성 후 IExperionFastService와 IHostedService 양쪽에 같은 인스턴스 공유 builder.Services.AddSingleton(); builder.Services.AddSingleton(sp => sp.GetRequiredService()); builder.Services.AddHostedService(sp => sp.GetRequiredService()); // ── FastTable Cleanup Service ───────────────────────────────────────────────── builder.Services.AddHostedService(); ``` --- ## 작업 2 — appsettings.json 설정 추가 **위치**: `appsettings.json` 최상위 JSON 객체 안, 마지막 속성 뒤 ```json "Fast": { "MaxConcurrentSessions": 3, "MaxRowsPerSession": 5000000, "FlushIntervalMs": 2000 } ``` --- ## 사후 확인 (작업 후 반드시 수행) 1. `Program.cs` 파일을 다시 열어 변경 내용을 읽는다. 2. `appsettings.json` 파일을 다시 열어 변경 내용을 읽는다. 3. 아래 항목을 하나씩 확인한다: - [x] `AddSingleton()` 등록이 있는가? - [x] `AddSingleton(sp => ...)` 등록이 있는가? - [x] `AddHostedService(sp => sp.GetRequiredService())` 등록이 있는가? - [x] 위 3줄이 올바른 순서인가? (Singleton 먼저, HostedService 마지막) - [x] `AddHostedService()` 등록이 있는가? - [x] `appsettings.json`에 `"Fast"` 섹션이 있고 JSON 형식이 올바른가? 4. `dotnet build src/Web` 실행 → 에러/경고 0개 확인 5. 문제가 있으면 수정 후 다시 빌드 확인 > ⚠️ 주의: `AddHostedService()` 단독 사용 금지. > 이렇게 하면 Singleton과 별개의 인스턴스가 생성되어 세션 상태가 공유되지 않음. --- ## 완료 조건 - `dotnet build src/Web` 결과: 에러 0, 경고 0 - DI 등록 3줄 + Cleanup 등록 1줄 모두 존재 - `appsettings.json`에 `"Fast"` 섹션 존재 ## 완료 일시: 2026-04-29 - [x] `AddSingleton()` 등록 완료 - [x] `AddSingleton(sp => ...)` 등록 완료 - [x] `AddHostedService(sp => sp.GetRequiredService())` 등록 완료 - [x] `AddHostedService()` 등록 완료 - [x] `appsettings.json`에 `"Fast"` 섹션 추가 완료 - [x] 빌드 검증 완료 (0 Error, 0 New Warning)