MVCS - служба контроллера представления модели - PullRequest
63 голосов
/ 18 апреля 2011

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

Идея MVCS состоит в том, чтобы иметь Уровень обслуживания между контроллером и моделью , чтобы инкапсулировать всю бизнес-логику, которая может быть в контроллере. Таким образом, контроллеры предназначены для пересылки и управления выполнением. И вы можете вызывать Сервис во многих контроллерах (например, веб-сайте и веб-сервисе), не дублируя код.

Ответы [ 2 ]

78 голосов
/ 02 июня 2011

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

Например, вы уровеньполная система может выглядеть следующим образом:

  1. Уровень просмотра: ваш MVC-фреймворк и код выбора
  2. Уровень обслуживания: ваш контроллер будет вызывать объекты этого уровня для получения или обновления моделей, илидругие запросы.
  3. Объекты доступа к данным: это абстракции, которые ваш сервисный уровень будет вызывать для получения / обновления необходимых ему данных.Этот уровень обычно вызывает либо базу данных, либо какую-либо другую систему (например, сервер LDAP, веб-службу или базу данных типа NoSql)

Тогда уровень обслуживания будет отвечать за:

  • Получение и создание вашей 'Модели' из различных источников данных (или объектов доступа к данным).
  • Обновление значений в различных репозиториях / ресурсах.
  • Выполнение логики и манипуляций, специфичных для приложения, и т. Д..

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

12 голосов
/ 25 ноября 2016

Я сам думал об этом паттерне, не видя никакой ссылки на него где-либо еще, и искал в Google и нашел здесь Ваш вопрос:)

Даже сегодня мало кто говорит или публикует о

Шаблон обслуживания View-Controller.

enter image description here

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

В настоящее время я использую его в проекте, над которым я сейчас работаю.

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

enter image description here

Уровень служб является «соединителем», «посредником», «контроллером на стороне сервера» в том смысле, что контроллер на стороне «клиента» делает для клиента, а «служба» - для сервера.

Другими словами, «Контроллер» на стороне клиента только «общается» с «Сервисом», также называемым Контроллером на стороне сервера.

Контроллер ---> Запросы и получение от <----- сервисного уровня </p>

Сервисный уровень выбирает или предоставляет информацию слоям на стороне сервера, которые в ней нуждаются.

Сама по себе Служба не делает ничего, кроме как соединяет уровни сервера с тем, что им нужно.

Вот пример кода:

enter image description here

...