Есть ли шаблон дизайна, кроме MVC для веб-сайтов?

15

Я хочу знать, есть ли шаблоны дизайна для веб-сайтов, кроме MVC?

Я знаю, что существуют шаблоны проектирования: Registry, Observer, Factory, ActiveRecord, ... и MVC - набор других шаблонов проектирования и структура папок.

Существует ли шаблон проектирования, например, MVC - это набор других шаблонов проектирования?

Изменить: мой язык программирования PHP.

Саид М.
источник
Там всегда шаблон BBOM .
zzzzBov
1
@ Mr-Moqadam, пожалуйста, посмотрите - meta.stackexchange.com/questions/5234/…
Юсубов
Я считаю, что ответы ниже отвечают на все аспекты вашего вопроса. Вы можете принять лучшее и помочь сообществу.
Арфит
А как насчет потока ФБ.
Мухаммед Умер
Смотрите View First тоже.
Nawfal

Ответы:

25

Существуют разные модели в разработке программного обеспечения; MVP, MVVM, MVC и т. Д. Являются одними из известных. Однако вам необходимо определить конкретную проблему или технологию, которую вы собираетесь решить или использовать.

введите описание изображения здесь

Каждый из этих шаблонов хорош для решения определенных проблем. Например, шаблон MVP (Model View Presenter) помогает ввести разделение интересов при разработке ASP.NET WebForms. Он состоит из разделения обязанностей по сбору, отображению и хранению данных с веб-страницы на отдельные объекты: объект Model, объект View и объект Presenter.

Самая известная общая кулинарная книга шаблонов дизайна - это шаблоны дизайна Gang of Four (GoF) .

введите описание изображения здесь

Изменить: я полагаю, что вы больше заинтересованы в реализации шаблонов проектирования на платформе .NET

Юсубы
источник
1
+1 мы будем жить с MVC, определенным как шаблон, или техникой, которая скоро увидит или скоро увидит его преемника?
Независимо
6
+1, но MVP, MVVM и MVC являются вариациями одной и той же темы: отделение (g) пользовательского интерфейса от логики модели и наличие посредника между ними (контролером, презентатором).
Марьян Венема
2
@ Mr-Moqadam: MVC на первый взгляд кажется излишним и сложным. Он делает то, что должен делать, разделяя пользовательский интерфейс, логику и данные. Единственная вещь, которая уверена в разработке программного обеспечения - это изменения. И, как правило, 20% - разработка, 80% - поддержка. С этой точки зрения MVC, безусловно, стоит усилий. Я полагаю, это также самый базовый шаблон для достижения этой цели.
Бруно Шеппер
3
@ Mr-Moqadam: Нет, это вам очень помогает, даже если вы один. И особенно в крупных проектах.
Бруно Шеппер
1
@ Mr-Moqadam Кто нибудь говорил, что MVC - это шаблон развития команды? Я долгое время занимался разработкой с использованием PHP, и MVC является обязательным для меня, чтобы поддерживать работоспособность. Вы пытались использовать какие-либо фреймворки PHP?
Сонго
7

Хорошая модель, с которой я столкнулся несколько недель назад, это MOVE . Он выглядит немного сложнее, чем MVC, но основан на том же принципе. Одним из недостатков MVC является то, что ваши контроллеры могут стать действительно очень большими. Используя шаблон MOVE, вы немного справитесь с этой проблемой.

Другие модели, названные другими, также являются хорошими альтернативами.

Jan_V
источник
Я думал, что MVC продвигается с использованием тонких контроллеров ?! Вам известна поговорка «Тонкие контроллеры и жирные модели»
Сонго
Так оно и есть, но в реальности контроллеры имеют тенденцию становиться довольно толстыми.
Jan_V
2
Это потому, что вы помещаете логику домена в контроллеры, что не было целью оригинального MVC типа Krassner & Pope. Контроллеры в оригинальной манере касаются обработки ввода, например. соединение щелчков мышью по координатам (X, Y) в операции модели (например, повышение температуры в приложении термостата). Тем не менее, большая часть уровня контроллера в смысле MVC полностью автоматизирована и, следовательно, невидима для разработчика приложения в среде.
Аадам
это движение, как поток
Мухаммед Умер
4

Первое, что нужно установить, это то, что именно вам нужно сделать, чтобы решить, будет ли полезен фреймворк и / или MVC (или другой шаблон проектирования).

Фреймворки призваны обеспечить согласованную платформу для разработки, в то же время обычно предлагая решения для общих требований программирования (таких как взаимодействие с базой данных, создание и проверка форм, аутентификация пользователей и т. Д.)

Для PHP, по крайней мере, шаблон проектирования MVC / HMVC имеет тенденцию доминировать над доступными основными средами (например, Zend , CakePHP , CodeIgniter и т. Д.), Но есть много различных шаблонов проектирования, которые можно использовать.

MVC настолько популярен, потому что он предлагает установленный и понятный способ отделения логики моделирования и обработки данных от уровня представления / представления (то, что считается желательным для создания надежных, масштабируемых приложений).

