con dự án công ty em cũng chia layer giống thím thớt đề cập, controller thì gọi tới service, service thì gọi các repo, thậm chí gọi cả service khác (chính em khi code thêm feature đã bắt trước inject thêm service và dính circular dependency
)
Tuy nhiên có một phần em thấy rất khó hiểu, đó là việc xử lý logic lại đấy cho thằng repo và controller là chủ yếu, những file controller hay repo 6k loc là chuyện rất bình thường, service layer thì đa số chỉ return repo.
Controller thì phải xử lý nhiều logic để tạo viewbag và viewmodel, còn tất cả các businesse logic đều xử lý trong Repo, đa phần là phải dùng những câu query join đến 4 5 tables (10 thằng thì có 7 thằng phải dùng query lên tới cả trang, còn lại là crud).
Em thắc mắc là nếu như business logic cần dùng đến nhiều query như thế, theo lý thuyết bác trên có nói thì repos chỉ crud và trả về full entity, thì chắc chắn code trong service sẽ bị phình cực to (thay vì chỏ dùng 1 câu query khoảng 50 loc thì phải viết 1 service 200 loc để đáp ứng nhu cầu tương tự). Như vậy có phải code bên em không clean, hay là do trên thực tế project phực tạp việc apply pattern 1 cách clean là việc khó khá thi ạ