Что такое MVC в контексте бэкэнда? - PullRequest
1 голос
/ 15 марта 2019

MVC во внешнем интерфейсе имеет смысл. Но зачем нам нужен MVC и в бэкэнде? Где «вид» в данном случае, данный бэкэнд не предоставляет ничего визуального.

Ответы [ 2 ]

1 голос
/ 16 марта 2019

MVC - это разделение задач в приложениях, которые принимают пользовательский ввод, выполняют бизнес-логику и выводят результаты. Здесь не сказано, где находится эта логика. Он также не указывает, что вся логика должна жить в одном процессе.

Довольно традиционное использование MVC с электронной таблицей. Давайте рассмотрим как приложение с одним процессом, так и приложение с несколькими процессами, чтобы увидеть, как они могут реализовать эту простую электронную таблицу:

     A     B       C
   ----- ----- ---------
1 |  1     2    =A1+B1

Допустим, пользователь вводит число 4 в ячейку A1. Что происходит?

ПРИМЕНЕНИЕ В ОДНОМ ПРОЦЕССЕ (например, Microsoft Excel): пользовательский ввод обрабатывается логикой представления вплоть до тех пор, пока пользователь не покинет ячейку. Как только это происходит, контроллер получает сообщение, чтобы обновить модель новым значением. Модель принимает новое значение, но также запускает некоторую бизнес-логику для обновления значений других ячеек, затронутых изменением. После завершения модель уведомляет представление о том, что ее состояние изменилось, и представление отображает новое состояние. Это уведомление может происходить через pub / sub, как предполагает @ jaco0646, но оно также может быть обработано с помощью обратного вызова.

МНОГОПРОЦЕССНОЕ ПРИМЕНЕНИЕ (например, Google Sheets): пользовательский ввод обрабатывается логикой представления (в клиенте) до тех пор, пока пользователь не покинет ячейку. Как только это происходит, контроллер (на сервере) получает сообщение (через HTTP или сокет), чтобы обновить модель (также на сервере) новым значением. Модель принимает новое значение, но также запускает некоторую бизнес-логику для обновления значений других ячеек, затронутых изменением. После завершения модель уведомляет представление о том, что ее состояние изменилось, и представление отображает новое состояние (в клиенте). Это уведомление может быть получено через HTTP-ответ контроллера или через сокет.

Другими словами, шаблон MVC применим к обоим сценариям.

Кроме того, также совершенно справедливо рассматривать клиент и сервер как два совершенно отдельных приложения, каждое из которых может реализовывать MVC. В этом сценарии и модель клиента, и представление сервера менее традиционны. Модель клиента, вероятно, выполняет запросы AJAX к серверу, в отличие от запуска самой сложной бизнес-логики или локального сохранения данных. Кроме того, представление сервера, скорее всего, представляет собой сериализатор, который создает некоторую форму структурированного вывода, понятного клиенту, например JSON, XML или даже CSV.

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

0 голосов
/ 16 марта 2019

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

  • Модель - это структура данных, которая содержит бизнес-данные и является переносится с одного слоя на другой.

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

  • Контроллер выступает в качестве посредника и отвечает за принятие запрос от пользователя, изменить модель (если требуется) и преобразовать ее в вид.

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

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

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

Spring MVC является хорошим примером серверной инфраструктуры MVC.

На диаграмме ниже показано, как все три компонента существуют только на стороне сервера (внутри контейнера приложения). Взято из официального блога * только 1039 *.

enter image description here

...