Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC: должна ли модель всегда быть корректной? / 25 сообщений из 52, страница 1 из 3
10.02.2012, 14:49:38
    #37655933
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
Смотрю на некоторые фреймворки
- у одних модель всегда в корректном состоянии, а при неверных присваиваниях аттрибутов генерятся эксепшены
- у других модель позволяет принять всякий мусор, но предоставляет свойство isValid

из вашего опыта - должна ли модель всегда иметь корректное состояние ли иногда ей можно пошалить?
Поделитесь соображениями плиз!
...
Рейтинг: 0 / 0
10.02.2012, 15:00:17
    #37655961
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
смотреть на логику

Если модель регистрации пользователя - да, если что-то нестрогое - фтопку.
...
Рейтинг: 0 / 0
10.02.2012, 15:02:13
    #37655966
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
Бизнес - штука изменчивая. Иногда требуется, чтобы модель в различных ее проявлениях (и представлениях в том числе) вела себя немного по-разному. Поэтому, можно и "пошалить".
Другое дело, что нужно стараться минимизировать кол-во таких выкрутасов, это и проще в поддержке.
...
Рейтинг: 0 / 0
10.02.2012, 15:18:32
    #37656010
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
а по поводу использования в формах какой сценарий вы используете ?

- юзер ввел данные от фонаря, они соответственно присвоились аттрибутам модели, модель их приняла но выкинула исключение, которое отобразилось в интефейсе с "плохим полем", но введеные юзером данные остались ему мазолить на совесть

- юзер ввел данные от фонаря, модель попыталась переварить, но не приняла и выдала исключение, в поле соответстевнно (либо осталось прежнее значение либо какоето сгенерированное моделью) и рядом с полем появилось "Айяйяй!!"
...
Рейтинг: 0 / 0
10.02.2012, 15:53:27
    #37656102
-капча-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
Хорошая тема!
всегда интересовал вопрос - как смотрят мс на капчу (или нечто подобное, слабо относящееся к модели) - где её следует проверять?
...
Рейтинг: 0 / 0
14.02.2012, 14:30:53
    #37661079
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
А в каких ситуациях приходится соглашаться на не корректное состояние модели?
...
Рейтинг: 0 / 0
14.02.2012, 15:20:10
    #37661210
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
spА в каких ситуациях приходится соглашаться на не корректное состояние модели?
Когда руководство держит за яйца с пометкой "срочно".
...
Рейтинг: 0 / 0
15.02.2012, 02:07:25
    #37662166
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
МСУspА в каких ситуациях приходится соглашаться на не корректное состояние модели?
Когда руководство держит за яйца с пометкой "срочно".

Ну этот случай можно не брать в расчот - это форсмажор! это стихийное бедствие! :)
Я про штатные ситуации спрашивал
...
Рейтинг: 0 / 0
15.02.2012, 11:34:31
    #37662531
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
spЯ про штатные ситуации спрашивал
Ролевые политики. Админ может всё делать с моделью, менержер чуть меньше, обычный юзер еще меньше.
...
Рейтинг: 0 / 0
15.02.2012, 12:30:33
    #37662698
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
Чтобы гибче отрулить сабжем, делают некую смесь MVC и MVVM паттернов проектирования. Рекомендую. Уже обсуждалось.
Другими словами, имеется гибкая универсальная модель и модель представления .
В модель представления можно зашить любую логику. В т.ч. и сложные ролевые правила, которые, скажем, декларативно не опишешь. Или сложную валидацию. Яваскрипты. Да всё, что угодно.
...
Рейтинг: 0 / 0
15.02.2012, 13:11:23
    #37662827
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
МСУ,

