Có mẫu thiết kế nào ngoại trừ MVC cho web không?


15

Tôi muốn biết có bất kỳ mẫu thiết kế nào cho web ngoài MVC không?

Tôi biết có các mẫu thiết kế như: Registry, Observer, Factory, ActiveRecord, ... và MVC một tập hợp các mẫu thiết kế và cấu trúc thư mục khác.

Có mẫu thiết kế nào như MVC là một tập hợp các mẫu thiết kế khác không?

Chỉnh sửa: ngôn ngữ lập trình của tôi là PHP.


Luôn có mẫu BBOM .
zzzzBov

1
@ Mr-Moqadam, xin vui lòng xem - meta.stackexchange.com/questions/5234/ mẹo
Yusubov

Tôi tin rằng các câu trả lời dưới đây trả lời tất cả các khía cạnh của câu hỏi của bạn. Bạn có thể chấp nhận điều tốt nhất và giúp đỡ cộng đồng.
Arpith

Những gì về mô hình Flux của FB.
Muhammad Umer

Câu trả lời:


25

Có các mô hình khác nhau trong phát triển phần mềm; MVP, MVVM, MVC, v.v ... là một số trong những cái nổi tiếng. Tuy nhiên, bạn phải xác định vấn đề hoặc công nghệ cụ thể mà bạn đang có ý định giải quyết hoặc sử dụng.

nhập mô tả hình ảnh ở đây

Mỗi mô hình này là tốt để giải quyết một số vấn đề cụ thể. Ví dụ, mẫu MVP (Model View Presenter) giúp giới thiệu sự phân tách các mối quan tâm trong phát triển ASP.NET WebForms. Nó bao gồm phân chia trách nhiệm thu thập, hiển thị và lưu trữ dữ liệu từ một trang web thành các đối tượng riêng biệt: một đối tượng Model, một đối tượng View và một đối tượng Presenter.

Sách dạy nấu ăn chung nổi tiếng nhất về các mẫu thiết kế là các mẫu thiết kế Gang of Four (GoF) .

nhập mô tả hình ảnh ở đây

Chỉnh sửa: tôi cho rằng bạn quan tâm hơn đến việc triển khai các mẫu thiết kế trên nền tảng .NET


1
+1 chúng ta sẽ sống với MVC được định nghĩa là một mẫu hoặc một kỹ thuật sẽ sớm thấy hoặc gần nhìn thấy nó thành công?
Độc lập

6
+1 nhưng MVP, MVVM và MVC đều là các biến thể của cùng một chủ đề: tách (g) ui khỏi logic mô hình và có một số bên thứ ba (bộ điều khiển, người trình bày) làm trung gian giữa chúng.
Marjan Venema

2
@ Mr-Moqadam: MVC lúc đầu trông có vẻ quá mức và phức tạp. Nó làm những gì bạn nên làm, tách UI, logic và dữ liệu. Điều duy nhất chắc chắn trong phát triển phần mềm là sự thay đổi. Và như một quy tắc của ngón tay cái; 20% là phát triển, 80% là duy trì. Từ quan điểm đó, MVC chắc chắn là giá trị nỗ lực. Đó cũng là mô hình cơ bản nhất để đạt được điều này, tôi đoán vậy.
Bruno Schäpper

3
@ Mr-Moqadam: Không, nó giúp bạn rất nhiều, ngay cả khi bạn ở một mình. Và đặc biệt trong các dự án lớn.
Bruno Schäpper

1
@ Mr-Moqadam Ai đã từng nói rằng MVC là một mô hình phát triển nhóm? Tôi đã phát triển trong một thời gian dài sử dụng PHP và MVC là bắt buộc đối với tôi để duy trì mọi thứ. Bạn đã thử sử dụng bất kỳ khung công tác PHP nào chưa?
Songo

7

Một mô hình đẹp, mà tôi đã đi qua một vài tuần trước, là M CHUYỂN . Nó trông phức tạp hơn một chút như MVC, nhưng dựa trên cùng một nguyên tắc. Một nhược điểm của MVC là bộ điều khiển của bạn có thể thực sự rất lớn. Sử dụng mẫu MOVE, bạn sẽ xử lý vấn đề này một chút.

Các mẫu khác, được đặt tên bởi những người khác, cũng là lựa chọn thay thế tốt.


Tôi nghĩ rằng MVC được quảng bá bằng Bộ điều khiển mỏng?! Bạn biết câu nói "Người điều khiển mỏng & Người mẫu
mập

