16.2 — 1. Vì sao CRM “to ra” là lúc kiến trúc trả giá?
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
Khi CRM chỉ vài controller và một DbContext, mọi thứ vẫn nhanh. Khi thêm workflow, approval, đa tenant, tích hợp thanh toán, code thường:
- Nhét business rule vào controller hoặc
OnModelCreating. - Gọi
DbContexttrực tiếp từ mọi nơi → khó đổi ORM hoặc tách service. - Không có ranh giới nghiệp vụ → một sửa ở Billing làm vỡ Lead ở Sales.
Mục tiêu kiến trúc: giữ quyết định nghiệp vụ ở chỗ ít phụ thuộc framework nhất, để thay đổi UI/API/DB không làm “động” lõi.
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.1 — Module Orientation
- Bài tiếp theo: 16.3 — 2. Layered architecture (cổ điển nhưng vẫn hữu ích)
- Về module: Trang mục lục