2009-04-03 48 views
5

Tôi chỉ mới bắt đầu vào ASP.NET MVC cố gắng để hiểu triết lý đầu tiên. Tôi nghĩ rằng tôi khá rõ ràng về vai trò của bộ điều khiển và quan điểm nhưng tôi hơi bối rối về phần mô hình. Một số nguồn tin nói rằng mô hình miền của nó, một số nói rằng mô hình dữ liệu của nó, một số nói rằng các đối tượng của nó bị ràng buộc với khung nhìn.Các mô hình trong MVC

IMHO đây là những điều rất khác nhau. Vì vậy, xin vui lòng ai đó có thể xóa điều này lên một lần và cho tất cả?

Trả lời

9

Tôi thực sự muốn thêm lớp bổ sung để làm cho mọi thứ rõ ràng hơn. Về cơ bản, "Mô hình" là điều cụ thể về miền và biết cách duy trì chính nó (giả sử kiên trì là một phần của miền).

IMO, lớp khác mà tôi gọi là tôi gọi là ViewModel ... đôi khi, "mô hình" được chuyển đến chế độ xem thực sự không liên quan gì đến miền ... nó sẽ có những thứ như thông tin xác thực, thông tin hiển thị của người dùng, giá trị danh sách tra cứu để hiển thị trong chế độ xem.

Tôi nghĩ đó là ngắt kết nối bạn gặp :-)

11

Mô hình là "đại diện theo tên miền cụ thể của thông tin mà ứng dụng hoạt động". Nó không chỉ là mô hình dữ liệu, vì đó là một mức thấp hơn so với mô hình MVC nghĩ đến, nhưng (ví dụ) đó là các lớp đóng gói dữ liệu và cho phép bạn thực hiện xử lý chúng.

Scott Guthrie từ MS sử dụng định nghĩa này trong his announcement:

"Mô hình" trong một ứng dụng MVC dựa là các thành phần của ứng dụng có trách nhiệm duy trì nhà nước. Thông thường, trạng thái này được lưu giữ bên trong cơ sở dữ liệu (ví dụ: chúng tôi có thể có một lớp Sản phẩm là được sử dụng để trình bày dữ liệu đơn đặt hàng từ bảng Sản phẩm bên trong SQL).

Tiếp tục đọc:

+0

đánh bại tôi trên Wikipedia. –

+0

Ai/Điều gì thao túng và vận hành trên tiểu bang nếu mô hình chỉ tồn tại để duy trì trạng thái. Tôi hy vọng bạn không nói điều khiển hoặc người nào khác tôi sẽ nhầm lẫn về họ là tốt: | –

+0

"Bộ điều khiển: Xử lý và phản hồi các sự kiện (thường là hành động của người dùng) và có thể gián tiếp gọi các thay đổi trên mô hình." Người dùng gọi một hành động và điều đó sẽ thay đổi mô hình, gây ra một cập nhật cho khung nhìn. – crb

2

Bạn nên có một cái nhìn tại this nó một từng bước hướng dẫn.

Từ một trong những chương: trang 26

Trong một khuôn khổ MVC thuật ngữ “mô hình” liên quan đến các đối tượng đại diện cho dữ liệu của ứng dụng, cũng như logic miền tương ứng tích hợp xác thực và quy tắc kinh doanh với quy tắc đó. Mô hình này theo nhiều cách “trái tim” của một ứng dụng dựa trên MVC, và như chúng ta sẽ thấy sau này về cơ bản thúc đẩy hành vi của nó.

Hy vọng hữu ích của nó.

0

Ví dụ, nếu bạn đang xây dựng một trang web để, nói, quản lý hoạt động của một nhà máy hạt nhân, so với mô hình là mô hình của nhà máy, hoàn chỉnh với các thuộc tính cho các thông số vận hành hiện tại (nhiệt độ, vv), các phương pháp để bắt đầu/dừng phát điện, ... Mmmm ... trong trường hợp này, mô hình thực sự là một phép chiếu thực vật so với chế độ phân lập nhưng bạn có ý tưởng.

4

Nguồn tư vấn của bạn là chính xác khi họ nói đó là mô hình miền. Trong nhiều trường hợp, nó sẽ được liên kết chặt chẽ với mô hình dữ liệu của bạn.

Trường hợp mô hình miền và dữ liệu khác nhau là mô hình dữ liệu tương đối tĩnh dưới dạng (không phải nội dung) trong khi mô hình miền của bạn thêm các ràng buộc và quy tắc cụ thể của miền của bạn. Ví dụ, trong mô hình dữ liệu của tôi (cơ sở dữ liệu) tôi đại diện cho huyết áp như smallints (tâm thu và tâm trương). Trong mô hình miền của tôi, Tôi có đối tượng "đọc huyết áp" chứa giá trị cho mỗi lần đọc và cũng áp dụng các hạn chế bổ sung đối với phạm vi giá trị được chấp nhận (ví dụ: phạm vi cho tâm thu nhỏ hơn nhiều so với giá trị nhỏ hơn). Nó cũng cho biết thêm các đánh giá định tính về các giá trị này (một BP 150/90 là "cao").

Việc bổ sung các khía cạnh này của miền sự cố là điều làm cho mô hình miền không chỉ là mô hình dữ liệu. Trong một số miền (ví dụ: những tên sẽ được hiển thị tốt hơn với mô hình dữ liệu hướng đối tượng đầy đủ và bản đồ kém trên mô hình quan hệ), bạn sẽ thấy rằng hai phân tách khá đáng kể. Tuy nhiên, tất cả các hệ thống mà tôi đã tạo đều có mức chồng lấp rất cao. Thật vậy, tôi thường đẩy một số lượng hợp lý các ràng buộc miền vào chính mô hình dữ liệu thông qua các thủ tục được lưu trữ, các loại do người dùng xác định, v.v.

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