16.5 — 4. Vertical Slice Architecture (VSA)
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
Thay vì chia theo layer ngang (Controllers/, Services/), chia theo tính năng (slice):
Features/
Leads/
CreateLead.cs // endpoint + handler + validator + view model (cùng slice)
GetLeadById.cs
Ưu điểm: thay đổi “Tạo Lead” chủ yếu đụng một thư mục; giảm merge conflict giữa team.
Nhược điểm: cần convention rõ (template slice), tránh copy-paste handler. Có thể kết hợp: slice cho feature, nhưng vẫn giữ Domain chung cho entity tái sử dụng.
Gợi ý: team 2–5 dev, CRM đang lớn nhanh — VSA + thư mục Domain/SharedKernel thường rất thực dụng.
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.4 — 3. Clean Architecture (Uncle Bob) — dependency rule
- Bài tiếp theo: 16.6 — 5. DDD chiến thuật (vừa đủ cho backend)
- Về module: Trang mục lục