2012-06-17 41 views
6

Tại sao MÔ HÌNH trong ASP.NET MVC đôi khi được sử dụng như một phần của ứng dụng nói chuyện với cơ sở dữ liệu như here và đôi khi là đối tượng kinh doanh "di chuyển" trên các ứng dụng phân phối dữ liệu như here?Ý nghĩa mô hình trong MVC

+0

Nếu ai đó có thể xác định vị trí các bài viết gốc, họ có thể nhúng hình ảnh không? Tôi dường như không thể truy cập vào một trong số họ. –

Trả lời

4

MVC đã phát triển theo các hướng khác nhau kể từ khi bắt đầu Smalltalk của nó đến điểm mà nó thường được sử dụng để mô tả kiến ​​trúc rất khác nhau, như bạn đã phát hiện ra.

Martin Fowler viết blog về sự tiến hóa của MVC tại đây. http://martinfowler.com/eaaDev/uiArchs.html

Có một giải thích về sự khác nhau giữa MVC, MVP và MVVM ở đây: http://joel.inpointform.net/software-development/mvvm-vs-mvp-vs-mvc-the-differences-explained/

10c My:

Nhiều ví dụ về ASP.NET MVC 3 được liên kết chặt chẽ hơn đối với các mô hình MVVM hơn MVC. Trong MVVM, ViewModels được thiết kế riêng cho dữ liệu cụ thể của từng Chế độ xem (tức là 'Chế độ xem' không chỉ đơn thuần là mô hình miền, nhưng được trang trí với các mối quan tâm của Chế độ xem/Trình bày như quy tắc xác thực, lời nhắc trường/tên, khả năng hiển thị trường, v.v.). Trong các dự án trung tâm dữ liệu nhỏ hơn mà không cần nhiều phân nhánh cuối, M có thể đơn giản như mô hình ORM (ví dụ: một .EDMX với một số POCO được tạo tự động) với một vài quy tắc. Trong trường hợp này MVC có thể được coi là một kiến ​​trúc ứng dụng.

Nhưng trong các dự án lớn hơn sử dụng MVC, bản gốc (Smalltalk) 'M' của mô hình hiện được chia thành nhiều lớp khác, ví dụ: các thực thể miền, mặt tiền dịch vụ, Dịch vụ (ví dụ: SOA), Business và Data Tiers, v.v. (ở đây, M VC là mẫu cấp bản trình bày và M là phần còn lại của hệ thống). Vì vậy, ví dụ trong một dự án như vậy, thư mục 'Models' của dự án MVC của bạn có thể đơn giản là các tài liệu tham khảo dịch vụ và các thực thể miền được sử dụng để giao tiếp với 'back end' của hệ thống của bạn, hoặc thậm chí một sự trừu tượng của giao tiếp này. mặt tiền dịch vụ/đại lý dịch vụ được sử dụng trong Khối ứng dụng hỗn hợp).

1

tôi nghĩ về nó như là "logic kinh doanh" hay "những thứ người sử dụng nhận được từ các trang web, không phải là cách có vẻ" .

3

Vì cả hai thứ này là một phần của thành phần 'Mô hình' trong MVC được cho là sẽ làm.

Nói đại khái, vai trò ba thành phần là:

  • Các Mẫu thực hiện toàn bộ luận lý tên miền. Điều này thường liên quan đến sự kiên trì (ví dụ: một cơ sở dữ liệu), nhưng cũng là logic nghiệp vụ - trong MVC hoàn hảo, bất kỳ sửa đổi nào đối với dữ liệu miền của bạn đều được thực hiện dưới dạng thường trình Mô hình.
  • Bộ điều khiển Điều khiển đọc đầu vào từ giao diện người dùng (hoặc bất kỳ giao diện công khai nào của bạn) và gửi đến đúng Quy trình mô hình.
  • Xem chuyển đổi dữ liệu Mô hình thô thành nội dung mà giao diện người dùng có thể hiển thị cho giao diện công khai.

Không giống như kiến ​​trúc nhiều tầng, MVC không phân biệt giữa logic miền và độ bền của dữ liệu: Mô hình thực hiện cả hai.

Trong thực tế, tuy nhiên, hầu hết các triển khai MVC không chính xác 100%. Nó là khá phổ biến để xem Model giảm xuống một lớp truy cập dữ liệu, với phần lớn logic miền xảy ra trong Controller. Trong thực tế, đôi khi không rõ ràng nơi xác nhận đầu vào (công việc của Bộ điều khiển) kết thúc và xử lý tên miền thực tế (công việc của Mô hình) bắt đầu. Ngoài ra còn có một chút tranh cãi về cách dữ liệu chảy từ Mô hình đến Chế độ xem - Bộ điều khiển có đọc lại dữ liệu Mô hình và chuyển nó tới Chế độ xem hay Mô hình tích cực chuyển kết quả của nó tới Chế độ xem không? Hay View là phần hoạt động, truy vấn Model cho dữ liệu?

2

Trong mẫu Bộ điều khiển chế độ xem mô hình, Bộ điều khiển đang dẫn đầu. Nó xác định chế độ xem nào được hiển thị và dữ liệu được chuyển đến chế độ xem đó.

Hầu hết thời gian chúng ta quen với kiến ​​trúc sử dụng cơ sở dữ liệu để duy trì mô hình. Nhưng đó không phải là một yêu cầu. Mô hình cũng có thể được tiếp tục tồn tại cho một thứ khác (ví dụ: các dịch vụ web hoặc XML).

M cũng có thể đứng cho một kiểu xem. Điều đó có nghĩa là bạn không chuyển mô hình thực tế từ cơ sở dữ liệu sang bộ điều khiển để xem nhưng bạn đang sử dụng một mô hình được thiết kế riêng cho khung nhìn.

Khi sử dụng Thiết bị điều khiển tên miền, bộ điều khiển của bạn chỉ hoạt động để gọi các chức năng trong miền của bạn. Mô hình miền chứa logic nghiệp vụ thực tế và cho thấy các dịch vụ truy cập vào kho lưu trữ lâu bền của bạn (kho lưu trữ) và tạo đối tượng mới (nhà máy). Bộ điều khiển nên sau đó càng phẳng càng tốt.

2

Mô hình là phần khó hiểu nhất của MVC cần hiểu.

Một số người nghĩ về mô hình kinh doanh, vì vậy họ làm những việc như mô hình của họ nói chuyện trực tiếp với cơ sở dữ liệu.

Những người khác nghĩ về mặt kiểu xem, vì vậy họ kết thúc với các lớp dữ liệu đơn giản hơn.

Cá nhân, tôi thuộc nhóm thứ hai, vì tôi nghĩ nó mang lại sự phân tách mối quan tâm tốt hơn.

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