Какие другие MVC-подобные шаблоны проектирования / архитектуры существуют для очень гибких приложений? - PullRequest
3 голосов
/ 11 июля 2009

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

Например, некоторые приложения Google, такие как GMail, или даже браузер, такой как Firefox.

Он состоит из компонентов, которые могут быть расширены и полностью заменены. Пользователи могут выбрать пользовательский интерфейс или тему, которая им нравится, имеет какую-то систему плагинов и т. Д. И т. Д. ...

Owkay Я знаю, это то, как большие / большие приложения создаются. Вот почему я задаю этот вопрос.

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

Ответы [ 3 ]

5 голосов
/ 11 июля 2009

Полагаю, вы говорите об архитектуре программного обеспечения (в отличие от аппаратной или системной архитектуры).

Возможно, самое важное правило (я бы не назвал это шаблоном) - это разделение интересов. Это означает, что один компонент должен обрабатывать только одну задачу, только эту задачу и завершенную задачу. Если вы придерживаетесь этого (что сложнее, чем кажется). У вас будет основание для упомянутой вами возможности подключения, например, Обмен пользовательского интерфейса. Если ваш UI-слой действительно использует только UI, его можно заменить чем-то совершенно другим.

Если вы действительно говорите по-крупному, как упомянутое GMail, концепция «в конечном итоге непротиворечива» становится важной. Классические приложения структурированы таким образом, что пользователь выполняет действие, скажем, нажатием кнопки. Приложение обрабатывает это действие (например, сохраняет данные из формы в базе данных). И обновляет графический интерфейс, когда это сделано (например, замена кнопки «Сохранить» на кнопку редактирования. Преимущество этой линейной обработки заключается в том, что пользователь всегда видит согласованное состояние. Если он оборачивается и просматривает базу данных, он найдет свою данные прямо там. Но это не очень хорошо, когда у вас очень высокая нагрузка на систему, потому что оптимальная база данных для сохранения в большинстве случаев не является идеальной базой данных для поиска. Поэтому некоторые приложения делают что-то вроде этого: Когда пользователь нажимает кнопку «Сохранить», данные сохраняются максимально быстрым способом (например, база данных оптимизирована для обновлений), задается маркер для дальнейшей обработки и обновляется графический интерфейс. Теперь для обработки сохраненных данных требуется отдельный процесс. Например, путем обновления специальных индексов или сохранения их в отдельной базе данных, оптимизированной для поиска. Этот второй процесс может собирать изменения для многих действий с целью повышения производительности.

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

Редактировать: я забыл о ресурсах. Великие книги об архитектуре приложений: Мартин Фаулерс «Шаблоны архитектуры корпоративных приложений». Для шаблонов в целом, конечно: «Шаблоны проектирования» для шаблонов, связанных с архитектурой обмена сообщениями »http://www.amazon.de/s/ref=nb_ss_eb?__mk_de_DE=%C5M%C5Z%D5%D1&url=search-alias%3Denglish-books&field-keywords=Enterprise+Integration&x=0&y=0'. Я не могу рекомендовать какие-либо книги по масштабируемости, но мне порекомендовали« Создание масштабируемых веб-сайтов ». Архитектура различных больших приложений (например, Twitter) - это тема для разговоров, презентаций и статей, поэтому вы получите много ресурсов, когда будете google> Architecture Twitter <. </p>

2 голосов
/ 11 июля 2009

Model View Presenter (MVP), его часто путают с MVC, но я нахожу его гораздо более гибким, хотя он может выиграть от дополнительного компонента контроллера. Я не могу сказать вам, является ли это более выгодным в крупномасштабных приложениях, но это определенно MVC-подобный шаблон. Существуют и другие варианты MVC, такие как Model View ViewModel (MVVM), но этот вариант более специфичен для WPF Microsoft.

0 голосов
/ 19 января 2012

посмотрите, поможет ли каталог Мартина Фаулера

...