Nó cũng vậy, nhưng trong thực tế, bộ điều khiển có xu hướng trở nên khá béo.
Jan_V

2
Đó là bởi vì bạn đưa logic miền vào các bộ điều khiển, đó không phải là ý định của loại MVC gốc của Krassner & Pope. Bộ điều khiển theo kiểu gốc là về xử lý đầu vào, ví dụ. kết nối các lần nhấp chuột trên (X, Y) phối hợp thành một hoạt động mô hình (như, tăng nhiệt độ trong ứng dụng điều chỉnh nhiệt). Điều đó nói rằng, hầu hết các lớp trình điều khiển theo nghĩa MVC là hoàn toàn tự động, và do đó, vô hình đối với nhà phát triển ứng dụng trong một khung.
Aadaam

là M CHUYỂN như thông lượng
Muhammad Umer

4

Điều đầu tiên để thiết lập là chính xác những gì bạn cần làm, để quyết định liệu một khung và / hoặc MVC (hoặc mẫu thiết kế khác) sẽ có ích hay không.

Các khung có sẵn để cung cấp một nền tảng nhất quán để phát triển trong khi thường cung cấp các giải pháp cho các yêu cầu lập trình phổ biến (như tương tác cơ sở dữ liệu, tạo biểu mẫu và xác thực, xác thực người dùng, v.v.)

Đối với PHP ít nhất là mẫu thiết kế MVC / HMVC có xu hướng chi phối các khung chính có sẵn (ví dụ: Zend , CakePHP , CodeIgniter , v.v.) nhưng có nhiều mẫu thiết kế khác nhau mà người ta có thể sử dụng.

MVC rất phổ biến vì nó cung cấp một cách thức được thiết lập và hiểu rõ để tách mô hình dữ liệu và xử lý logic khỏi lớp xem / trình bày (một thứ được coi là mong muốn để tạo ra các ứng dụng mạnh mẽ, có thể mở rộng).

Điều quan trọng cần lưu ý (và như đã được @Marjan Venema thể hiện trong một bình luận cho câu trả lời của @ ElYusubov) rằng MVC, MVP, MVVM và các mẫu MV x khác (ít nhất là chính) đều là 'mẫu thiết kế'.

Thông thường các mẫu thiết kế khác nhau đều phục vụ (thường là tinh tế) các mục đích khác nhau và trong một số trường hợp được phát triển với một ngôn ngữ cụ thể. Tuy nhiên, một "mẫu thiết kế" thực sự không phải là một quy tắc khó và nhanh để lập trình và thực sự là một sự hiểu biết triết học / ý tưởng về việc thực hiện chương trình và các yêu cầu thiết kế và (các) chức năng logic.

Nghiên cứu là cách tốt nhất để tìm hiểu về các nguyên tắc lập trình khác nhau và các thực tiễn tốt nhất, đây là một số liên kết Wikipedia để giúp bạn bắt đầu:

Trong thực tế, không có gì ngăn cản bạn thực hiện 'mẫu' của riêng bạn, IMO cách tốt nhất là học bằng cách thực hiện, đối với tôi ít nhất tôi đã không hiểu đầy đủ về mẫu MVC cho đến khi tôi bắt đầu thử viết một trang web bằng cách sử dụng nó.

Khi bạn hiểu một số khái niệm lập trình và thực tiễn tốt nhất, bạn có thể sử dụng chúng để xây dựng hệ thống của riêng mình để giải quyết các vấn đề cụ thể mà bạn gặp phải và để đáp ứng nhu cầu của bạn, liệu nó có phù hợp với "mẫu" đã thiết lập hay không.

Nếu bạn không có bộ vấn đề cụ thể nào cần giải quyết thì học một trong những khuôn khổ chung là cách tốt nhất của bạn.


3

Một trong những ví dụ nổi tiếng nhất là Knockout.js , một khung javascript sử dụng mẫu thiết kế MVVM . Có một bài viết tuyệt vời ở đây về chồng tràn so sánh khung MVC Backbone.js vs Knockout.js .

Một sidenote là mẫu thiết kế MVVM có nguồn gốc từ Microsoft như là một chuyên môn của mẫu thiết kế PM của Martin Fowler. MVVM được sử dụng rộng rãi bởi các ứng dụng WPF.


không tìm thấy trang!
Muhammad Umer

