2012-07-18 19 views
7

Tôi đã ứng dụng MVC, với "M" bao gồm các lớp Dịch vụ và Kho lưu trữ.Bộ điều khiển -> Dịch vụ -> Kho lưu trữ: Dịch vụ Bản đồ thực thể đối với ViewModel?

Tuy nhiên, tôi hơi bối rối về vị trí và cách thực hiện một vài điều.

  1. Một dịch vụ gọi hai kho, hoặc gọi nó là kho lưu trữ riêng và dịch vụ khác

ví dụ

Tôi có một ReferenceDataService, xử lý tất cả logic cho CRUD với các bảng tham chiếu của tôi.

Sau đó, trong "CustomerService" của tôi, tôi cần phải 'R' dữ liệu tham chiếu của tôi để có được ví dụ: Mô tả thay cho Id. Vì vậy, tôi gọi các ReferenceDataService hoặc ReferenceDataRepository?

  1. Ở một số lớp, tôi muốn ánh xạ từ Thực thể đến ViewModel.

Tôi có làm điều này trong lớp Dịch vụ của tôi hoặc trong Bộ điều khiển không?

ví dụ: ServiceLayer của tôi có thực hiện ánh xạ/logic từ VM đến Entity và ngược lại không?

Cảm ơn :)

Trả lời

22
  • Repositories nói chuyện với một nguồn dữ liệu cơ bản.
  • Cuộc đàm phán lớp dịch vụ với kho lưu trữ với mô hình miền. Phải mất/chuyển các mô hình miền từ/đến lớp kho lưu trữ.
  • Cuộc đàm phán điều khiển cho lớp dịch vụ. Bộ điều khiển nhận/chuyển các mô hình miền từ/đến lớp dịch vụ.
  • Lớp điều khiển cuộc gọi lập bản đồ (nếu có) để ánh xạ giữa các mô hình miền và các kiểu xem. Nếu bạn không có một lớp bản đồ, bạn có thể thực hiện ánh xạ trong bộ điều khiển của bạn mặc dù điều này có thể nhanh chóng trở nên rườm rà trong trường hợp AutoMapper có thể đóng vai trò như một lớp bản đồ rất tiện dụng.

Một trường hợp đơn giản hơn nữa là khi bạn không cần lớp dịch vụ thường là trường hợp trong các ứng dụng nhỏ hơn. Một lớp dịch vụ không mang lại lợi ích gì. Vì vậy, bộ điều khiển nói chuyện trực tiếp với các kho lưu trữ với các mô hình miền.

+0

+1 - Câu trả lời thú vị hơn bao giờ hết! – bhuvin

+0

Thx :) Tôi nghĩ rằng tôi có thể xóa lớp dịch vụ của mình ... nó phục vụ rất ít mục đích trong ứng dụng của tôi và tôi đã bao gồm nó chỉ vì "nó được trang bị mẫu". Doh! – BlueChippy

5

Chế độ xemMô hình chứa dữ liệu, bắt buộc để hiển thị mô hình trên chế độ xem. Nếu bạn sẽ sử dụng chế độ xem khác (ví dụ: ứng dụng dành cho thiết bị di động hoặc ứng dụng dành cho máy tính để bàn hoặc thậm chí là dịch vụ web), bạn sẽ yêu cầu một dữ liệu khác được hiển thị trên chế độ xem. Nếu bạn sẽ thực hiện ánh xạ trên lớp dịch vụ, thì bạn sẽ không thể sử dụng nó với một loại ứng dụng khác. Do đó bộ điều khiển là nơi bạn ánh xạ dữ liệu miền để hiển thị chúng trên chế độ xem (bất kỳ loại chế độ xem nào bạn có).

Các vấn đề liên quan