Вообще-то, все паттерны придуманы именно для того, чтобы, в некотором смысле, ограничить беспредел ламеров и чайников, которые участвуют в проекте.
В других случаях, про это можно без проблем забыть.
...
Рейтинг: 0 / 0
15.02.2012, 13:20:58
    #37662852
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
МСУЧтобы гибче отрулить сабжем, делают некую смесь MVC и MVVM паттернов проектирования. Рекомендую. Уже обсуждалось.
Другими словами, имеется гибкая универсальная модель и модель представления .
В модель представления можно зашить любую логику. В т.ч. и сложные ролевые правила, которые, скажем, декларативно не опишешь. Или сложную валидацию. Яваскрипты. Да всё, что угодно.

Я собственно чего - большинство фреймворков вообще не заморачиваются на контроле целостности модели - возлагая всю ответственность на БД или на другие слои.
Но по сути же модель на стороне клиента - это же проекция сущности из БД и она в БД никак не может быть некорректной - т.е. если юзер вместо номера документа ввел "Куй" - модель должна его соответствующим образом сразу же образумить!?
Смотрю многие фреймворки - там наличествует свойство isValid а перед самой отправкой на сервер - Validate
Это же как-то некошерно - зачем себе голову морочить если модель сразу либо примет данные - либо пошлет - и не надо доп проверок!?
...
Рейтинг: 0 / 0
15.02.2012, 13:31:39
    #37662881
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
ShSergeМСУ, Вообще-то, все паттерны придуманы именно для того, чтобы, в некотором смысле, ограничить беспредел ламеров и чайников, которые участвуют в проекте.
В других случаях, про это можно без проблем забыть.
Не оправдывайте своё нежелание учить и использовать шаблоны проектирования :)

spЯ собственно чего - большинство фреймворков вообще не заморачиваются на контроле целостности модели - возлагая всю ответственность на БД или на другие слои.
Для задачек типа "хеллоуворлд" пойдёт. Для более сложных решений нужна более гибкая модель (модель представления).

spНо по сути же модель на стороне клиента - это же проекция сущности из БД и она в БД никак не может быть некорректной - т.е. если юзер вместо номера документа ввел "Куй" - модель должна его соответствующим образом сразу же образумить!?
В том-то и проблема. Многие неотесаные студенты пытаются эту проекцию сущности БД наложить на гуй. Это в корне неверный архитектурный подход, ибо он нерасширяем.
Мухи отдельно, котлеты отдельно.
1. Проекция из БД - это "модель"
2. Отдельный класс (пусть и немного повторяющий свойства самой модели) - это "модель представления"
Поищите поиском, на эту тему много дров порублено. Я уже не раз писал про это.
...
Рейтинг: 0 / 0
15.02.2012, 13:33:35
    #37662888
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
МСУМухи отдельно, котлеты отдельно.
1. Проекция из БД - это "модель"
2. Отдельный класс (пусть и немного повторяющий свойства самой модели) - это "модель представления"

Получается некий симбиоз MVC с MVVM. Это гибко и расширяемо.
...
Рейтинг: 0 / 0
15.02.2012, 14:04:42
    #37662971
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
МСУShSergeМСУ, Вообще-то, все паттерны придуманы именно для того, чтобы, в некотором смысле, ограничить беспредел ламеров и чайников, которые участвуют в проекте.
В других случаях, про это можно без проблем забыть.
Не оправдывайте своё нежелание учить и использовать шаблоны проектирования :)
Чего же так сразу про моё нежелание? У нас в конторе и под вэбформс (и винформс), и под мвц (и мвп) пишут. Если начальники захотят, то подключат меня к любому проекту, совершенно не спрашивая моего желания.
А про паттерны я вполне конкретно своё имхо высказал. Хотя, впрочем, у меня, как и у каждого, свой паттерн имеется. :)
...
Рейтинг: 0 / 0
15.02.2012, 17:16:30
    #37663502
-капча-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
авторСмотрю многие фреймворки - там наличествует свойство isValid а перед самой отправкой на сервер - Validate
Это же как-то некошерно - зачем себе голову морочить если модель сразу либо примет данные - либо пошлет - и не надо доп проверок!?
гыгыгы! тема попрежнему интересна!
перед самой отправкой на сервер неможет быть isValid/Validate из серверного кода - ПО ОПРЕДЕЛЕНИЮ!
ещё раз спрошу - есть модель - ответ на вопрос в ветке форума! (postid postname posttime and etc) - всё это проверит модель - длина поста высота и т.д.
на форме присутствует капча, которая к модели не имеет НИКАКОГО отношения - однако её нужно проверить - естественный вопрос -
ГДЕ?!