1
@MuhammadUmer Cảm ơn, tôi đã cập nhật liên kết. Thật không may, StackOverflow đã xóa hơn 1000 câu hỏi. May mắn thay, máy wayback không có một hệ thống kiểm duyệt nghiêm ngặt.
dodgy_coder

Không ngạc nhiên chút nào ... tôi hy vọng tất cả các trang web se cũng như thế này.
Muhammad Umer

0

Như ElYusubov đã chỉ ra, khung công tác ASP.Net từ lâu đã có các mẫu MVP và MVVM, nếu bạn đang tìm kiếm các ví dụ tương đối chính thống. Một trong những khác biệt chính giữa MVC và MVVM là cách các thực thể của bạn được cập nhật; MVC phù hợp hơn với cách tiếp cận không trạng thái truyền thống hoặc bán không trạng thái của các ứng dụng web. Khung công tác ASP.Net đã cố gắng khắc phục điều này bằng cách giữ trạng thái của bạn được nhúng trong một biểu mẫu (để nó có thể được khôi phục theo từng yêu cầu), điều này làm cho các mẫu MVP và MVVM có ý nghĩa hơn ở đó.

Với HTML5, các ứng dụng ngày càng trở nên nặng về JavaScript, với phần lớn trạng thái của chúng là trên máy khách. Điều này có thể dẫn đến sự hồi sinh trong các khung công tác MVVM và Knockout JS là một ví dụ.


0

Hầu hết các mẫu trong tự nhiên là MVC hoặc một số hương vị của MVC. Sau tất cả, sẽ hợp lý khi phân tách dữ liệu của bạn (Model), biểu diễn (Chế độ xem) và tương tác với nó (Bộ điều khiển). Nếu bạn có một cái nhìn về MVC khi nó được thành lập vào những năm 80, bạn sẽ thấy rằng nó không bao giờ có nghĩa là một khung web. Vì vậy, tôi tìm thấy nó là quá tải trên web.

Một mô hình nổi tiếng khác sẽ là Kiến trúc hướng dịch vụ (SOA). Được xây dựng trên đó, một cách tiếp cận hiện đại sẽ là có một MVC (hoặc hương vị) trên máy chủ của bạn, chỉ để lộ một dịch vụ mà bạn có thể làm việc với. Về phía khách hàng sẽ có một ứng dụng theo kiểu MVC khác, ví dụ như một ứng dụng web hỗ trợ HTML5 và JavaScript (ví dụ Twitter hoặc Linked In). Ứng dụng khách sẽ sử dụng dịch vụ phía máy chủ của bạn ("Chế độ xem" của máy chủ) làm Mô hình. IMHO, đây sẽ là công nghệ tiên tiến và có lẽ sẽ đẩy phía máy chủ chỉ MVC sang một bên.


0

Cá nhân tôi đang xem xét triển khai một cái gì đó sử dụng ý tưởng về Đại diện phương thức tài nguyên , mặc dù ở giai đoạn này, nó chủ yếu chỉ là một thử nghiệm hơn bất kỳ thứ gì khác. Nó có một số điểm hấp dẫn ở chỗ nó mô hình hóa yêu cầu / phản hồi HTTP tốt hơn MVC (có nghĩa là cho các ứng dụng tồn tại lâu chạy trên một máy tính, trái ngược với các phiên yêu cầu / phản hồi ngắn hạn). Tuy nhiên, có một nhược điểm là nếu bạn đặt các phương thức trong tài nguyên của mình để xử lý GET, POST, PUT, DELETE, v.v., thì tài nguyên của bạn sẽ được ghép vào giao diện người dùng. Tôi nghĩ rằng tôi sẽ tách nó ra thành một lớp khác.


0

Có hơn 1000 cách ngoại trừ MVC, một số trong số chúng tương tự với MVC và một số hoàn toàn khác nhau

ví dụ :

  1. Mô hình-Mẫu-Xem - MTV
  2. Người mẫu xem chương trình Người dẫn chương trình - MVP
  3. Mô hình phân cấp Chế độ xem bộ điều khiển mạng từ xa
  4. Chế độ xem mô hình ViewModel- MVVM

Vân vân


1
điều này dường như không cung cấp bất cứ điều gì đáng kể qua các điểm được thực hiện và giải thích trong 7 câu trả lời trước
gnat

Tôi nghĩ đây là câu hỏi đơn giản nhất.
Saurabh Chandra Patel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.