16.4 — 3. Clean Architecture (Uncle Bob) — dependency rule
Mục tiêu bài học
- Nắm được ý chính của bài và mối liên hệ với module.
- Áp dụng được kiến thức vào bối cảnh CRM/.NET backend.
- Sẵn sàng chuyển sang bài kế tiếp với nền tảng chắc chắn.
Nội dung bài học
Ý tưởng cốt lõi: Policies (business) không biết gì về chi tiết delivery (Web, SQL, gRPC).
Thường gom thành các vòng:
- Entities — luật doanh nghiệp thuần.
- Use cases — luồng ứng dụng (một chức năng user/system).
- Interface adapters — presenter, gateway,
DbContextmapping. - Frameworks & drivers — ASP.NET Core, EF, Serilog.
Trong .NET thực tế, bạn thường thấy các project:
Domain— không reference gì ngoài BCL (hoặc rất ít).Application— referenceDomain; định nghĩa interface port (ILeadRepository).Infrastructure— referenceApplication+Domain; implement port.Api— referenceApplication+Infrastructure(composition root).
Composition root (thường Program.cs) là nơi duy nhất “nối dây” implementation vào interface.
Bài tập áp dụng
- Tóm tắt bài học bằng ngôn ngữ của bạn.
- Liên hệ nội dung với một tình huống thực tế trong dự án.
- Đề xuất một cải tiến cụ thể sau khi học bài này.
Tự kiểm tra
- Bạn có thể giải thích lại nội dung chính trong 2 phút không?
- Bạn có ví dụ áp dụng thực tế chưa?
- Bạn biết bước tiếp theo cần học/triển khai là gì không?
Kết luận
Hoàn thành bài này giúp bạn có góc nhìn đầy đủ hơn trước khi đi tiếp trong module.
Điều hướng
- Bài trước: 16.3 — 2. Layered architecture (cổ điển nhưng vẫn hữu ích)
- Bài tiếp theo: 16.5 — 4. Vertical Slice Architecture (VSA)
- Về module: Trang mục lục