Data flow · Options pattern
Mọi nguồn cấu hình bind vào cùng một lớp
Options pattern: từ nguồn cấu hình tới service
appsettings.json, user-secrets và biến môi trường cùng bind vào lớp EmailSettings; ValidateOnStart kiểm tra cấu hình lúc khởi động và dừng ứng dụng nếu thiếu hoặc sai; service đọc cấu hình qua IOptions (Singleton, không đọc lại), IOptionsSnapshot (Scoped, đọc lại mỗi request) hoặc IOptionsMonitor (Singleton, CurrentValue luôn mới).
NGUỒN CẤU HÌNH
SERVICE ĐỌC QUA
THIẾU HOẶC SAI
appsettings.json
nằm trong Git
user-secrets
development, ngoài repo
Biến môi trường
EmailSettings__Password
EmailSettings
.Bind(GetSection(...))
[Required] · [Range]
ValidateDataAnnotations
ValidateOnStart()
kiểm tra lúc khởi động
Ứng dụng không chạy
lỗi lộ ra ngay lúc start
IOptions<T>
Singleton · không đọc lại
IOptionsSnapshot<T>
Scoped · mỗi request
IOptionsMonitor<T>
Singleton · CurrentValue
CHÚ GIẢI
Validation chạy lúc khởi động
Cấu hình đi tiếp
Cấu hình thiếu hoặc sai: dừng ngay
© tiennhm