Tôi nghĩ rằng điều này phụ thuộc vào dự án cụ thể.
Ví dụ: nếu các lĩnh vực kinh doanh khác nhau hoàn toàn độc lập với nhau, thì tôi sẽ tổ chức theo lĩnh vực kinh doanh.
Nhưng nếu có mã chia sẻ giữa các lĩnh vực kinh doanh, hay đúng hơn, các lĩnh vực kinh doanh là các biến thể khác nhau của cùng một cơ sở mã, thì việc tổ chức theo lĩnh vực kỹ thuật có vẻ hợp lý hơn. Và nếu bạn sử dụng bất kỳ loại ngôn ngữ hướng đối tượng nào, thì có lẽ bạn có thể phân lớp các bộ điều khiển chung, mô hình, v.v. trong các tệp dành riêng cho doanh nghiệp của bạn để làm cho chúng mỏng hơn.
Ngoài ra, còn có một khoảng giữa (vàng) giữa hai - loại bỏ mã được chia sẻ thành tên miền riêng của nó và sử dụng mã đó trong các miền khác. Điều này cung cấp cho bạn bố cục dựa trên cảm giác ruột của bạn, nhưng cho phép chia sẻ mã giữa các lĩnh vực kinh doanh.
Domain1 # This domain changes bits of standard MVC code
controllers
models
views
Domain2 # this domain only modifies views, all else is standard
views
Shared # Here is the better part of code base
controllers
models
views
Tái bút Tôi nghĩ rằng hầu hết các khung tổ chức theo miền kỹ thuật chỉ vì họ có xu hướng mong đợi rằng bạn trộn các miền kinh doanh khác nhau vào một dự án chỉ khi bạn đã chia sẻ mã và nếu không sẽ tạo các dự án riêng biệt.
CHỈNH SỬA:
Ví dụ: giả sử có một ứng dụng web xử lý kho của công ty. Ở dạng chung, điều này có thể áp dụng cho nhiều công ty, nhưng mỗi công ty có thể có một số chi tiết cụ thể không đáp ứng và cấm họ mua. Ví dụ: một trong số họ đã triển khai máy tính bảng cho xe nâng và cần có Chế độ xem đặc biệt cho họ trong khi một người khác muốn để sắp xếp các mục thành ba cấp độ thay vì mặc định là hai cấp độ.
Tất nhiên bạn có thể rẽ nhánh dự án cho mỗi công ty này. Nhưng nếu khung / ngôn ngữ cho phép, bạn có thể sử dụng phân lớp hoặc plugin, v.v. để tùy chỉnh các bit và phần của dự án chung theo nhu cầu của mọi khách hàng và sắp xếp chúng trong bố trí Miền doanh nghiệp.
Ví dụ: nếu dự án chung chỉ xuất sang JSON, thì Domain1 có thể phân lớp bộ điều khiển và khiến nó xuất ra các vấn đề phân phối gần đây.
Và nếu sau này bạn thấy rằng Domain1 có một thành phần cũng hợp lệ cho Domain2, bạn có thể trích xuất phiên bản chung của nó sang Shared.
Như bạn đã nói, nhiều khung tổ chức theo lĩnh vực kỹ thuật và đó là những gì tôi đã sử dụng cho đến bây giờ, chỉ vì FW lựa chọn của tôi làm cho việc này dễ dàng hơn. Nhưng với một ít (hoặc rất nhiều) mỡ khuỷu tay, tôi nghĩ rằng tôi có thể viết lại các đường dẫn bao gồm để hỗ trợ bố cục Miền doanh nghiệp.