Почему в некоторых системах логический уровень называется «Модель», а в некоторых - «Сервис». Отличаются ли они друг от друга или просто отличаются по именным соглашениям?
ОБНОВЛЕНИЕ 1
Причина, по которой я спрашиваю, заключается в том, что в Zend Framework, классической среде MVC, все используют концепцию Model. Сейчас я изучаю AngularJS, и кажется, что слово Model исчезло и было заменено словом service.
Что я заметил, так это то, что сервис больше похож на одноэлементный, который можно использовать снова и снова (например, клиент REST), тогда как модель больше связана с манипуляциями с данными, поступающими от контроллера в паттерне MVC.
Ответы:
Модель: поля, принадлежащие объекту, методы, помогающие получить / установить данные из объекта (метод доступа к полному имени, который возвращает имя + фамилию)
Сервис: методы для выполнения операций с одной или несколькими моделями, см. «Единицу работы», транзакции и т. Д.
Employee :: create должен просто взять набор данных, выполнить проверку модели при необходимости и вернуть объект Employee.
EmployeeService :: hireEmployee может создать сотрудника, отправить ему приветственное письмо, создать почтовый ящик, сделать сэндвич и т. Д. ... он может вернуть набор данных или код результата и т. Д. ...
Это также может повлиять на проверку:
Проверка модели: сотрудник должен иметь идентификатор, имя, фамилию и день рождения.
Проверка работоспособности: сотрудникам на должность бармена должно быть не менее 21 года, и они должны быть одобрены менеджером.
источник
Согласно моему опыту, уровень модели в шаблоне проектирования MVC относится к каждому программному компоненту, связанному с манипулированием данными (POJO, DAO, вплоть до SQL, JDBC и т. Д.).
Принимая во внимание, что уровень обслуживания фактически является дополнением к MVC:
Мы знаем, что компоненты слоя Model вызываются внутри слоя Controller . После того, как последний собран, вы начинаете понимать, что он не выглядит кратким (грязный с грязным кодом); Контроллер может не предоставить дополнительную информацию (например, форматирование параметров запроса перед вызовом метода DAO, который собирается их использовать ...). Поэтому вы можете включить этот дополнительный уровень, а именно уровень сервиса .
В конце концов, вы можете включить ваш грязный код в статические методы со значимым именем, параметрами и т. Д., Что приведет к синтетическому уровню контроллера.
Взгляните на эту ссылку:
/programming/2762978/the-purpose-of-a-service-layer-and-asp-net-mvc-2
источник
Структурно эти базовые классы одинаковы, однако они используются для классификации различных задач уровней Service и Model реализации MVCS
Итак, хотя базовые классы похожи, конкретные классы, созданные путем расширения этих базовых классов, служат двум совершенно различным целям.
источник