2009-04-28 44 views
9

chỉ tôi muốn biết sự khác biệt thực sự giữa MVC và MVC MODEL2 trong sự phát triển là gì là gìsự khác biệt thực sự giữa MVC và MVC MODEL2

+0

Một Giải thích tốt có thể được tìm thấy tại VolkerK

+0

Tôi tin rằng 2 liên kết này chứa thông tin thực tế bạn đang cố gắng tìm hiểu: [Model1] (http://en.wikipedia.org/wiki/Model_1), [Model2] (http://en.wikipedia.org/wiki/M odel_2) –

Trả lời

19

Để minh họa cho câu trả lời trước (và thêm lời giải thích từ this article):

MVC2 là một abuse of language ám chỉ thực sự đến kiến ​​trúc JSP Model 2, như trái ngược với JSP mẫu 1:

Công nghệ Java đầu tiên cho sự phát triển phía máy chủ web là servlet.
Viết các ứng dụng với servlet rất giống với việc viết các ứng dụng CGI trong Perl trong đó tất cả các đầu ra phải được xây dựng thành các chuỗi từ bên trong mã Java.
Điều này rất tẻ nhạt và dễ bị lỗi. Nó cũng làm cho nó rất khó khăn cho các nhà thiết kế web không có kinh nghiệm Java để thay đổi giao diện của các trang được tạo ra bởi servlet.

alt text http://www.javaworld.com/javaworld/jw-12-1999/images/MODEL1_sml.gif

Sau đó, đến JSP. JSP, giống như Microsoft ASP và giống như ngôn ngữ kịch bản phổ biến PHP, xử lý mọi thứ dưới dạng văn bản mẫu, nhưng cho phép chèn mã Java vào các thẻ được gọi là tập lệnh và biểu thức JSP.
Điều này cho phép mọi người làm việc trên các ứng dụng phía máy chủ giống như với các ngôn ngữ kịch bản phổ biến khác nhưng nó có một vài hạn chế.

  • Không có sự phân tách nào.
  • Một tập lệnh sẽ giữ mã cơ sở dữ liệu, logic nghiệp vụ, đánh dấu HTML và bất kỳ mã javascript nào cần thiết để hiển thị trang cuối cùng.
  • Sử dụng lại mã khó khăn như thử nghiệm tự động.

Điều này được gọi là lập trình JSP "Mô hình 1".

MVC or the Model View Controller pattern là một kỹ thuật phổ biến để tách các mối quan tâm khác nhau trong mã GUI được phát minh bởi Trygve Reenskaug, làm việc trên Smalltalk cho Zerox.

Tại một số điểm, rõ ràng là kỹ thuật này có thể được điều chỉnh cho phù hợp với các ứng dụng Java EE để đạt được cùng một mức độ tách biệt.
Làm như vậy liên quan đến việc viết lớp Mô hình dưới dạng Beans hoặc Plain Old Java Objects (POJOs), sử dụng servlets làm Controller, và sau đó, khi tất cả việc nâng hạng nặng được thực hiện, chuyển tiếp đến JSP để định dạng và đánh dấu kết quả.
Các ứng dụng Servlet/JSP được viết bằng cách sử dụng và kiến ​​trúc MVC được gọi là lập trình JSP Model 2.

alt text http://www.javaworld.com/javaworld/jw-12-1999/images/MODEL2_sml.gif

Bởi vì mô hình này tồn tại trong một hình thức khác nhau trước khi được sử dụng trong servlet/JSP ứng dụng, người ta đôi khi được gọi là "MVC2". Tên này dẫn đến một số nhầm lẫn vì nó ngụ ý rằng có một MVC1 cho các ứng dụng servlet, mà không có.
Đủ để nói MVC.

+0

Thanx cho an gooooooood ans, tôi phải hài lòng hình thức trả lời ur –

+0

@Ashvin Bạn được chào đón – VonC

+0

@VonC - Nó không phải là một ý tưởng tốt để sao chép mà không đưa ra một tham chiếu. Vui lòng cung cấp tham chiếu trong bài đăng gốc của bạn. Cảm ơn. –

3

Một lưu ý lịch sử thú vị về các điều khoản ...

[Tôi ước gì có thể tìm thấy giấy ... (Tôi chỉ cố gắng googling nhưng không có may mắn!)]

Một khi trở lại, ai đó đã viết một bài báo mô tả hai phương pháp tiếp cận MVC cho các ứng dụng web. Trong đó, anh có hai con số.

Phụ đề là "model 1" và "model 2".

Họ không có ý định như tên thực tế của mô hình (giống như "con số 1" và "hình 2"), nhưng ai đó đọc nó và viết về nó như thể đó là một tên mô hình ...

(ai có ref?)

VonC mô tả sự khác biệt khá tốt

+0

Thú vị (+1). Tôi chỉ đơn thuần là sao chép và định dạng lại và bài viết javaworld. Về nhận xét của bạn, bản trình bày này (http://www.javapassion.com/j2ee/MVCPatternAndFrameworks.pdf) không đề cập đến "MVC model 1" và "MVC model 2"! (nhưng đó có thể là sản phẩm phụ của giấy của bạn chứ không phải tài liệu thực tế bạn đang tham khảo) – VonC

+0

Arf, trong "bảng câu trả lời" này (http://csdl.ics.hawaii.edu/~johnson/613s05 /613s05FinalAnswerKey.pdf), Mô hình MVC “1” hướng tới các ứng dụng phía máy khách, chẳng hạn như ứng dụng GUI dựa trên Swing. Trong trường hợp này, tất cả các mã ứng dụng tồn tại trong một JVM duy nhất trên một máy khách duy nhất. Mô hình MVC “2” được định hướng theo ngữ cảnh ứng dụng web máy khách-máy chủ, trong đó người dùng đang phát hành yêu cầu HTTP tới máy chủ. Ngược lại với Model 1, kiến ​​trúc Model 2 yêu cầu thực hiện một servlet đơn hoạt động như Controller và nhận tất cả các yêu cầu từ các trình duyệt phía máy khách. – VonC

+0

Trình chiếu slide đó gần, nhưng nó gọi ra Model 1/Model 2 như thể chúng là các thuật ngữ thực tế ... "Model 2" không thực sự là một bước tiến hóa như họ nói; nó chỉ là một cách thực hiện khác nhau về tách mô hình/giao diện người dùng. –

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