автор2. Отдельный класс (пусть и немного повторяющий свойства самой модели) - это "модель представления"

жесть! MVC = Model/View/Controller
...
Рейтинг: 0 / 0
15.02.2012, 17:23:25
    #37663517
-капча-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
По поводу проверок в БД!
Длина поля не должна превышать 50 симв. Мы запулили 150 -
БД запишет 50 из 150 и не рюкнет!
Пользователь будет огорчён ;)
...
Рейтинг: 0 / 0
15.02.2012, 20:32:35
    #37663975
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
-капча-,

капча должна иметь отношение к модели представления, да и нет проблемы получить ее где угодно, отдельно от модели.
Request["Captcha"]
MyForm.Captcha
проверить в контроллере, сервисном слое и тд.
...
Рейтинг: 0 / 0
15.02.2012, 21:00:52
    #37664047
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
-капча-жесть! MVC = Model/View/Controller
Для неокрепшего ума - жесть. Согласен.
Для понимающего архитектора приложения - обычная ситуация (с имплементацией модели представления).

См. сюда: http://ru.wikipedia.org/wiki/Model-View-Controller

RTFMДля реализации схемы Model-View-Controller используется достаточно большое число шаблонов проектирования (в зависимости от сложности архитектурного решения), основные из которых Наблюдатель, Стратегия, Компоновщик
MVC намного шире, чем осознаёт твой неокрепший мозг :)
...
Рейтинг: 0 / 0
15.02.2012, 21:10:29
    #37664068
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
-капча-По поводу проверок в БД!
Длина поля не должна превышать 50 симв. Мы запулили 150 -
БД запишет 50 из 150 и не рюкнет!
Пользователь будет огорчён ;)
Поверь мне, в жизни бывают на порядки сложней правила валидации (с внешними зависимостями в т.ч.), нежели длина строки. Такое валидационное правило невозможно описать декларативно.
Во-вторых, есть зашивать в саму модель валидацию - кретинизм. Что будем делать, если появляется ролевая зависимость для валидации? Пихать в модель роли?
А через год нам потребуется для определенных случаев (например, использование модели в неком вебсервисе) игнорировать половину правил валидации. Как нам вкорячить это в разбухшую модель?
А через полтора года эта модель юзается в десктоп приложении, которое вообще не знает, что такое ASP.NET Roles, сесиия и т.д.
Даже тугодум догадается, что нужен дополнительный слой абстракции - модель представления. Модель представления для веб приложнения своя, для десктоп приложения - своя, для веб сервиса ее вообще нет, работаем напрямую с моделью.
Почитай про MVVM, много полезного узнаешь.
...
Рейтинг: 0 / 0
16.02.2012, 00:25:57
    #37664289
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
МСУПоверь мне, в жизни бывают на порядки сложней правила валидации (с внешними зависимостями в т.ч.), нежели длина строки. Такое валидационное правило невозможно описать декларативно.
Во-вторых, есть зашивать в саму модель валидацию - кретинизм. Что будем делать, если появляется ролевая зависимость для валидации? Пихать в модель роли?
А через год нам потребуется для определенных случаев (например, использование модели в неком вебсервисе) игнорировать половину правил валидации. Как нам вкорячить это в разбухшую модель?
А через полтора года эта модель юзается в десктоп приложении, которое вообще не знает, что такое ASP.NET Roles, сесиия и т.д.
Даже тугодум догадается, что нужен дополнительный слой абстракции - модель представления. Модель представления для веб приложнения своя, для десктоп приложения - своя, для веб сервиса ее вообще нет, работаем напрямую с моделью.
Почитай про MVVM, много полезного узнаешь.

