MVC: Яка різниця між моделлю та послугою?


15

Чому в деяких рамках логічний рівень називається "Модель", тоді як в деяких він називається "Сервіс". Чи відрізняються вони одна від одної чи просто відрізняються, називаючи конвенції?


ОНОВЛЕННЯ 1

Причина, про яку я питаю, полягає в тому, що в Zend Framework, класичній структурі MVC, всі використовують концепцію Model. Зараз я вивчаю AngularJS і, здається, слово Model зникло і його замінило слово word.

Що я помітив, це те, що служба більше нагадує синглтон, який можна повторно використовувати знову (наприклад: клієнт REST), тоді як модель більше пов'язана з маніпуляціями з даними, що надходять від контролера за схемою MVC.


Обмін дослідженнями допомагає всім. Розкажіть, що ви пробували і чому це не відповідало вашим потребам. Це свідчить про те, що ви знайшли час, щоб спробувати допомогти собі, це позбавляє нас від повторення очевидних відповідей, а найбільше це допомагає вам отримати більш конкретну та релевантну відповідь. Також дивіться Як просити
gnat

Якщо перефразовувати Шекспіра: троянда, яку називають, троянда за будь-яким іншим іменем - це все-таки троянда. Ваша модель програми цілком може бути реалізована як послуга.
jwenting

Відповіді:


22

Модель: поля, що належать об'єкту, методи, що допомагають отримувати / встановлювати дані від об’єкта (повний ім'я, що повертає ім’я та прізвище)

Сервіс: Методи виконання операцій з однією або декількома моделями, див. "Одиниця роботи", транзакції тощо ...


Співробітник :: create повинен просто взяти набір даних, виконати перевірку моделі, якщо це необхідно, і повернути об’єкт Employee.

EmployeeService :: hireEслужбовець може створити працівника, надіслати їм привітання електронною поштою, створити поштову скриньку, зробити з них сендвіч тощо. Він може повернути набір даних або код результату тощо ...


Це також може вплинути на перевірку:

Перевірка моделі: працівник повинен мати ідентифікатор, ім’я та прізвище та день народження

Перевірка обслуговування: Співробітники на посаді бармена мають бути 21 або більше років та затверджуватись менеджером.


Дякуємо за дуже конкретний приклад, що ілюструє, наскільки складною може бути бізнес-логіка справжнього слова, і тому чому додатковий рівень сервісу може допомогти окрім шару моделі.
wlnirvana

3

Згідно з моїм досвідом, рівень моделі в рамках дизайну MVC стосується кожного компонента програмного забезпечення, що бере участь в маніпулюванні даними (POJO, DAO, аж до SQL, JDBC тощо).

Тоді як рівень обслуговування фактично є доповненням до MVC:

Ми знаємо, що компоненти шару Model викликаються всередині шару Controller . Після того, як остання побудована, ви зрозумієте, що вона не виглядає стислою (брудно з брудним кодом); Контролер може не надавати додаткових деталей (наприклад, параметри запиту форматування перед викликом методу DAO, який збирається їх споживати ...). Тому ви можете включити цей додатковий рівень, а саме рівень обслуговування .

Зрештою, ви можете включити ваш брудний код у статичні методи зі значущим ім'ям, параметрами тощо, що призведе до отримання синтетичного шару контролера.

Подивіться за цим посиланням:

/programming/2762978/the-purpose-of-a-service-layer-and-asp-net-mvc-2


1
Саме так я бачу і сервісний рівень. Але потім, частіше за все, я бачу, що він використовується для подачі зовнішнього API в бізнес-модель. Обидва сценарії я вважаю дійсними. Питання тут якраз у зіткненні номенклатури.
burntblark

2

Структурно ці базові класи однакові, проте вони використовуються для класифікації різних рівнів службових та модельних рівнів впровадження MVCS

Service:- A concrete service class defines the API of an external Service.

Model :- Defines the API of the applications data model.

Отже, хоча базові класи схожі, конкретні класи, створені розширенням цих базових класів, виконують дві абсолютно різні цілі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.