У взаємодіє користувач з видом , але View повинен повідомити дії до контролера . Контролер може оновити модель , але це не потрібно при кожному / які - або зміни.
Опис, який я надаю, базується на моєму особистому досвіді .NET реалізації MVC. Ваша реалізація може бути різною.
Контролер , де дії обробляються, в основному бізнес - шар. Простий контролер не зробить нічого, крім отримання даних із Моделі для подачі у Вид. Складний контролер виконує всілякі дії, аж до управління безпекою, автентифікації, авторизації, реєстрації та, можливо, багатьох інших речей.
View повинен бути тільки відповідає за відображення інформації таким чином , що користувач може зрозуміти. Тут може відбутися деякий перехресний зв'язок як з Контролером, так і з Моделлю, оскільки такі речі, як додатки для однієї сторінки (SPA), матимуть зворотний зв'язок для перевірки даних для користувача. Будь-які інші перехресні переслідування сильно хмуряться.
Модель має справу з даними. Це включає перевірку даних (де це можливо). Зберігання та пошук даних також обробляються в цьому шарі.
ОНОВЛЕННЯ
Здається, існує деяка плутанина навколо того, хто робить що коли. Я включив два різні огляди архітектури MVC, оскільки вони схожі, але не однакові. Існує місце для будь-якої інтерпретації. Можливо, ще багато. Наведені вище описи - це моя інтерпретація MVC з різних джерел, включаючи мій власний досвід створення програм із застосуванням цієї методології. Сподіваємось, це оновлення допоможе усунути частину цієї плутанини.
MVC - це спроба побудувати модель дизайну розділення концернів для розробки програмного забезпечення. Він в основному був реалізований у веб-додатках (наскільки мені відомо).
View обробляє всі взаємодії з користувачем. Якщо ваш користувач натискає кнопку, представлення перегляду визначає, чи це клік - це взаємодія користувальницького інтерфейсу чи щось, що не викликає занепокоєння (взаємодія контролера). Якщо кнопка робить щось на зразок копіювання значень з одного поля в інше, Ваша реалізація визначить, чи це занепокоєння View або ступінь Controller. Ця розмитість, швидше за все, ви матимете лише тоді, коли будете мати справу з додатком на одній сторінці (SPA).
Контролер , де ваші дії будуть оброблені. Перегляд повідомляє, що користувач вирішив змінити значення для деяких полів. Контролер може здійснити перевірку цих даних або ним обробляти Модель. Знову це залежить від реалізації. Якщо Контролер має функції захисту, він може визначити, що користувач не має достатніх привілеїв для виконання дії. Він би відхилив зміни та оновив Перегляд відповідно. Контролер також визначає, які дані слід отримати з Моделі, як упакувати їх, і оновити Перегляд за допомогою цих даних.
Модель визначає , як і де зберігати дані. Він також може здійснити валідацію цих даних, перш ніж зберігати їх (це слід зробити, тому що люди будуть обходити Погляд при нагоді).
У Вікіпедії є стаття про MVC .
- Модель повідомляє пов'язаний з ним вид / види і контролери , коли відбулися зміни в своєму стані. Це повідомлення дозволяє переглядачам оновити свою презентацію, а контролери змінюють доступний набір команд. У деяких випадках реалізація MVC може бути замість цього "пасивною", тому інші компоненти повинні опитувати модель для оновлень, а не повідомляти про них.
- Вид сказано контролером всієї інформації, необхідної для генерування вихідного уявлення користувача. Він також може забезпечити загальні механізми інформування контролера про введення користувача.
- Контролер може посилати команди на модель для поновлення стану моделі (наприклад, редагування документа). Він також може надсилати команди до пов'язаного з ним перегляду, щоб змінити подання моделі в представленні даних (наприклад, прокручуючи документ).
З огляду Microsoft MVC .
Моделі. Об'єкти моделі - це частини програми, які реалізують логіку домену даних програми. Часто об'єкти моделей отримують і зберігають стан моделі в базі даних. Наприклад, об'єкт Product може отримати інформацію з бази даних, оперувати нею і потім записати оновлену інформацію в таблицю Products в базу даних SQL Server.
У невеликих додатках модель часто є концептуальним поділом замість фізичного. Наприклад, якщо програма лише зчитує набір даних і надсилає її до представлення, програма не має фізичного рівня моделі та пов'язаних класів. У цьому випадку набір даних бере на себе роль об'єкта моделі.
Перегляди. Перегляди - це компоненти, які відображають користувальницький інтерфейс програми (UI). Зазвичай цей інтерфейс створюється з даних моделі. Прикладом може бути перегляд таблиці таблиці продуктів, яка відображає текстові поля, випадаючі списки та прапорці відповідно до поточного стану об’єкта Продукту.
Контролери. Контролери - це компоненти, які керують взаємодією користувачів, працюють з моделлю і в кінцевому підсумку вибирають подання для відображення, що відображає інтерфейс користувача. У програмі MVC представлення відображає лише інформацію; контролер обробляє та реагує на введення та взаємодію користувачів. Наприклад, контролер обробляє значення рядка запиту і передає ці значення моделі, яка, в свою чергу, може використовувати ці значення для запиту бази даних.