Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
 MVC vs MVVM  [new]
Addx
Member

Откуда:
Сообщений: 954
Уважаемые коллеги.
Есть пару вопросиков.

1. Насколько допустимо хранить данные во ViewModel и что можно считать таковыми?
2. Где провести грань между Model и ViewModel?

Например, есть визуальное редактируемое поле. Должно ли оно быть сразу сохранено в модели, после завершения редактирования?
В базе и где-то еще сохранять не нужно, при закрытии формы данные пропадают.
Значение используется только при нажатии на кнопку.
25 окт 18, 19:16    [21715289]     Ответить | Цитировать Сообщить модератору
 Re: MVC vs MVVM  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3078
Addx,

Элемент TextBox редактирует текстовое поле, а в модели оно, к примеру, целое число. Сохраняйте сразу.
25 окт 18, 19:52    [21715327]     Ответить | Цитировать Сообщить модератору
 Re: MVC vs MVVM  [new]
Addx
Member

Откуда:
Сообщений: 954
Roman Mejtes
Addx,

Элемент TextBox редактирует текстовое поле, а в модели оно, к примеру, целое число. Сохраняйте сразу.


Вопрос в том, что текстовое поле само по себе не нужно.
А нужна сумма двух полей.
Например, одно поле - время, второе - дата.
В базе нужно одно поле.
И есть кнопка "сохранить дату". По которой пишем в базу.
Допустим, пользователь заполнил только одно.
Т.е. визуально у нас (Дата, Время)
В базе ДатаВремя.
Нужно ли создать отдельную сущность [Дата, Время], которая содержит логику (Сохранение в базу) в модели?
Или оставить во VM, с привязкой к внешнему вызову Model.SaveMyDT(Entity, Дата, Время)?
25 окт 18, 20:10    [21715352]     Ответить | Цитировать Сообщить модератору
 Re: MVC vs MVVM  [new]
ViPRos
Member

Откуда:
Сообщений: 9381
Addx,

Доступность кнопки "Сохранить" говорить пользователю о том, что состояние VM корректно и что то с этим состоянием можно делать (например, попытаться изменить состояние какого то объекта на основе VM). VM это только модель данных View и все.
25 окт 18, 22:10    [21715441]     Ответить | Цитировать Сообщить модератору
 Re: MVC vs MVVM  [new]
hVostt
Member

Откуда:
Сообщений: 15089
Addx
1. Насколько допустимо хранить данные во ViewModel и что можно считать таковыми?


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

Addx
2. Где провести грань между Model и ViewModel?


Модель, это бизнес-логика и её данные.

Грань провести можно такую. Представь себе 2 и более представлений. Веб-сайт, мобила, телик, десткопы всякие. Модель не должна зависеть от представлений. ViewModel также компенсируют возможную или существующую разницу между Моделью.

В реале, конечно зависимость кое какая есть, но нужно стремиться к разделению.


Addx
Например, есть визуальное редактируемое поле. Должно ли оно быть сразу сохранено в модели, после завершения редактирования?
В базе и где-то еще сохранять не нужно, при закрытии формы данные пропадают.
Значение используется только при нажатии на кнопку.


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

Так что... ))
26 окт 18, 22:31    [21716633]     Ответить | Цитировать Сообщить модератору
 Re: MVC vs MVVM  [new]
Addx
Member

Откуда:
Сообщений: 954
hVostt

Грань провести можно такую. Представь себе 2 и более представлений. Веб-сайт, мобила, телик, десткопы всякие. Модель не должна зависеть от представлений. ViewModel также компенсируют возможную или существующую разницу между Моделью.

В реале, конечно зависимость кое какая есть, но нужно стремиться к разделению.


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


hVostt

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

Так что... ))


Это как пример. ))
Вопрос в том, нужно ли сразу пробрасывать в модель, или оставлять только во ViewModel.
29 окт 18, 14:18    [21717997]     Ответить | Цитировать Сообщить модератору
 Re: MVC vs MVVM  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 25987
Addx
Не все так просто)
К примеру, при изменении данных на визуальной форме нужно перестроить графики.
Пересчет нетривиальный. Нужен для всех типов клиентов, абсолютно одинаковый, но в базы и пр. хранилища не пишем (данные для графиков, строятся на куче расчетных величин, разумеется их где-то хранить нужно после пересчета).
Вроде и бизнес-логика, и вроде нужно только для визуализации.

А приведите конкретный пример, если не сложно. Наверняка сведём к бизнес-логике.

А результат можно и в MongoDB, Redis положить.
29 окт 18, 17:59    [21718261]     Ответить | Цитировать Сообщить модератору
 Re: MVC vs MVVM  [new]
hVostt
Member

Откуда:
Сообщений: 15089
Addx
Не все так просто)


Было бы просто, работать умом не надо было бы )

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


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

Понятие "визуализация" не нужно воспринимать прям топорно и буквально.
30 окт 18, 23:14    [21719616]     Ответить | Цитировать Сообщить модератору
Все форумы / Программирование Ответить