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