Sự khác biệt giữa Application Service và Domain Service trong Domain-Driven Design là gì? Cho ví dụ về thời điểm nên đặt logic vào Domain Service.
Phân biệt Application Service và Domain Service
| Đặc điểm | Application Service | Domain Service |
|---|---|---|
| Vai trò chính | Điều phối quy trình (Workflow orchestration), quản lý Transaction, bảo mật, gửi email, gọi Event Bus. | Chứa các quy tắc nghiệp vụ phức tạp (Business Logic) không thuộc về riêng một Entity hoặc Value Object nào. |
| Trạng thái (State) | Thường không chứa trạng thái nghiệp vụ. | Vô trạng thái (Stateless), tập trung hoàn toàn vào tính toán nghiệp vụ. |
| Sự phụ thuộc | Phụ thuộc vào Domain Service, Repositories, External Services. | Chỉ phụ thuộc vào các đối tượng Domain khác (Entities, Value Objects). |
Thời điểm nên đặt logic vào Domain Service
Theo định nghĩa của DDD, logic nghiệp vụ ưu tiên nằm bên trong Entity hoặc Value Object. Tuy nhiên, bạn bắt buộc phải dùng Domain Service khi:
Nội dung chi tiết câu trả lời, phân tích kỹ thuật chuyên sâu, mã nguồn minh họa và các trường hợp ngoại lệ chỉ dành riêng cho học viên Unicode E-learning...
Để mở khóa toàn bộ giải pháp chi tiết và tài liệu hướng dẫn phỏng vấn, vui lòng nâng cấp tài khoản hoặc tham gia gói Learning Pass để truy cập không giới hạn.
// Mã nguồn và kiến trúc giải pháp bị ẩn đối với tài khoản chưa nâng cấp...
Làm Chủ Phỏng Vấn & Nâng Cao Trình Độ Chuyên Nghiệp
Hệ thống khóa học thực chiến chuẩn Enterprise giúp bạn tự tin chinh phục mọi kỳ phỏng vấn kỹ thuật và thăng tiến thu nhập.
Tải Tuyển Tập 100+ Câu Hỏi Phỏng Vấn Chuyên Sâu (PDF)
Bộ tài liệu chuẩn Senior do Unicode Academy tuyển chọn & biên soạn, hỗ trợ tải về định dạng PDF chuẩn in ấn.
Cần Mentor Phỏng Vấn Thử 1-1 & Tối Ưu CV?
Mô phỏng phỏng vấn kỹ thuật thực tế 1-1 qua Google Meet, nhận xét chi tiết điểm mạnh/yếu và sửa CV trực tiếp cùng giảng viên Unicode.
Kiểm Tra CV Chuẩn ATS Miễn Phí
Tải CV của bạn lên để hệ thống AI rà soát từ khóa kỹ năng, định dạng và tính điểm chuẩn nhà tuyển dụng.
Câu hỏi ddd liên quan cùng chủ đề
- Trong Domain-Driven Design, khái niệm Aggregate và Aggregate Root đóng vai trò gì trong việc duy trì tính toàn vẹn dữ liệu, và nguyên tắc thiết kế kích thước của một Aggregate là gì? Junior
- Repository Pattern trong Domain-Driven Design khác gì so với Repository Pattern truyền thống trong các ứng dụng CRUD thông thường? Junior
- Domain Event là gì và tại sao chúng ta nên sử dụng Domain Event để xử lý các tác vụ phụ thuộc lẫn nhau giữa các Bounded Context thay vì gọi trực tiếp API đồng bộ? Junior
- Anti-Corruption Layer (ACL) là gì trong kiến trúc Domain-Driven Design và khi nào chúng ta bắt buộc phải áp dụng nó? Junior
- Trong Domain-Driven Design, làm thế nào để phân biệt rõ ràng giữa Entity và Value Object khi thiết kế mô hình dữ liệu cho một hệ thống thương mại điện tử cấp độ Junior? Junior


