Если в разработке программного обеспечения есть какие-либо проблемы, то их шаблон проектирования является основным решением для их устранения. Они похожи на заранее определенные чертежи, которые мы используем для решения задач объектно-ориентированного проектирования в вашем проекте. Сначала он выясняет, в чем проблема, а затем устраняет ее, а также описывает процедуру и ее последствия. MVC и MVC2 - это два разных подхода к известному шаблону архитектуры MVC (Model View Controller).
MVC против MVC2
Разница между MVC и MVC2 заключается в том, что MVC - это модель разработки приложения, состоящая из трех взаимосвязанных частей, тогда как MVC2 представляет собой более сложный шаблон, в котором выполняется разделение состояния приложения и логики управления презентацией. MVC включает модель (данные), представление (пользовательский интерфейс) и контроллер (обрабатывает запрос). Основное различие между MVC и MVC2 - сложность. В веб-приложениях мира Java две общие модели проектирования (Модель 1 и Модель 2) тесно связаны с MVC и часто ошибочно называются MVC1 (или просто MVC) и MVC2.
MVC был подходом первого поколения в веб-приложениях Java, где страницы JavaServer Page (JSP) использовались для пользовательского интерфейса вместе с JavaBeans, которые могли инкапсулировать несколько объектов в один объект для реализации архитектуры MVC. Пользовательские запросы из браузера отправляются в JSP, который содержит логику контроллера и связывает модель для данных, которые будут обновлять представление и отправлять ответ обратно пользователю, который отображается в пользовательском интерфейсе. Этот подход сочетает в себе функции контроллера и представления на странице JSP и, следовательно, ломает парадигму MVC.
MVC2 был представлен Sun Microsystem org как шаблон проектирования, который не нарушает парадигму MVC, в отличие от MVC, где бизнес-логика была отделена от представлений, и все клиентские запросы обрабатывались в одном месте, а не в каждом файле JSP в MVC. В шаблоне MVC2 JSP заменяется сервлетами для логики контроллера.
Таблица сравнения между MVC и MVC2
Параметр сравнения | MVC | MVC2 |
Определение | В MVC за получение запросов и отправку ответов отвечает один компонент. | В MVC2 есть несколько компонентов для приема запросов и отправки ответов. то есть Контроллер и Просмотр. |
Навигация | В MVC каждый JSP имеет контроллер и логику представления, которая определяет навигацию по следующей странице представления, которая делает ее перераспределенной. | В MVC2 сервлет содержит логику навигации следующей страницы просмотра, что делает ее централизованной. |
Кропотливый | Требуется больше времени, чтобы написать код для разработки пользовательских тегов JSP, чтобы избежать тега скриптлета. | Занимает меньше времени на разработку, поскольку все управление навигацией централизовано. |
Независимость | Бизнес-логика и логика представления объединены в JSP, поэтому веб-дизайнеры и веб-разработчики не могут работать одновременно. | Поскольку в нем есть разделение между логикой и представлением, дизайнер и разработчик могут работать вместе. |
Повторное использование | Его сложнее повторно использовать и расширять из-за тесной связи между логикой и представлением. | Его легко повторно использовать и расширять, что подходит для более крупных приложений. |
Что такое MVC?
MVC - это шаблон архитектурного проектирования для повторяющихся проблем проектирования программного обеспечения, который дает высокоуровневый подход к описанию решения. Архитектура MVC состоит из трех модулей: модели, представления и контроллера.
Модель: Он представляет состояние данных (которые отображаются пользователю на странице просмотра).
Вид: Модуль просмотра - это пользовательский интерфейс, через который пользователь выполняет действие и внутренне общается с сервером.
Контроллер: Модуль контроллера обрабатывает пользовательский запрос, бизнес-логику и с помощью модели манипулирует данными, которые отображаются в пользовательском интерфейсе.
MVC начинается с того, что JSP принимает клиентский запрос, который работает вместе с JavaBeans для логики обработки данных, которая отправляется клиенту. Задание делится между JavaBeans и JSP, где JSP вызывает JavaBeans и бизнес-логику, в которой JavaBeans внутренне вызывает базу данных для сохранения / получения данных. В конце JSP отправляет ответ клиенту, который обновляет представление в браузере.
JavaBeans, которые также называются Beans, отвечают за инкапсуляцию нескольких объектов в один объект, в то время как JSP имеет как логику контроллера, так и логику представления. MVC также называют ориентированным на страницы из-за его прямого доступа к другой странице просмотра, которая идеально подходит для небольших приложений.
Что такое MVC2?
Большинство разработчиков программного обеспечения думают, что MVC2 - это улучшенная версия MVC, например версия 2.0; это не так. Модель 1 и Модель 2 разрабатывались одновременно и представляют собой два варианта того, как все должно быть сделано.
MVC2 - это более сложный шаблон, в котором выполняется разделение состояния приложения и логики управления презентацией. У него есть контроллер, в котором написана логика для обработки всех входящих запросов и необходимых действий, которые необходимо предпринять, таких как переход на другую страницу просмотра или обновление состояния модели.
Здесь, в MVC2, сервлет действует как уровень контроллера, который также является интерфейсом между уровнем представления и уровнем модели, где он получает запрос от клиента или пользовательского интерфейса, который представляет собой не что иное, как уровень представления, и обрабатывает их с соответствующей проверкой, если это необходимо. JSP имеет логику представления, которая внутренне использует Beans, поэтому, если сервлеты обновляют состояние модели, это отражается на странице представления.
В отличие от MVC, JSP в MVC2 не имеет одновременно контроллеров и логики представления; его единственная ответственность - получить обновленное состояние модели из этого сервлета для отображения на странице просмотра.
Основные различия между MVC и MVC2
Мы часто путаем MVC2 с версией MVC 2.0, однако это не так, это модели проектирования Java, в которых архитектура MVC2 более сложна и лучше всего подходит для более крупных приложений.
Различия между отношениями MVC и MVC2 можно резюмировать по следующим причинам:
- В MVC один компонент отвечает за получение запросов и отправку ответов, но в MVC2 есть несколько компонентов для приема запросов и отправки ответов. то есть Контроллер и Просмотр.
- MVC1 тесно связывает логику представления с бизнес-логикой, но MVC 2 изолирует или отделяет логику представления от бизнес-логики.
- В MVC бизнес-логика и представление. Логика объединена в JSP, поэтому веб-дизайнеры и веб-разработчики не могут работать одновременно, но в MVC2 есть разделение между логикой и представлением, поэтому дизайнер и разработчик могут работать вместе.
- В MVC 1 контроллер и модель оба являются JSP или, можно сказать, написаны на одном и том же JSP. Но в MVC2 контроллер - это сервлет, а модель - это класс Java.
- MVC не поддерживает повторное использование компонентов приложения, тогда как MVC2 поддерживает повторное использование компонентов, что хорошо для больших и более сложных приложений.
Вывод
Как мы видели, разница между MVC и MVC2 толстой линией, несмотря на то, что они имеют похожие имена, но оба они используются в качестве решений для повторяющихся проблем проектирования системы.
MVC2 более сложен и имеет разделение задач, которое используется для более крупных приложений или интуитивно понятного взаимодействия с пользователем из-за его централизованной функции, когда все запросы обрабатываются одним контроллером. В отличие от MVC, где текущий JSP определяет следующую открываемую страницу просмотра.
MVC2 отделяет страницы просмотра от контроллеров, в отличие от MVC, который объединяет бизнес-логику и логику просмотра в JSP. Следовательно, MVC2 легче поддерживать для нескольких пользователей из-за его возможности многократного использования и расширения, а также он способен поддерживать более сложную систему в режиме реального времени, например Facebook, Instagram.
использованная литература
- https://www.scientific.net/AMM.198-199.537
- https://ieeexplore.ieee.org/abstract/document/777091/
- https://academic.oup.com/jpp/article-abstract/64/3/397/6135294