А чем тогда перенос правил поведения и валидации вынесенный из модели будет отличаться во вьюмодели?
точно так же прийдется переписывать если что-то изменится
ну и в модель же пишутся только правила валидации домена БД а не ролевые и другие методы валидации - ядумаю вся эта "другая" логика должна быть вынесена на уровень либо среднего звена либо в слой хранимых процедур
...
Рейтинг: 0 / 0
16.02.2012, 00:40:35
    #37664302
-капча-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
авторкапча должна иметь отношение к модели представления ,

авторДля понимающего архитектора приложения - обычная ситуация (с имплементацией модели представления ).

авторПочитай про MVVM, много полезного узнаешь.
http://ru.wikipedia.org/wiki/Model-View-Controller Концепция MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента:

Модель (англ. Model). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать.

Представление, вид (англ. View). Отвечает за отображение информации (визуализацию). Часто в качестве представления выступает форма (окно) с графическими элементами.

Контроллер (англ. Controller). Обеспечивает связь между пользователем и системой: контролирует ввод данных пользователем и использует модель и представление для реализации необходимой реакции.


господа! не нужно уводить разговор в плоскость MVVM! есть конкретный шаблон MVC - придерживайтесь его понятий и представлений, иначе складывается впечатление, что беседа беспредметна!
авторВо-вторых, есть зашивать в саму модель валидацию - кретинизм.
Наиболее частые ошибкиСреднестатистический ТТУК получал данные из БД (используя уровень абстракции базы данных, делая вид, что это модель) или манипулировал, валидировал , записывал, а также передавал данные в вид. Такой подход стал очень популярен потому, что использование таких контроллеров похоже на классическую практику использования отдельного php-файла для каждой страницы приложения.
С нетерпением ожидаю взрыва ваших эмоций и обвинений в мой адрес в глубочайшем непониманим величайшего творения MS! $)))
Чуть не збыл! Оторвите взгляд от творений чужих рук - создайте свой маленький трёхколёсный велик - ИМХО много нового откроется!
Удачи!
...
Рейтинг: 0 / 0
16.02.2012, 00:54:51
    #37664317
-капча-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
авторну и в модель же пишутся только правила валидации домена БД а не ролевые и другие методы валидации - ядумаю вся эта "другая" логика должна быть вынесена на уровень либо среднего звена либо в слой хранимых процедур
оторви взгляд от БД!
Модель имеет отношение к абстрактному хранилищу данных - БД - всего лишь частный случай - это может быть xml, просто файл, выделенная область памяти и многое другое!!!
+ вьюмодели - выдуманная абстракция твоих собеседников - не ведись!
...
Рейтинг: 0 / 0
16.02.2012, 01:19:09
    #37664341
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
-капча-авторну и в модель же пишутся только правила валидации домена БД а не ролевые и другие методы валидации - ядумаю вся эта "другая" логика должна быть вынесена на уровень либо среднего звена либо в слой хранимых процедур
оторви взгляд от БД!
Модель имеет отношение к абстрактному хранилищу данных - БД - всего лишь частный случай - это может быть xml, просто файл, выделенная область памяти и многое другое!!!
+ вьюмодели - выдуманная абстракция твоих собеседников - не ведись!

от БД никак не могу взгляд оторвать - любуюсь ею каждый день, да и чо там скрывать! - да, люблю я их, люблю)) - все остальное - это вырожденная БД ))
...
Рейтинг: 0 / 0
16.02.2012, 08:52:21
    #37664468
-капча-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC: должна ли модель всегда быть корректной?
авторот БД никак не могу взгляд оторвать - любуюсь ею каждый день, да и чо там скрывать! - да, люблю я их, люблю)) - все остальное - это вырожденная БД ))
в фс хранится N количество файлов картинок - невпёрлось их кидать в БД!
как прикрутить к модели сие богатсво!?
Размышляй! ;)
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC: должна ли модель всегда быть корректной? / 25 сообщений из 52, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]