#1. Vấn đề
Mô hình MVC truyền thống (Fat Model) thường khiến Class bị quá tải. Việc truy vấn (Read) bị trộn lẫn với logic nghiệp vụ (Command) làm performance khó tối ưu.
#2. Giải pháp
Tách biệt:
- Command: Thực hiện logic (tạo đơn, update tiền).
- Query: Chỉ lấy dữ liệu (thống kê, search).
#3. Thực hiện
Trong Laravel:
- Commands: Tạo các class
RegisterUserCommand,PlaceOrderCommandvà sử dụngCommandBus. - Queries: Tạo các
QueryServicetrả về DTOs, dùng Database thô để đạt tốc độ nhanh nhất.
#4. Câu hỏi nhanh
Q: Tại sao phải tách biệt? A: Vì việc Đọc và Ghi có yêu cầu tài nguyên khác nhau. Đọc có thể cache, ghi cần nhất quán. Q: Nhược điểm? A: Codebase bị tăng gấp đôi, cần hệ thống sync dữ liệu giữa Read/Write DB (nếu tách DB).