Theo Sun và Msdn, đó là một mẫu thiết kế.
Theo Wikipedia nó là một mẫu kiến trúc
So với các mẫu thiết kế, các mẫu kiến trúc có quy mô lớn hơn. (Wikipedia - Mẫu kiến trúc )
Hay là mẫu kiến trúc cũng có mẫu thiết kế?
Cái nào là đúng ?
Theo Sun và Msdn, đó là một mẫu thiết kế.
Theo Wikipedia nó là một mẫu kiến trúc
So với các mẫu thiết kế, các mẫu kiến trúc có quy mô lớn hơn. (Wikipedia - Mẫu kiến trúc )
Hay là mẫu kiến trúc cũng có mẫu thiết kế?
Cái nào là đúng ?
Câu trả lời:
MVC là một mô hình kiến trúc, nhưng không phải là ứng dụng hoàn chỉnh. MVC chủ yếu liên quan đến giao diện người dùng / lớp tương tác của một ứng dụng. Bạn vẫn cần lớp logic nghiệp vụ, có thể là một số lớp dịch vụ và lớp truy cập dữ liệu. Đó là, nếu bạn theo cách tiếp cận n-tier.
Tại sao một trong số chúng phải đúng?
Cả hai đều có thể đúng, tùy thuộc vào quan điểm.
MVC có thể là một mẫu kiến trúc, nếu nó tạo thành nền tảng của kiến trúc ứng dụng.
Nó cũng có thể được xem đơn giản là một mẫu thiết kế, một khái niệm trừu tượng có thể áp dụng cho bất kỳ ứng dụng nào.
Các mẫu thiết kế cho biết cách viết mã hiệu quả (xem xét Số liệu mã ).
Một số lợi ích:
Các mẫu kiến trúc nói lên cách sử dụng tài nguyên một cách hiệu quả.
Trong MVC, a). Các khung nhìn có thể được tạo bằng cách sử dụng các mẫu javascript và cũng có thể sử dụng html b). Bộ điều khiển có thể được viết .NET framework và c). Mô hình có thể được viết bằng Java - một dịch vụ java có thể được sử dụng để chỉ trả về dữ liệu json.
Trong khi ở dạng thiết kế, không thể triển khai một mẫu mà mã có thể được viết bằng nhiều công nghệ như lớp AdminUser trong Java, lớp Khách hàng trong C #, lớp Đối tác trong Php và một mẫu nhà máy trong Ruby :); hmmm..nó dễ không? :)
Tôi biết rằng nó đã được trả lời cách đây một thời gian, nhưng vẫn chưa ai đề cập đến cuốn sách đã làm cho MVC trở nên nổi tiếng: Kiến trúc phần mềm hướng khuôn mẫu (POSA), của Buschmann và cộng sự xuất bản năm 1996. Mặc dù không được đọc nhiều như cuốn sách Mẫu thiết kế , của Gamma và cộng sự, POSA là một trong những cuốn sách nền tảng được cộng đồng mẫu sử dụng.
Ồ, và POSA xác định rất rõ ràng MVC như một mẫu kiến trúc. Linh cảm của tôi là MS và Sun đang cẩu thả và gọi mọi mẫu là "mẫu thiết kế".
Tôi nghĩ cả hai đều đúng. Nếu bạn đang xem một bản khởi tạo cụ thể của MVC trong một khuôn khổ như Ruby on Rails, thì bản khởi tạo đó giống với một mẫu thiết kế hơn. Nếu bạn xem MVC như một khái niệm chung , nó giống một mô hình kiến trúc hơn.
Các mẫu thiết kế bên trong bộ ba lớp Model / View / Controller (MVC) bao gồm và có thể không giới hạn ở:
Người quan sát , việc tách các đối tượng để thay đổi thành một (mô hình) có thể ảnh hưởng đến bất kỳ số lượng nào khác (các khung nhìn) mà không yêu cầu đối tượng đã thay đổi (mô hình) biết chi tiết của các đối tượng khác (các khung nhìn).
Composite , cho phép chúng ta xử lý một đối tượng nhóm (một dạng xem tổng hợp) giống như chúng ta xử lý một trong các đối tượng riêng lẻ của nó (các thành phần dạng xem).
Chiến lược , trong đó một chế độ xem sử dụng một phiên bản của lớp con Bộ điều khiển để thực hiện một chiến lược phản hồi cụ thể; để thực hiện một chiến lược khác, chỉ cần thay thế phiên bản bằng một loại bộ điều khiển khác.
Phương thức Nhà máy , chỉ định lớp bộ điều khiển mặc định cho một dạng xem.
Trình trang trí , thêm thao tác cuộn vào chế độ xem.
Tài liệu tham khảo
Eric Gamma, Richard Helm, Ralph Johnson và John Vlissides. Mẫu thiết kế: Các yếu tố của phần mềm hướng đối tượng có thể tái sử dụng . Addison-Wesley, Reading, MA, 1994.
MVC luôn được đề cập và giới thiệu dưới dạng / trong lớp trình bày trong sách kiến trúc phần mềm.
Đọc những cuốn sách này:
Lưu trữ Giải pháp Microsoft.NET cho Doanh nghiệp (Microsoft báo chí)
Các mẫu giải pháp giải trí bằng Microsoft.NET (Microsoft nhấn)
Các mẫu kiến trúc ứng dụng doanh nghiệp (Addison Wesley)
Hướng dẫn Thực hành về Kiến trúc Doanh nghiệp (Prentice Hall)
Nếu bạn đặt mười kiến trúc sư phần mềm vào một phòng và để họ thảo luận về mô hình Model-View-Controller là gì, bạn sẽ có mười hai ý kiến khác nhau. … Một số người theo chủ nghĩa thuần túy ngoài kia chắc chắn sẽ phải e ngại với thứ mà tôi gọi là “MVC”. Hãy để lại một bình luận rực rỡ trên bảng tin ở cuối trang Web này. Tôi sẵn lòng giải thích các quan điểm khác nhau về ý nghĩa của MVC, nhưng hãy nhớ rằng tôi không quan tâm.
Josh Smith
Và theo Martin Fowler, chúng là kiến trúc GUI: Martin Fowler-GUI architecture
Nó phụ thuộc vào kích thước của ứng dụng, vì nó chỉ ảnh hưởng đến các lớp liên quan đến GUI, trong một lớp nhỏ (chủ yếu là GUI), nó có thể được coi là một mẫu kiến trúc trong khi ở một lớp lớn, nó sẽ chỉ là một mẫu thiết kế mà bạn áp dụng cho GUI mã (có thể là 10% mã ứng dụng).
MVC là mô hình kiến trúc. Được nêu rất rõ ràng và hiển thị tại http://molecularsciences.org/zend/mvc_model_view_controller