Важно отметить (и, как было сказано @Marjan Venema в комментарии к ответу @ ElYusubov), MVC, MVP, MVVM и другие шаблоны MV x (по крайней мере, в принципе) являются одним и тем же «шаблоном проектирования».

Обычно разные шаблоны проектирования служат (часто незаметно) различным целям и в некоторых случаях были разработаны с учетом конкретного языка. Однако истинный «шаблон проектирования» не является жестким и быстрым правилом программирования и в действительности представляет собой скорее философское / идеологическое понимание требований к реализации программ, требований к дизайну и логических функций.

Исследование - лучший способ узнать о различных принципах программирования и передовых практиках, вот несколько ссылок на Википедию, с которых можно начать:

На практике ничто не мешает вам реализовать свой собственный «шаблон», IMO - лучший способ учиться на практике, по крайней мере, для меня я не до конца понимал шаблон MVC, пока не начал пытаться написать веб-сайт, используя его.

Как только вы поймете некоторые концепции программирования и лучшие практики, вы сможете использовать их для построения своей собственной системы для решения конкретных проблем, с которыми вы сталкиваетесь, и удовлетворения ваших потребностей, независимо от того, соответствует ли это установленному «шаблону» или нет.

Если у вас нет конкретного набора проблем, которые нужно решить, то лучше всего изучить одну из общих систем.

Крис
источник
3

Одним из наиболее известных примеров является Knockout.js, который представляет собой инфраструктуру javascript, использующую шаблон проектирования MVVM . Здесь есть отличная статья о переполнении стека, сравнивающая инфраструктуру MVC Backbone.js против Knockout.js .

Суть в том, что шаблон проектирования MVVM возник из Microsoft как специализация шаблона проектирования PM Мартина Фаулера. MVVM широко используется в приложениях WPF.

dodgy_coder
источник
Страница не найдена!
Мухаммед Умер
1
@MuhammadUmer Спасибо, я обновил ссылку. К сожалению, StackOverflow удалил этот более 1000 пунктов вопроса. К счастью, машина обратного хода не имеет строгой системы модерации.
dodgy_coder
Ничего удивительного ... я ожидаю, что все сайты будут такими же.
Мухаммед Умер
0

Как отметил ЭльЮсубов, среда ASP.Net уже давно имеет шаблоны MVP и MVVM, если вы ищете сравнительно распространенные примеры. Одно из основных различий между MVC и MVVM заключается в том, как обновляются ваши сущности; MVC лучше подходит для традиционного подхода к веб-приложениям без состояния или без состояния. Платформа ASP.Net пыталась обойти это, сохраняя ваше состояние встроенным в форму (чтобы его можно было восстанавливать при каждом запросе), что сделало шаблоны MVP и MVVM более понятными.

С HTML5 приложения становятся все более и более насыщенными JavaScript, причем большая часть их состояния находится на клиенте. Это может привести к возрождению в средах MVVM, и Knockout JS является одним из примеров.

Даниэль Б
источник
0

Большинство паттернов в дикой природе - это MVC или какой-то другой вид MVC. Ведь имеет смысл разделить ваши данные (Model), представление (View) и взаимодействие с ним (Controller). Если вы посмотрите на MVC, как он был основан в 80-х годах, вы обнаружите, что он никогда не был веб-фреймворком. Таким образом, я обнаружил, что в Интернете это сильно перегружено.

Другой хорошо известный шаблон - это сервис-ориентированная архитектура (SOA). Основанный на этом, современный подход будет иметь MVC (или разновидность) на вашем сервере, только чтобы предоставить сервис, с которым вы можете работать. На стороне клиента будет другое приложение в стиле MVC, например, веб-приложение на основе HTML5 и JavaScript (например, Twitter или Linked In). Клиентское приложение будет использовать вашу серверную службу («представление» сервера) в качестве своей модели. ИМХО, это было бы современно и, вероятно, оттолкнет серверную сторону только MVC в сторону.

Бруно Шеппер
источник
0

Я лично рассматриваю реализацию чего-то, что использует идею представления методов ресурсов , хотя на данном этапе это в большей степени просто эксперимент, чем все остальное. У него есть некоторые убедительные аргументы в том, что он моделирует HTTP-запрос / ответ лучше, чем MVC (который предназначен для долгоживущих приложений, работающих на одном компьютере, в отличие от кратковременных сеансов запросов / ответов). Однако у него есть недостаток, заключающийся в том, что если вы поместите в свои ресурсы методы для обработки GET, POST, PUT, DELETE и т. Д., То ваши ресурсы будут связаны с внешним интерфейсом. Я думаю, что я собираюсь разделить это на другой слой.

GordonM
источник
0

Существует более 1000 способов, кроме MVC, некоторые из них похожи на MVC, а некоторые полностью отличаются

например :

  1. Модель-Шаблон-Вид - MTV
  2. Модель – вид – ведущий - MVP
  3. Иерархическая модель - вид - контроллер HMVC
  4. Модель View ViewModel- MVVM

и т.д

Саурабх Чандра Патель
источник
1
кажется, это не дает ничего существенного по сравнению с замечаниями, сделанными и объясненными в предыдущих 7 ответах
комнат
это самый простой ответ на вопрос, я думаю.
Саурабх Чандра Патель