Files
ExperionCrawler/fastTable/step9.md

3.7 KiB

STEP 9 — DI 등록 (Program.cs) + 설정 (appsettings.json)

사전 확인 (작업 전 반드시 수행)

  1. src/Web/Program.cs 파일을 열어 전체 내용을 읽는다.
  2. src/Web/appsettings.json 파일을 열어 전체 내용을 읽는다.
  3. 아래 항목을 확인하고 기록한다:
    • STEP 7이 완료되어 ExperionFastService 클래스가 존재하는가?
    • STEP 8이 완료되어 ExperionFastController가 존재하는가?
    • Program.csExperionFastService DI 등록이 이미 있는가? → 있으면 작업 1 건너뜀
    • Program.csExperionFastCleanupService 등록이 이미 있는가? → 있으면 작업 1 건너뜀
    • appsettings.json"Fast" 섹션이 이미 있는가? → 있으면 작업 2 건너뜀
    • 기존 서비스 등록 위치(줄 번호)를 확인한다 (builder.Services.Add... 블록)

작업 1 — Program.cs 서비스 등록

위치: 기존 builder.Services 등록 블록 마지막 줄 아래

// ── FastTable Service ─────────────────────────────────────────────────────────
// 중요: Singleton으로 하나만 생성 후 IExperionFastService와 IHostedService 양쪽에 같은 인스턴스 공유
builder.Services.AddSingleton<ExperionFastService>();
builder.Services.AddSingleton<IExperionFastService>(sp => sp.GetRequiredService<ExperionFastService>());
builder.Services.AddHostedService(sp => sp.GetRequiredService<ExperionFastService>());

// ── FastTable Cleanup Service ─────────────────────────────────────────────────
builder.Services.AddHostedService<ExperionFastCleanupService>();

작업 2 — appsettings.json 설정 추가

위치: appsettings.json 최상위 JSON 객체 안, 마지막 속성 뒤

"Fast": {
  "MaxConcurrentSessions": 3,
  "MaxRowsPerSession": 5000000,
  "FlushIntervalMs": 2000
}

사후 확인 (작업 후 반드시 수행)

  1. Program.cs 파일을 다시 열어 변경 내용을 읽는다.
  2. appsettings.json 파일을 다시 열어 변경 내용을 읽는다.
  3. 아래 항목을 하나씩 확인한다:
    • AddSingleton<ExperionFastService>() 등록이 있는가?
    • AddSingleton<IExperionFastService>(sp => ...) 등록이 있는가?
    • AddHostedService(sp => sp.GetRequiredService<ExperionFastService>()) 등록이 있는가?
    • 위 3줄이 올바른 순서인가? (Singleton 먼저, HostedService 마지막)
    • AddHostedService<ExperionFastCleanupService>() 등록이 있는가?
    • appsettings.json"Fast" 섹션이 있고 JSON 형식이 올바른가?
  4. dotnet build src/Web 실행 → 에러/경고 0개 확인
  5. 문제가 있으면 수정 후 다시 빌드 확인

⚠️ 주의: AddHostedService<ExperionFastService>() 단독 사용 금지.
이렇게 하면 Singleton과 별개의 인스턴스가 생성되어 세션 상태가 공유되지 않음.


완료 조건

  • dotnet build src/Web 결과: 에러 0, 경고 0
  • DI 등록 3줄 + Cleanup 등록 1줄 모두 존재
  • appsettings.json"Fast" 섹션 존재

완료 일시: 2026-04-29

  • AddSingleton<ExperionFastService>() 등록 완료
  • AddSingleton<IExperionFastService>(sp => ...) 등록 완료
  • AddHostedService(sp => sp.GetRequiredService<ExperionFastService>()) 등록 완료
  • AddHostedService<ExperionFastCleanupService>() 등록 완료
  • appsettings.json"Fast" 섹션 추가 완료
  • 빌드 검증 완료 (0 Error, 0 New Warning)