powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MVVM Framework. Кто какой использует?
236 сообщений из 236, показаны все 10 страниц
MVVM Framework. Кто какой использует?
    #36984368
_andrews_.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я чего-то потерялся в этом вопросе...
Prism, Cinch, MVVM Light и т.д.
так много документации, так много инфы, что просто не знаю что нужно выбирать и что мне подходит.
Вот столкнулся сейчас с тем, что нужно показывать диалоговое окно. Это можно делать либо через гемор вручную, либо используя уже готовые сервисы из Frameworks.
Также нужно вести лог ошибок. Это тоже я так понимаю можно закрепить за Framework...
Обработка Exceptions...
Гибкий механизм вызова и сокрытия форм.
Будет широко использоваться мультипоточность.

Кто что посоветует?
Какой есть опыт использования различных Frameworks?
Спасибо!
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #36984618
юзаем призм, полет нормальный
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000762
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мимо_пробегал__,

Совет - хорошенько разобраться с архитектурой Silverlight в принципе. Ни один фреймворк не решит всех проблем. Мне MVP подход в последнее время больше нравится, чем MVVM. Точнее MVP + PresentationModel подход. Рекомендую следующий набор статей по этому поводу http://davybrion.com/blog/2010/07/the-mvvm-pattern-is-highly-overrated/
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000817
Denis Gladkikhмимо_пробегал__,

Совет - хорошенько разобраться с архитектурой Silverlight в принципе. Ни один фреймворк не решит всех проблем. Мне MVP подход в последнее время больше нравится, чем MVVM. Точнее MVP + PresentationModel подход. Рекомендую следующий набор статей по этому поводу http://davybrion.com/blog/2010/07/the-mvvm-pattern-is-highly-overrated/
еще раз внимательно читаем тред, и даем ответ тому кто спрашивал)
меня PRISM с его модульной архитектурой более чем устраивает. заметьте я ничего никому не навязывал)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000823
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мимо_пробегал__,

извиняюсь, ответ был для _andrews_ конечно же, просто случайно не туда нажал на ответить
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000842
Denis Gladkikh,

дык понятно)
коли зашел разговор, можно подробнее про MVP + PresentationModel?
разве PresentationModel в нашем случае не будет адаптером модели для view? ведь это и выполняет ViewModel, тупо выставляет свойства модели для биндинга. в чем тогда сок?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000847
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мимо_пробегал__,

сок в использовании всех прелестей Presenter, без проблем и не задумываясь имея ссылку на View из него, что позволяет решить множество проблем, например, с той же самой отображения ChildView и т.п.
А вот PresenterModel дает нам сок использования Binding в WPF/Silverlight.

То есть View - отображает данные, Model - бизнес логика, ViewModel - отображение модели на вью + валидация, Presenter - действия, подгрузки данных и т.п.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000859
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis Gladkikhмимо_пробегал__,

Совет - хорошенько разобраться с архитектурой Silverlight в принципе. Ни один фреймворк не решит всех проблем. Мне MVP подход в последнее время больше нравится, чем MVVM. Точнее MVP + PresentationModel подход. Рекомендую следующий набор статей по этому поводу http://davybrion.com/blog/2010/07/the-mvvm-pattern-is-highly-overrated/

После перехода с SCSF подобные выводы напрашивались сразу при отсутствии WorkItem(Use Case) в Prism. Я не видел ни одного фреймворка, который в комплексе решал все проблемы: навигация, управление триадой View-ViewModel-Model, Dal, etc. Сделал свой вариант.
ЗЫ MVP - неплохой паттерн, но в случае с WPF/SL, держать ссылку на View нужно в очень редких случаях.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000863
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i,

авторЗЫ MVP - неплохой паттерн, но в случае с WPF/SL, держать ссылку на View нужно в очень редких случаях.

"нужно", "можно" или "лучше"? Держать ее можно во всех случаях, проблем в этом не вижу.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000867
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhТо есть View - отображает данные, Model - бизнес логика, ViewModel - отображение модели на вью + валидация, Presenter - действия, подгрузки данных и т.п.
Это уже MVVMP получается.
Платите двадцать рублей. (с) Печкин
Печкин сразу нашёл выход:
- Вы ему письмо напишите. Я ему передам. Лучше открытку. У меня с собой есть. Вам простую или поздравительную дать?
- Конечно, простую, - отвечает Матроскин. - Буду я на него поздравительную тратить.
Печкин у себя в сумке посмотрел и говорит:
- Какая жалость. У меня только поздравительные открытки есть. Простые кончились. Придётся вам поздравительную брать.
Взял Матроскин поздравительную открытку с цветочками и котятами и написал:
"Шарик, ты - балбес!"
Печкин возражает:
- Неправильно это. Если открытка поздравительная, сначала адресата поздравить полагается.
Матроскин дописал:
"Поздравляю тебя, Шарик, ты - балбес! Перестань валять дурака, давай мириться".
Печкин эту открытку Шарику принёс. Шарик прочитал и сильнее на Матроскина обиделся:
- Я сейчас в этого поздравителя кочергой брошу.
Печкин говорит:
- Зачем бросать, если почта есть. Это уже бандероль получается. Сейчас мы её упакуем и коту передадим. Платите десять рублей за упаковку.
Он кочергу в бумагу завернул, верёвочкой перевязал и к Матроскину пришёл на его половину:
- Вам кочергу прислали бандеролью. Хотели в вас запустить.
- Что? - кричит Матроскин. - Да я в него за это утюгом! Где мой утюг деревенский с углями?
Он притащил огромный чугунный утюг, прямо как из музея.
- Стоп-стоп! - говорит Печкин. - Это уже посылка получается. Платите двадцать рублей за доставку. Я уж ваш утюг передам.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000870
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis Gladkikhмимо_пробегал__,

сок в использовании всех прелестей Presenter, без проблем и не задумываясь имея ссылку на View из него, что позволяет решить множество проблем, например, с той же самой отображения ChildView и т.п.
А вот PresenterModel дает нам сок использования Binding в WPF/Silverlight.

То есть View - отображает данные, Model - бизнес логика, ViewModel - отображение модели на вью + валидация, Presenter - действия, подгрузки данных и т.п.

Отображать ChildView можно прекрасно и без View, как это сделано в Prism c помощью Bihaviors.На мой взгляд, логика управление окнами должна быть вынесена в отдельный manager. Это повышает переносимость, гибкость в выборе необходимого интерфейса(tab,mdi, outlook style,etc), внятность кода.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000874
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis Gladkikhi,

авторЗЫ MVP - неплохой паттерн, но в случае с WPF/SL, держать ссылку на View нужно в очень редких случаях.


"нужно", "можно" или "лучше"? Держать ее можно во всех случаях, проблем в этом не вижу.

Проблемы будут с тестированием. Без view все значительно упрощается, + см выше
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000875
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LR,

Опечатался, там вместо ViewModel должно стоять PresentationModel, в общем рекомендую прочитать приведенные статьи, там все описано, с чем я согласен на 99%. Так же рекомендую в одной из статей скачать пример.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000878
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i,

как раз таки с тестированием проблем не будет, а будет в несколько раз более протестированнее. Особенно связанные на View поведения. Очевидно, что держать ссылку нужно не на само вью, а на абстракцию, тобишь интерфейс.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000883
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
[quot LR]Denis GladkikhТо есть View - отображает данные, Model - бизнес логика, ViewModel - отображение модели на вью + валидация, Presenter - действия, подгрузки данных и т.п.
Это уже MVVMP получается.
Варианты могут разные в зависимости от задач и личных предпочтений.
ЗЫ Бизнес логика кроме валидации в Model для трехзвенки не подходит.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000887
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis Gladkikhi,

как раз таки с тестированием проблем не будет, а будет в несколько раз более протестированнее. Особенно связанные на View поведения. Очевидно, что держать ссылку нужно не на само вью, а на абстракцию, тобишь интерфейс.

В этом весь и вопрос: зачем ее держать, если она не нужна? В ее отсутствии тестировать нужно только бизнес логику, для UI тестирования есть свои инструменты.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000893
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iВарианты могут разные в зависимости от задач и личных предпочтений.
+100
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000898
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i,

Конечно есть инструменты, много у вас тестов написано для UI? ну честно? Охотно все рисуют такие тесты? А нужно или не нужно все зависит от того как разрабатывать.

Например, решите мне простую задачу - установите фокус в определенный текстбокс. Действие такое: пользователь вводить логин и пароль, пара отправляется на сервер, в случае неверного логина стираем все и выставляем фокус на логин, в случае неверного пароля выставляем фокус на пароль и стираем только пароль. В случае MVP связки это делается за считанные секунды, данное поведение так же легко протестировать. В случае чистого MVVM нужно делать обратные команды (решение попахивает тем еще), можно еще какие-нибудь левые решения навыдумывать, но зачем? Уже давно есть простой и удобный способ при помощи MVP. Все нужно использовать вмеру, байдинг очень классная вещь, но вот в связке MVP + PresentationModel все работает в разы лучше.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000912
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis Gladkikhi,

Конечно есть инструменты, много у вас тестов написано для UI? ну честно? Охотно все рисуют такие тесты? А нужно или не нужно все зависит от того как разрабатывать.

Например, решите мне простую задачу - установите фокус в определенный текстбокс. Действие такое: пользователь вводить логин и пароль, пара отправляется на сервер, в случае неверного логина стираем все и выставляем фокус на логин, в случае неверного пароля выставляем фокус на пароль и стираем только пароль. В случае MVP связки это делается за считанные секунды, данное поведение так же легко протестировать. В случае чистого MVVM нужно делать обратные команды (решение попахивает тем еще), можно еще какие-нибудь левые решения навыдумывать, но зачем? Уже давно есть простой и удобный способ при помощи MVP. Все нужно использовать вмеру, байдинг очень классная вещь, но вот в связке MVP + PresentationModel все работает в разы лучше.

Пример хороший, но не очень показательный. Очистка полей делается простым обнулением свойств Model, установка фокуса - Behaivors(есть готовые). Еще будут варианты?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000916
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhНапример, решите мне простую задачу - установите фокус в определенный текстбокс.
ну вот нечто подобное, местами использую в xaml (чтобы не "мусорить" в коде)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000924
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRDenis GladkikhНапример, решите мне простую задачу - установите фокус в определенный текстбокс.
ну вот нечто подобное, местами использую в xaml (чтобы не "мусорить" в коде)
а не подскажите, чем занимается процессор по одной из ссылок с этого сайта, когда я его не трогаю? Предположения какие?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000936
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmа не подскажите, чем занимается процессор по одной из ссылок с этого сайта, когда я его не трогаю? Предположения какие?
подсчитывает количество "счастливых" билетиков на двадцатисемимиллионной выборке? (просто как предположение от "фонаря", он светит слева спереди)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000942
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRiscrafmа не подскажите, чем занимается процессор по одной из ссылок с этого сайта, когда я его не трогаю? Предположения какие?
подсчитывает количество "счастливых" билетиков на двадцатисемимиллионной выборке? (просто как предположение от "фонаря", он светит слева спереди)
у гугла на туже задачу почему-то хватает 1%, в бездействии 0%. Он правда SL для рисовалки интерфейса не использует.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000946
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmу гугла на туже задачу почему-то хватает 1%, в бездействии 0%. Он правда SL для рисовалки интерфейса не использует.
возможно... вывод? очевиден: SL - УГ!
надеюсь, Вы услышали что хотели?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000947
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iна Искре, будет загрузка 400% на каждом ядре даже с одним справочником
ты ошибаешься. Загрузка будет такой же, потому что Искра просто браузер для SL. На себя она не забирает лишнего.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000948
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRнадеюсь, Вы услышали что хотели?
нет. Ответа же не было...
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000949
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Посмотри в Silverlight/Showcase .
Загрузка ноль% в споконом состоянии. Твой пример - кривые руки, которые ни о чем не говорят
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000952
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iПосмотри в Silverlight/Showcase .
Загрузка ноль% в споконом состоянии. Твой пример - кривые руки, которые ни о чем не говорят
так я об этом мнения и спрашиваю. Если это объясняется просто кривыми руками, то это тоже объяснение.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000958
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,

SL по ресурсам конечно достаточно прожорлив, спору нет. Но не настолько, чтобы нельзя было разрабатывать для "посредственного нынче" железа. Конечно, всегда есть "железная перспектива", но ведь "вменяемые" разработчики этим никогда не злоупотребляют (ориентир - "посредственное нынче" железо)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000964
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,

согласен. Запускал на посредственной по нынешним временам Sony Vaio C1, завтра попробую на Z-серии, останется ли место для других приложений. Сегодня уже нет желания.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37000972
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iПосмотри в Silverlight/Showcase .
Загрузка ноль% в споконом состоянии. Твой пример - кривые руки, которые ни о чем не говорят
действительно. функционал похожий, но реализация конечно качественная. Перемудрили ребята с анимацией, похоже.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001152
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LRну вот нечто подобное, местами использую в xaml (чтобы не "мусорить" в коде)

Не катит, с этим behavior легко выставить фокус на действие произведенное на UI. В моем примере фокус нужно установить из ViewModel/Presenter/Controller после ответа с сервера.

iscrafmа не подскажите, чем занимается процессор по одной из ссылок с этого сайта, когда я его не трогаю? Предположения какие?
Вообще, вопрос к теме не относится, вроде. Но раз спросили. На этот баг не попадался в этом примере, но вообще это все кривые руки разработчиков, когда-то я решал похожий баг. Чаще всего на LayoutUpdate или похожий event начинают делать что-то с UI, что приводит в бесконечный цикл - Layout обновляется -> дергается event -> в коде разработчик обновляет Layout -> и по кругу. Так что сам SL тут не причем, а я для вас и на html c js могу похожее сделать, и на любой другой платформе.

P.S. Еще в SL есть несколько случаев, когда может происходить утечка памяти, например с BusyIndicator. Случаи известные, и тру разработчики с ними легко справляются.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001268
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhЧаще всего на LayoutUpdate или похожий event начинают делать что-то с UI, что приводит в бесконечный цикл - Layout обновляется -> дергается event -> в коде разработчик обновляет Layout -> и по кругу. Так что сам SL тут не причем, а я для вас и на html c js могу похожее сделать, и на любой другой платформе.

попробуйте, сделайте. Интересно даже, получите такой же эффект или все же классически вылетит программа по причине замкнутого цикла.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001312
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafm,

зачем мне пробовать? Классического замкнутого цикла там нет, там даже может и не быть утечки памяти. Просто будет постоянно обрабатываться layoutupdated event. Ничего вылететь не должно.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001465
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Gladkikhiscrafm,

зачем мне пробовать?
чтобы убедиться, а не предполагать.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001560
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafm,

эмс, может я не так выразился, но вообще-то я говорил про случай из жизни. Этот баг я действительно правил в одном из приложений. В вашем примере - скорее всего виноват не LayoutUpdate, посмотрел в SL Spy, никаких событий по циклы не происходит, но очевидно, что есть, что-то еще. Предположительно, могут обрабатывать контекст, искать мышку как-то. Нужно смотреть код, чтобы понять ошибку, допущенную разработчиками.

В любом случае - вопрос уже не по теме сообщения. Так что предлагаю закрыть его.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001570
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MVVM - игрушка, не способная решать сложные нетривиальные задачи.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001580
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhВ любом случае - вопрос уже не по теме сообщения. Так что предлагаю закрыть его.
Вы уже второй раз вспоминаете о теме топика, нарушив ее еще в третьем сообщении на первой странице.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001582
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выступление на ADD2010: Silverlight/WPF: возврат от паттерна MVVM к MVP
О чём я и говорил тут: 9903653

МСУP.S. Как Вы смели заметить, я не уважаю MVVM, меня больше устраивает гибкий вариант как-бы смеси MVVM + MVP (MVC).
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001599
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ Выступление на ADD2010: Silverlight/WPF: возврат от паттерна MVVM к MVP
О чём я и говорил тут: 9903653

МСУP.S. Как Вы смели заметить, я не уважаю MVVM, меня больше устраивает гибкий вариант как-бы смеси MVVM + MVP (MVC).Судя по нику участника, отстаивающего эту позицию в топике, и имени автора выступления, "массовых выступлений" против MVVM пока что не видно.
И тут и там - один и тот же :)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001622
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь, не суетитесь ) Я вещаю за реальные практические вещи, которые нужны разработчику в повседневном быте. На основе опыта, а не разглагольства придурковатых евангелистов. Я ищу оптимальное , а не опираюсь на рекламу пионеров-багописателей, которые пиарят какой-то там сферический паттерн.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001643
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafmDenis GladkikhВ любом случае - вопрос уже не по теме сообщения. Так что предлагаю закрыть его.
Вы уже второй раз вспоминаете о теме топика, нарушив ее еще в третьем сообщении на первой странице.

эмс... как это я нарушил? Я показал на "фреймворк", описанный в тех статьях по ссылке. Он легко вписывается в архитектуру MVVM, а точнее это это смесь MVP c MVVM.

i seeСудя по нику участника, отстаивающего эту позицию в топике, и имени автора выступления, "массовых выступлений" против MVVM пока что не видно.
И тут и там - один и тот же :)

Все верно, это я. И я позицию в топике не отстаиваю. Даю просто совет. ;) И то, что попалось на глаза не отображает всю действительность. Погуглите и посмотрите сколько народу задумывается о сравнении MVP и MVVM и увидите ;) А еще посмотрите с какой архитектурой разработаны первые примеры Prism, да даже в версии 2.x ;)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001658
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhДаю просто совет. ;) И то, что попалось на глаза не отображает всю действительность. Погуглите и посмотрите сколько народу задумывается о сравнении MVP и MVVM и увидите ;)
+1, Дениска. Верно вещаете ))

P.S. За TDD тоже согласен. Была даже ссылка, постил как-то, что специалисты пишут, что 100% покрыть код автотестами невозможно впринципе. Всех комбинаций и поведений не учтешь. Выводы - мы пишем тест, а не программу (если серьезный проект), тратим много времени на имзменение теста под новые задачи оптимизации и кастома. И так далее. В современных условиях заказчик не готов платить на время - ему нужно быстро и чтоб работало так, как нужно ему. Ну и так далее...
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001819
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
i seeМСУ Выступление на ADD2010: Silverlight/WPF: возврат от паттерна MVVM к MVP
О чём я и говорил тут: 9903653

пропущено...
Судя по нику участника, отстаивающего эту позицию в топике, и имени автора выступления, "массовых выступлений" против MVVM пока что не видно.
И тут и там - один и тот же :)

Весомых аргументов тоже не видно
авторВ большинстве случаев реализации MVVM паттерна модель представления имеет очень много причин для изменений. Если нам нужно на представлении поменять немного логику, использовать другое связывание данных, то, скорее всего, нужно будет менять и логику в модели представления. Если поменялась модель, то нужно менять за ней и модель представления. Одни из самых важных принципов разработки – это «разделение ответственности» (Seperation of Concerns) и «принцип единственной ответственности» (Single Responsibility Principle). В случае модели представления эти принципы нарушены.
Данную проблему можно решить, вернувшись обратно к паттерну MVP с небольшими доработками. Основой этих доработок будет являться облегченная версия модели представления, описанной Мартином Фаулером [3]. В данном случае эта модель представления возьмет на себя только задачу связывания данных, и в некоторых случаях их валидацию. В результате у нас будет презентатор, который будет выполнять действия по запросу пользователя, модель представления, которая будет связывать данные с представлением, само представление, а так же модель. Каждый компонент фокусируется на более специфичных задачах вместо охвата нескольких, что дает нам, например, преимущества в написании тестов. Данный подход не только делает код более читабельным и классы более сфокусированными, так же у нас появляется возможность использовать облегченную версию модели представления сразу на нескольких представлениях


MVVM - MVP без View.
"Если нам нужно на представлении поменять немного логику" это придется делать и в MVP.
"Если поменялась модель, то нужно менять за ней и модель представления", а это делать совершенно необязательно, если Model отдельное свойство MVVM.
Помимо этого, MVP есть еще одно существенное усложнение, которое соврешенно не отвечает принципу единичной ответственности - в нем должна быть заложенна логика управления предтавлением и связыванием с данными.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001837
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУDenis GladkikhДаю просто совет. ;) И то, что попалось на глаза не отображает всю действительность. Погуглите и посмотрите сколько народу задумывается о сравнении MVP и MVVM и увидите ;)
+1, Дениска. Верно вещаете ))

P.S. За TDD тоже согласен. Была даже ссылка, постил как-то, что специалисты пишут, что 100% покрыть код автотестами невозможно впринципе. Всех комбинаций и поведений не учтешь. Выводы - мы пишем тест, а не программу (если серьезный проект), тратим много времени на имзменение теста под новые задачи оптимизации и кастома. И так далее. В современных условиях заказчик не готов платить на время - ему нужно быстро и чтоб работало так, как нужно ему. Ну и так далее...

-100, Данилка вещает, как всегда о вещах не имея ни малейшего представления о них.
Основные аргументы сторонников TDD - заказчик не готов платить за полное обследование и проектирование по науке или это не имеет смысла, тк пока будет рисовать красивые диаграммы бизнес-требования успеют десять раз поменяться.
Посему действуем по принципу - "быстро шьем и еще быстрее распарываем", а для этого нужны unit test'ы, иначе далеко не уедем с ручным тестированием
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001904
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i-100, Данилка вещает, как всегда о вещах не имея ни малейшего представления о них.
Данилка вещает о вещах, имея шикарное представление о них.
Слыхал о таком парне под именем Joel Spolsky? Давай посмотрим на "Разоблачение юнит-тестов и TDD в частности": 9690683

МСУРазоблачение юнит-тестов и TDD в частности.
Юнит тесты и TDD
Основной упор сделан на то, что юнит-тесты - бесполезная штука. Модная, но бесполезная.
Лично я согласен с автором.

РазоблачениеВ очередной раз Joel Spolsky, автор отличных книг из серии Joel on Software и одноименного блога JoelOnSoftware, написал потрясающую статью . В этот раз он рассуждает про Test Driven development и, как обычно, делает это без всякого уважения к авторитетам и современным тенденциям.
Должен признаться, что моё отношение к TDD в точности совпадает с тем, что он описал в этой статье. И это радует и успокаивает.
Попробую в этой статье раскрыть мое отношение к юнит тестам и TDD.

... читаем дальше :)

iОсновные аргументы сторонников TDD - заказчик не готов платить за полное обследование и проектирование по науке или это не имеет смысла, тк пока будет рисовать красивые диаграммы бизнес-требования успеют десять раз поменяться.
Поверь мне, TDD нисколько не ускоряет работу без полного обследование, которое является, вообще-то, аналитической работой. Ты вообще не в тему приплёт сюда обследование, клоун

iПосему действуем по принципу - "быстро шьем и еще быстрее распарываем", а для этого нужны unit test'ы, иначе далеко не уедем с ручным тестированием
Жесть. Ты хоть раз когда-нибудь хоть один тест написал?
С тестами априори быстрее не сошьешь ))
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001922
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУi-100, Данилка вещает, как всегда о вещах не имея ни малейшего представления о них.
Данилка вещает о вещах, имея шикарное представление о них.
Слыхал о таком парне под именем Joel Spolsky? Давай посмотрим на "Разоблачение юнит-тестов и TDD в частности": 9690683

МСУРазоблачение юнит-тестов и TDD в частности.
Юнит тесты и TDD
Основной упор сделан на то, что юнит-тесты - бесполезная штука. Модная, но бесполезная.
Лично я согласен с автором.

пропущено...


... читаем дальше :)

iОсновные аргументы сторонников TDD - заказчик не готов платить за полное обследование и проектирование по науке или это не имеет смысла, тк пока будет рисовать красивые диаграммы бизнес-требования успеют десять раз поменяться.
Поверь мне, TDD нисколько не ускоряет работу без полного обследование, которое является, вообще-то, аналитической работой. Ты вообще не в тему приплёт сюда обследование, клоун

iПосему действуем по принципу - "быстро шьем и еще быстрее распарываем", а для этого нужны unit test'ы, иначе далеко не уедем с ручным тестированием
Жесть. Ты хоть раз когда-нибудь хоть один тест написал?
С тестами априори быстрее не сошьешь ))

Муся, не переживай за меня. Их другие пишут.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37001992
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А у меня нет авторитетов. Спольски умный мужик, но никто не может быть прав на 100%. А иногда его можно понять не так, как хотел бы сам Спольски, чтобы его понимали. По поводу тестов - нужно золотая середина. Каждый проект имеет ее свою. Товарищи, не превращайте тред в флуд, если хотите пообщаться между собой - пишите друг другу письма.

_andrews_. , извиняюсь, если инициатором флуда был я. По поводу фреймворков еще раз хочу сказать, что в принципе любой из них придется допиливать, потому особой разницы в выборе нет. Главное выбрать тот, что проще будет восприниматься вами. Ну а лучше своего фреймворка ничего быть не может ;)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002062
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhА у меня нет авторитетов. Спольски умный мужик, но никто не может быть прав на 100%. А иногда его можно понять не так, как хотел бы сам Спольски, чтобы его понимали. По поводу тестов - нужно золотая середина.
О том и речь. Просто радуют некоторые товарищи, которые кричат "Тесты - наше всё!". Хочется сразу спросить у товарищей - "А ты тесты-то когда-нить писал? И?"
Лично моё имхо, основанное на практике:

Тесты хороши на конкретных выделенных участках кода, которые имеет нестандартную (нетривиальную) логику. Во всех остальных случаях тесты не представляют никакого интереса.

Выбирать паттерн проектирования систем ради тестов - параноя.

Описывать поведение гуя на отдельный класс (полноценная реализация "модель-представление") - идиотизм. Единстенный плюс - тесты. Про тесты уже сказал - нахер не нужны (за исключением ряда случаев). Именно поэтому писать велосипед на MVVM паттерне - садомазохизм. Лишаемся чудестной кодогенерации вида Code Behind и умираем (тонем, гибнем, тратим время) в классе, описывающим полностью поведение представления. А на вопрос "А нахер оно мне нужно?" ответить-таки никто не может.

Для тестирования софта: применение ручного тестирования и применение тестирования роботом (с разработкой реального подробного документа - тест-плана) - гуд прэкстис.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002100
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут выкладывал семпл паттерна, который реально может быть съедобен во всех приложениях WPF или SL. 9898671
Примерно тоже самое, о чём говорит Дениска.
Есть так называемая "модель", которая может стыковаться с декларативным XAML и его Code Вehind. В Code Вehind есть события и вызовы, в которых мы ссылаемся на "модель". Тем самым "модель" - это как-бы ядро, которое можно оторвать и запустить на том же ASP.NET и WinForms с незначительными изменениями. Описывать же всю логику представления в отдельном классе - идиотизм и трата времени, особенно гиблое это дело для достаочно сложных гуев.
Поэтому имея контроллер (пусть им будет кодогенерированный Code Вehind) - то, что доктор прописал.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002313
МСУ,

флуд конечно задрал, но ИМХО i предлагал решение покрасивее..
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002347
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мимо_пробегал_МСУ, флуд конечно задрал, но ИМХО i предлагал решение покрасивее..
Ну я как-бы уже дал комментарии по поводу MVVM.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002485
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУВот тут выкладывал семпл паттерна, который реально может быть съедобен во всех приложениях WPF или SL. 9898671
Примерно тоже самое, о чём говорит Дениска.
Есть так называемая "модель", которая может стыковаться с декларативным XAML и его Code Вehind. В Code Вehind есть события и вызовы, в которых мы ссылаемся на "модель". Тем самым "модель" - это как-бы ядро, которое можно оторвать и запустить на том же ASP.NET и WinForms с незначительными изменениями. Описывать же всю логику представления в отдельном классе - идиотизм и трата времени, особенно гиблое это дело для достаочно сложных гуев.
Поэтому имея контроллер (пусть им будет кодогенерированный Code Вehind) - то, что доктор прописал.

Ура!!! Таки свершилось и Мустафа осчастливил нас в очередной раз, осознал необходимость в Model и открыл Америку, что она может использоваться где угодно.
За незнание названия паттерна, огрызки которого ты продемострировал снимаю один бал.
Еще один за невнятное название метода(Init) для загрузки данных.
-1 за magic string в базовом классе.
-1 за эту лапшу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using SLMemLeek.Views.Models;

namespace SLMemLeek
{
    public partial class Home : Page
    {
        public Home()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Модель
        /// </summary>
        public CategoryListModel Model
        {
            get
            {
                return DataContext as CategoryListModel;
            }
        }

        // Executes when the user navigates to this page.
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            Model.Init();
        }

        /// <summary>
        /// Удаление категории
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnRemove_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            //var category = gridCategories.SelectedItem as CategoryEx;
            //if (category != null)
            //{
            //    if (MessageBox.Show("Вы действительно хотите удалить категорию?", "Удаление", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
            //    {
            //        Model.Remove(category.CategoryID.Value);
            //    }
            //}
        }

        /// <summary>
        /// Создать
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            //Navigate.ToCategoryEdit();
        }

        /// <summary>
        /// Изменить
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnEdit_Click(object sender, RoutedEventArgs e)
        {
            //var category = gridCategories.SelectedItem as CategoryEx;
            //if (category != null)
            //{
            //    Navigate.ToCategoryEdit(category.CategoryID.Value);
            //}
        }

        // <summary>
        /// Навигация к карточке категории
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnNavigateToView(object sender, RoutedEventArgs e)
        {
            //Navigate.ToCategoryView(((sender as FrameworkElement).DataContext as CategoryEx).CategoryID.Value);
        }
    }
}
Дальше лениво ковыряться и так достаточно.
Итого -твердый кол.
Чтобы исправить оценку, подготовь обзорный реферат по фреймворкам для работы с Model.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002540
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iУра!!! Таки свершилось и Мустафа осчастливил нас в очередной раз, осознал необходимость в Model и открыл Америку, что она может использоваться где угодно.
Как говорили деды - зри в корень. Но Сева никогда не следовал этим инструкциям, поэтому его лоб стал походить на кирпичную кладь. Ужасное зрелище.
Суть высказывания была не в том, что Model можно где угодно использовать, а в том, что в нее не нужно закладывать поведение представления, которое нам навязывает MVVM. Уловил разницу? Тогда присаживайся, на сегодня твой мозг получил и так уже много информации. Завтра продолжим.

iЗа незнание названия паттерна, огрызки которого ты продемострировал снимаю один бал.
За слепоту ты уволен из рядов вещателей правды о SL:

МСУТам не используется паттерн MVVM

9899001

iЕще один за невнятное название метода(Init) для загрузки данных.
Да, верно. Нужно было так: SeVaDegradatedCommit(). Буду в следующий раз предусмотрительней.

i-1 за magic string в базовом классе.
В каком именно? Где стринг?

P.S. Как всегда - белый шум и сопение... Не конкретики, ни дела. Сплошное незнание ни теории, ни практики. Ты только еще вчера мембершип освоил и пишал, что идентити это зло - рано тебе про MVVM басни читать. Уйди в угол.

iДальше лениво ковыряться и так достаточно.
В чем ковыряться? Ты в терминах путаешься и блещешь слабоумием (про тесты поржал сегодня), о каком ковырянии речь?

iЧтобы исправить оценку, подготовь обзорный реферат по фреймворкам для работы с Model.
Прими благодетель и покойся с миром. Гроб - твой верный друг в этой жизни. Мы будем помнить о тебе и твоих маразмах.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002683
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Мусик, перекладывать логику представления в модель - это твой очередной шедевр. Поздравляю, до такого бреда еще никто не додумался.

ЗЫ Разработкой в минимальный сроки в этом лапшекоде даже отдаленно не пахнет. Берем лопату и тупо копаем.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002710
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУi-1 за magic string в базовом классе.
В каком именно? Где стринг?

P.S. Как всегда - белый шум и сопение... Не конкретики, ни дела.


Утомительно все тебе разжевывать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public ObservableCollection<CategoryEx> Items
        {
            get
            {
                return items;
            }
            set
            {
                items = value;
                NotifyPropertyChanged("Items"); 
            }
        }


"Items" - magic string
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002722
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i"Items" - magic stringВ принципе да, но как еще обратиться к имени свойства, не перегружая код хитровывернутыми референсами?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002732
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i-1 за magic string в базовом классе
iУтомительно все тебе разжевывать
Милок, а где, собственно, базовый класс? Ты или часто ударяешься головой, либо одно из двух, но базовый класс - это BaseModel. И в нем нет "magic string".
Во-вторых, ты мне предлагаешь вылизывать тестовый код? Ты либо реально в вакууме, либо ты просто не в состоянии сформулировать более достойные и осмысленные вещи.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002750
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i seeно как еще обратиться к имени свойства, не перегружая код хитровывернутыми референсами?
Через отдельный хелпер енумов или констант сущностей.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002771
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
see

Классический подход в виде имплемента:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
public class Product
{
    public class Properties
    {
        public const string ProductId = "ProductId";
        public const string ProductName = "ProductName";
        public const string Category = "Category";

        private Properties() { }
    }

    public Product()
    {
    }

    public Product(string productName, Category category)
    {
        ProductName = productName;
        Category = category;
    }

    public virtual int ProductId { get; set; }
    public virtual string ProductName { get; set; }
    public virtual Category Category { get; set; }
}
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002783
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Концептуально.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002823
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
i seei"Items" - magic stringВ принципе да, но как еще обратиться к имени свойства, не перегружая код хитровывернутыми референсами?

Вариантов много. Один из самых распространенных - через лямбды.
Самый простой, короткий и универсальный - базовый класс с наследованием от DynamicObject
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002833
студент51
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ii seeпропущено...
В принципе да, но как еще обратиться к имени свойства, не перегружая код хитровывернутыми референсами?

Вариантов много. Один из самых распространенных - через лямбды.
Самый простой, короткий и универсальный - базовый класс с наследованием от DynamicObject
а можно сампл простенький обоих вариантов, ну или линк где можно почитать?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002850
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iВариантов много.
С десяток покажешь?

iОдин из самых распространенных - через лямбды.
Ну давай, покажи через "лямбды", чего воздух трясти.

iСамый простой, короткий и универсальный - базовый класс с наследованием от DynamicObject
Сынок, DynamicObject появился только вчера еще. И как же ты это раньше наследовался от DynamicObject, поведай миру?
P.S. Показывай пример с DynamicObject.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002851
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
студент51iпропущено...


Вариантов много. Один из самых распространенных - через лямбды.
Самый простой, короткий и универсальный - базовый класс с наследованием от DynamicObject
а можно сампл простенький обоих вариантов, ну или линк где можно почитать?

первая ссылка, которая попалась под руку . Где-то встречал сравнительный анализ вариантов 5. Если найду, то дам ссылку
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002864
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУiВариантов много.
С десяток покажешь?

iОдин из самых распространенных - через лямбды.
Ну давай, покажи через "лямбды", чего воздух трясти.

iСамый простой, короткий и универсальный - базовый класс с наследованием от DynamicObject
Сынок, DynamicObject появился только вчера еще. И как же ты это раньше наследовался от DynamicObject, поведай миру?
P.S. Показывай пример с DynamicObject.
На нем мы уже проект сдали
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002870
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iНа нем мы уже проект сдали
Я не спрашиваю у тебя про твой проект, я спрашиваю:
МСУПоказывай пример с DynamicObject
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37002920
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУiВариантов много.
С десяток покажешь?

iОдин из самых распространенных - через лямбды.
Ну давай, покажи через "лямбды", чего воздух трясти.

iСамый простой, короткий и универсальный - базовый класс с наследованием от DynamicObject
Сынок, DynamicObject появился только вчера еще. И как же ты это раньше наследовался от DynamicObject, поведай миру?
P.S. Показывай пример с DynamicObject.
Я тоже как-то писал вариант с люмбдами тут http://outcoldman.ru/ru/blog/show/250
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003014
iНа нем мы уже проект сдали

немного офтопа.. часом не ASIC?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003179
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis GladkikhЯ тоже как-то писал вариант с люмбдами тут http://outcoldman.ru/ru/blog/show/250

Так это ты бочки катишь на MVVM! Не помню точно у кого(кажется, из MS), тоже есть ряд статей с критикой MVVM в пользу MVP.
PS Блог знакомый. До этого читал твои статьи.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003258
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iDenis GladkikhЯ тоже как-то писал вариант с люмбдами тут http://outcoldman.ru/ru/blog/show/250

Так это ты бочки катишь на MVVM! Не помню точно у кого(кажется, из MS), тоже есть ряд статей с критикой MVVM в пользу MVP.
PS Блог знакомый. До этого читал твои статьи.Статьи Дениса и на MSDN есть. Неужели в MSDN допускают критику MVVM?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003318
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
В Prism крамолы еще больше. Кроме MVP есть еще Application Controller.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003359
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iСамый простой, короткий и универсальный - базовый класс с наследованием от DynamicObject
хм...звучит интригующе, но вообразить крайне трудно...
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003360
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhМСУпропущено...

С десяток покажешь?

пропущено...

Ну давай, покажи через "лямбды", чего воздух трясти.

пропущено...

Сынок, DynamicObject появился только вчера еще. И как же ты это раньше наследовался от DynamicObject, поведай миру?
P.S. Показывай пример с DynamicObject.
Я тоже как-то писал вариант с люмбдами тут http://outcoldman.ru/ru/blog/show/250

денис, так и должно быть в последнем примере у вас в статье
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003368
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LRiСамый простой, короткий и универсальный - базовый класс с наследованием от DynamicObject
хм...звучит интригующе, но вообразить крайне трудно...
в SL вроде нет байдинга к DynamicObject, а вот в WPF вроде есть.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003369
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и второе, Денис, тебе не кажется, что это перебор строить такие конструкции вокруг двух контролов валидации?
Если же это академический пример то согласен, сносно, но если так пишутся приложения.....?! Кхм...
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003372
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ProgaDenis Gladkikhпропущено...

Я тоже как-то писал вариант с люмбдами тут http://outcoldman.ru/ru/blog/show/250

денис, так и должно быть в последнем примере у вас в статье
Да, я это уже видел. Там нужно просто проверку совпадения паролей прикрутить к обоим контролам. а не только ко второму (что логично, так как оба влияют на валидацию).
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003375
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Progaи второе, Денис, тебе не кажется, что это перебор строить такие конструкции вокруг двух контролов валидации?
Если же это академический пример то согласен, сносно, но если так пишутся приложения.....?! Кхм...
Не понял, про какие конструкции идет речь? Что-то избыточное?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003380
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhProgaи второе, Денис, тебе не кажется, что это перебор строить такие конструкции вокруг двух контролов валидации?
Если же это академический пример то согласен, сносно, но если так пишутся приложения.....?! Кхм...
Не понял, про какие конструкции идет речь? Что-то избыточное?
дело не в избыточности, а в самом подходе, вы действительно применяете такие подходы для валидации 2 контролов. А если их пару сотен на форме тоже будете писать так валидацию?

Или принципиально не пользуетесь проверкой валидности сервером?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003382
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причем я имею ввиду проверку любой валидности, не только совпадение значений, как в вашем примере, а вообще. Для вашего случая, я согласен, сервер не нужен, я же интересуюсь о проверки любой валидности.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003399
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ProgaПричем я имею ввиду проверку любой валидности, не только совпадение значений, как в вашем примере, а вообще. Для вашего случая, я согласен, сервер не нужен, я же интересуюсь о проверки любой валидности.
Не пойму к чему клоните? А вы что не используете для этого валидаторы? Да, я все валидирую как на клиенте так и на сервере. Прикрутить несколько аттрибутов в простом случае, либо написать метод в сложном случае - не вижу проблемы.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003464
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis GladkikhLRпропущено...

хм...звучит интригующе, но вообразить крайне трудно...
в SL вроде нет байдинга к DynamicObject, а вот в WPF вроде есть.

Да в SL нужно извращаться или через индексируемые свойства, или конвертеры
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003475
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
[Display(Name = "New password confirmation")]
public string NewPasswordConfirmation
{    get { return _newPasswordConfirmation; }   
 set    {        _newPasswordConfirmation = value;      
  OnPropertyChanged("NewPasswordConfirmation");        
 _validationHandler.ValidateRule("NewPasswordConfirmation", "Password confirmation not equal to password.",                                       
 () => string.CompareOrdinal(_newPassword, value) ==  0 );         ChangePasswordCommand.RaiseCanExecuteChanged();    
}}

Денис, у меня тоже вопросы. Как при таком подходе можно использовать кодогенераторы или другие тулзы для моделирования? Правил может быть много.
Если сделать общий вариант а'la ValidateRules("PropertyName") и предоставить интерфейс с необходимыми методами,то можно задавать правила отдельно, делать их асинхронными и зависимыми от других свойств, использовать сторонние валидаторы и тд
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003611
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iСамый простой, короткий и универсальный - базовый класс с наследованием от DynamicObject
iДа в SL нужно извращаться или через индексируемые свойства, или конвертеры

Сева, нужны еще комментарии того, что ты певец оперного театра?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003621
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
[Display(Name = "New password confirmation")]
public string NewPasswordConfirmation
{    get { return _newPasswordConfirmation; }   
 set    {        _newPasswordConfirmation = value;      
  OnPropertyChanged("NewPasswordConfirmation");        
 _validationHandler.ValidateRule("NewPasswordConfirmation", "Password confirmation not equal to password.",                                       
 () => string.CompareOrdinal(_newPassword, value) ==  0 );         ChangePasswordCommand.RaiseCanExecuteChanged();    
}}

Денис, у меня тоже вопросы. Как при таком подходе можно использовать кодогенераторы или другие тулзы для моделирования? Правил может быть много.
Если сделать общий вариант а'la ValidateRules("PropertyName") и предоставить интерфейс с необходимыми методами,то можно задавать правила отдельно, делать их асинхронными и зависимыми от других свойств, использовать сторонние валидаторы и тд

Я не понимаю к чему вы клоните. Я не использую кодогенераторы. Но, захотите использовать, то я проблем не вижу, не больше чем в других подходах.

"можно задавать правила отдельно" - можно задавать правила отдельно, более того я так и делаю
"делать их асинхронными" - можно делать и так, в чем проблема?
"зависимыми от других свойств" - ну отлично, один из примеров это показывает, сравниваем два поля.
"использовать сторонние валидаторы" - а тут какие проблемы? конечно можно использовать
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003646
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis GladkikhЯ не понимаю к чему вы клоните. Я не использую кодогенераторы. Но, захотите использовать, то я проблем не вижу, не больше чем в других подходах.

"можно задавать правила отдельно" - можно задавать правила отдельно, более того я так и делаю


На мой скромный взгляд, правила не можно, а нужно задавать только отдельно. Иначе при повторной генерации модели они исчезнут
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003665
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iDenis GladkikhЯ не понимаю к чему вы клоните. Я не использую кодогенераторы. Но, захотите использовать, то я проблем не вижу, не больше чем в других подходах.

"можно задавать правила отдельно" - можно задавать правила отдельно, более того я так и делаю


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

Что? О генерации какой модели идет речь? Правила описываются во ViewModel/PresentationModel, а не в модели.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003691
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis Gladkikhiпропущено...


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

Что? О генерации какой модели идет речь? Правила описываются во ViewModel/PresentationModel, а не в модели.

Понятно. Каким образом? При решении в лоб, Presenter превращается в wrapper модели, получается слишком многословно, его обязательно нужно создавать(обобщенного варианта не будет).
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003708
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iDenis Gladkikhпропущено...


Что? О генерации какой модели идет речь? Правила описываются во ViewModel/PresentationModel, а не в модели.

Понятно. Каким образом? При решении в лоб, Presenter превращается в wrapper модели, получается слишком многословно, его обязательно нужно создавать(обобщенного варианта не будет).

Честно, мне сложно с вами разговаривать, вы скачете от вопроса к вопросу, не давая разобраться в сути вопроса. Правильно ли я понимаю, что вы говорите о том, чтобы осуществлять байдинг сразу к моделям, которые генерирует EF/Linq-To-SQL/WCFServices (нужное подчеркнуть), а Presenter/ViewModel должен просто тупо возвращать этот объект? Сразу скажу, что подход просто нереально ужасный, разрабатывая так руководствуются только ленью.
По вашему принципу View это тоже wrapper над Моделью.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003847
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis Gladkikhiпропущено...


Понятно. Каким образом? При решении в лоб, Presenter превращается в wrapper модели, получается слишком многословно, его обязательно нужно создавать(обобщенного варианта не будет).

Честно, мне сложно с вами разговаривать, вы скачете от вопроса к вопросу, не давая разобраться в сути вопроса. Правильно ли я понимаю, что вы говорите о том, чтобы осуществлять байдинг сразу к моделям, которые генерирует EF/Linq-To-SQL/WCFServices (нужное подчеркнуть), а Presenter/ViewModel должен просто тупо возвращать этот объект? Сразу скажу, что подход просто нереально ужасный, разрабатывая так руководствуются только ленью.
По вашему принципу View это тоже wrapper над Моделью.

Да, я подразумеваю именно самый простой и тупой вариант, когда Presenter/ViewModel имеют только Model, а не его свойства. Хороший программист - ленивый программист, кода так значительно мешьше. Чем нереально ужасен вариант такой вариант?

ЗЫ Просьба без лишних эмоций, не будем уподобляться MCУ. Я не вижу в варианте валидации в Presenter/ViewModel простых решений без лишних телодвижений, посему и спрашиваю
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003872
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iDenis Gladkikhпропущено...


Честно, мне сложно с вами разговаривать, вы скачете от вопроса к вопросу, не давая разобраться в сути вопроса. Правильно ли я понимаю, что вы говорите о том, чтобы осуществлять байдинг сразу к моделям, которые генерирует EF/Linq-To-SQL/WCFServices (нужное подчеркнуть), а Presenter/ViewModel должен просто тупо возвращать этот объект? Сразу скажу, что подход просто нереально ужасный, разрабатывая так руководствуются только ленью.
По вашему принципу View это тоже wrapper над Моделью.

Да, я подразумеваю именно самый простой и тупой вариант, когда Presenter/ViewModel имеют только Model, а не его свойства. Хороший программист - ленивый программист, кода так значительно мешьше. Чем нереально ужасен вариант такой вариант?

ЗЫ Просьба без лишних эмоций, не будем уподобляться MCУ. Я не вижу в варианте валидации в Presenter/ViewModel простых решений без лишних телодвижений, посему и спрашиваю

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

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

В общем, я видел такой подход в одном из проектов. И могу сказать 100%, лучше я не поленюсь сейчас и сделаю с правильной архитектурой, а не буду мучиться потом со всякими мелкими проблемами.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003888
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhПолучается, в таких случаях нужно делать копию объекта, а потом уметь обновлять основной объект из копии. Либо при отмене постоянно перегружать коллекцию.
Я в таком случае использую свои отдельные свойства (на них и работает байдинг), на которые маппятся данные при инициализации модели.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003893
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУпри инициализации вью-модели.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003967
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
[quot Denis GladkikhПроблемы будут разные. Сложнее поддерживать конструкцию, иногда не всегда можно будет осуществить байдинг именно на свойство модели, потому логика будет расплываться, что где-то будет осуществляться байдинг на модель, а где-то на свойство ViewModel.

[/quot]

В варианте с базовым классом - DynamicObject таких проблем нет. Динамически добавляем нужные и все в одном месте.

Denis GladkikhЕще стандартный вариант. Есть список и есть контрол для редактирования сущности. Пользователь начинает редактировать сущность, а потом нажимает отмена (вместо сохранить), а в нашу модель уже записались все данные. Более того, когда пользователь начинает редактировать, то он уже видит изменения и в списке, что не очень-то хорошо. Получается, в таких случаях нужно делать копию объекта, а потом уметь обновлять основной объект из копии. Либо при отмене постоянно перегружать коллекцию.
В общем, я видел такой подход в одном из проектов. И могу сказать 100%, лучше я не поленюсь сейчас и сделаю с правильной архитектурой, а не буду мучиться потом со всякими мелкими проблемами

Если Undo\Redo реализовывать в Presenter, то это еще одно усложнение и так перегруженного варианта. Принципам единичной ответственности это не отвечает. Если модель предоставляет нужные интерфейсы(валидация, отмена), можно создать необходимый набор обобщенных базовых классов Presenter\ViewModel, тогда во многих случаях их ненужно будет задавать явно в коде и не мучиться с мелкими проблемами совсем
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37004267
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iDenis GladkikhПроблемы будут разные. Сложнее поддерживать конструкцию, иногда не всегда можно будет осуществить байдинг именно на свойство модели, потому логика будет расплываться, что где-то будет осуществляться байдинг на модель, а где-то на свойство ViewModel.

В варианте с базовым классом - DynamicObject таких проблем нет. Динамически добавляем нужные и все в одном месте.
Было бы интересно более подробно узнать об этом варианте (с DynamicObject), можете привести какой-нибудь конкретный (и показательный) пример?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37004386
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
LRiпропущено...


В варианте с базовым классом - DynamicObject таких проблем нет. Динамически добавляем нужные и все в одном месте.
Было бы интересно более подробно узнать об этом варианте (с DynamicObject), можете привести какой-нибудь конкретный (и показательный) пример?

У меня все в комплексе, показывать отдельно DynamicObject будет непоказательно. Сделаю рефакторинг по результатам проекта, тогда, может, выложу на codeplex.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37005481
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так приходит слава :)
Всё же фильтруйте следите за лексикой, коллеги. Нас читает мир.

http://outcoldman.ru/ru/blog/show/261
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37005624
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Вах!! Нашу палату №6 прописали в стенгазете ;-)

авторОтступление: Вообще, впечатления от форума sql.ru пока такие, что в любом треде начинается просто бестолковый флуд о том хорошо Silverlight или нет

Более внимательно перечитал аргументы против MVVM, еще больше они стали неочевидны.

авторВ большинстве случаев реализации MVVM паттерна модель представления имеет очень много причин для изменений. Если нам нужно на представлении поменять немного логику,

View(если я правильно понимаю, тяжело воспринимать русские аналоги, которых не существует за отсутствием литературы) в MVVM логики не имеет.

автор использовать другое связывание данных,

что под этим подразумевается совершенно непонятно
авторто, скорее всего, нужно будет менять и логику в модели представления. Если поменялась модель, то нужно менять за ней и модель представления.
совершенно не обязательно, если Model - отдельное свойство в ViewModel

автор Одни из самых важных принципов разработки – это «разделение ответственности» (Seperation of Concerns) и «принцип единственной ответственности» (Single Responsibility Principle). В случае модели представления эти принципы нарушены.

Данную проблему можно решить, вернувшись обратно к паттерну MVP с небольшими доработками. Основой этих доработок будет являться облегченная версия модели представления, описанной Мартином Фаулером.

статья Фаулера, на мой вгзляд, совершенно не к месту. Xaml позволяет иметь в таких случаях два отдельных MVVM без всякой взаимосвязи, что гораздо проще и внятней.

автор В данном случае эта модель представления возьмет на себя только задачу связывания данных, и в некоторых случаях их валидацию. В результате у нас будет презентатор, который будет выполнять действия по запросу пользователя, модель представления, которая будет связывать данные с представлением, само представление, а так же модель. Каждый компонент фокусируется на более специфичных задачах вместо охвата нескольких, что дает нам, например, преимущества в написании тестов. Данный подход не только делает код более читабельным и классы более сфокусированными,

В таком случае мы будем иметь только нарушение принципов.
Обычно в MVVM Моdel отвечает за валидацию, а VM за логику. Это и делает их более простыми и сфокусированными.

автортак же у нас появляется возможность использовать облегченную версию модели представления сразу на нескольких представлениях
VM совершенно не зависит от VIew, сооветственно последних может быть сколько угодно
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37005736
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i,

давайте не будем засорять "стенгазету", если действительно интересно про это поговорить напишите мне email и мы это обсудим ;)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37005752
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Gladkikhi,

давайте не будем засорять "стенгазету", если действительно интересно про это поговорить напишите мне email и мы это обсудим ;)Денис, давайте уж здесь, зачем переводить в приват интересное обсуждение.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37005794
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i seeDenis Gladkikhi,

давайте не будем засорять "стенгазету", если действительно интересно про это поговорить напишите мне email и мы это обсудим ;)Денис, давайте уж здесь, зачем переводить в приват интересное обсуждение.

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

Я не могу понять, например, этого предложения "View(если я правильно понимаю, тяжело воспринимать русские аналоги, которых не существует за отсутствием литературы) в MVVM логики не имеет." Как не имеет? Какой логики? View это часть паттерна.

iавториспользовать другое связывание данных,

что под этим подразумевается совершенно непонятно

я не понимаю откуда вырван контекст и что здесь обсуждается.

iсовершенно не обязательно, если Model - отдельное свойство в ViewModel
я говорил, что не принимаю эту реализацию, она ужасна. может быть в отдельных проектах, и то вряд ли.

iстатья Фаулера, на мой вгзляд, совершенно не к месту. Xaml позволяет иметь в таких случаях два отдельных MVVM без всякой взаимосвязи, что гораздо проще и внятней.

Здесь я тоже не понимаю связи этого предложения с моим высказыванием. Причем тут то, что XAML может иметь два отдельных MVVM, я говорил именно про разделения функциональности для PresentationModel и Presenter. В случае ViewModel вся функциональность падает на один класс ViewModel. Если два класса ViewModel то по два класса PresentationModel и Presenter должно быть.


iВ таком случае мы будем иметь только нарушение принципов.
Обычно в MVVM Моdel отвечает за валидацию, а VM за логику. Это и делает их более простыми и сфокусированными.

Нет, это неверное толкование паттерна. ViewModel отвечает за связывание View и Model, но никак не за логику, и что подразумевается под логикой?


iVM совершенно не зависит от VIew, сооветственно последних может быть сколько угодно
Может быть в некоторых случаях, а так только на словах она не зависит. "Логически" она зависит на 90%.

i see я хочу перевести это в приват, чтобы нормально разобраться в вопросе, который здесь возник. Так мы разведем здесь разговор на несколько страниц ни к чему не приводящих. В привате я постараюсь понять мнение собеседника, и потом сделать вывод "отчет", который увидят все. Я могу признать что я где-то не прав, потому с удовольствием это обсужу, только в более "плановом" русле. Как хотите можно и тут все разобрать, только давайте как-то по пунктам, по темам, а не вырывая словосочетания из контекста.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37005797
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Gladkikh i see я хочу перевести это в приват, чтобы нормально разобраться в вопросе, который здесь возник....Как вам будет удобнее, Денис, мнение MVP для нас важно :) Но по результатам разбора полётов всё же прошу вас отписаться тут, если не затруднит.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37005844
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Gladkikh i see я хочу перевести это в приват, чтобы нормально разобраться в вопросе, который здесь возник. Так мы разведем здесь разговор на несколько страниц ни к чему не приводящих. В привате я постараюсь понять мнение собеседника, и потом сделать вывод "отчет", который увидят все.
i, ты же SeVa, ты же Silverlight, ты же "..." - (наш тебе наказ) мы, посетители энтого хворума, призываем тебя - будь с энтим парнем "Denis Gladkikh" - компетентен, комплиментарен, контактуарен, т.е., будь три "К"!!! (мы полагаемся на тебя) - и да подможет тебе Silverlight!
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37005905
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhПравильно ли я понимаю, что вы говорите о том, чтобы осуществлять байдинг сразу к моделям, которые генерирует EF/Linq-To-SQL/WCFServices (нужное подчеркнуть), а Presenter/ViewModel должен просто тупо возвращать этот объект? Сразу скажу, что подход просто нереально ужасный, разрабатывая так руководствуются только ленью.
По вашему принципу View это тоже wrapper над Моделью.Процитировал, чтобы освежить контекст. :-)

Сомнительно. Как говорилось выше, если модель довольно объёмна - будет уходить масса времени на "тупой" мэппинг значений свойств.

Denis GladkikhПроблемы будут разные. Сложнее поддерживать конструкцию, иногда не всегда можно будет осуществить байдинг именно на свойство модели, потому логика будет расплываться, что где-то будет осуществляться байдинг на модель, а где-то на свойство ViewModel.Непонятно, логика чего будет расплываться? Логика биндингов? А "конструкцию" поддерживать будет проще. Меньше изменений нужно будет вносить при изменении модели, одним слоем будет меньше. А все возникающие сложности решаются дописыванием в partial class модели.

Denis GladkikhЕще стандартный вариант. Есть список и есть контрол для редактирования сущности. Пользователь начинает редактировать сущность, а потом нажимает отмена (вместо сохранить), а в нашу модель уже записались все данные. Более того, когда пользователь начинает редактировать, то он уже видит изменения и в списке, что не очень-то хорошо. Получается, в таких случаях нужно делать копию объекта, а потом уметь обновлять основной объект из копии. Либо при отмене постоянно перегружать коллекцию.А в любом случае придётся делать запрос к модели после сохранения записи, чтобы получить значения, вычисляемые в сервисах модели. И не "обновлять основной объект", а "заменить основной объект вновь полученным". И проблемы тут нет. Всё это легко выносится в базовые классы и в прикладном коде не присутствует.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37005973
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhЯ не могу понять, например, этого предложения "View(если я правильно понимаю, тяжело воспринимать русские аналоги, которых не существует за отсутствием литературы) в MVVM логики не имеет." Как не имеет? Какой логики? View это часть паттерна.
Всё правильно, в представлении нет логики, какие тут могут быть еще вопросы, Дениска? :)

Denis Gladkikhiсовершенно не обязательно, если Model - отдельное свойство в ViewModel
я говорил, что не принимаю эту реализацию, она ужасна. может быть в отдельных проектах, и то вряд ли.
В чем Вы видите подвох, если модель будет опубликована во вьюмодели в качестве проперти? Что ужасного? ))

Denis Gladkikhя говорил именно про разделения функциональности для PresentationModel и Presenter. В случае ViewModel вся функциональность падает на один класс ViewModel. Если два класса ViewModel то по два класса PresentationModel и Presenter должно быть.
Мне единственное, что не устраивает в MVVM - это описание работы модели во вьюмодели (в том чисте и событийная часть). Лишаемся замечательного Code Behind, пляшем с бубнами в классе-описателе для решения банального поведения гуя. Маразм. MVVM несъедобен в принципе.

Denis GladkikhНет, это неверное толкование паттерна. ViewModel отвечает за связывание View и Model, но никак не за логику, и что подразумевается под логикой?
+1
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37005979
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМне единственное, что не устраивает в MVVM - это описание работы модели и представления во вьюмодели (в том чисте и событийная часть).

P.S. Да чтож такое, руки кривят с утра :)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37006157
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУDenis GladkikhЯ не могу понять, например, этого предложения "View(если я правильно понимаю, тяжело воспринимать русские аналоги, которых не существует за отсутствием литературы) в MVVM логики не имеет." Как не имеет? Какой логики? View это часть паттерна.
Всё правильно, в представлении нет логики, какие тут могут быть еще вопросы, Дениска? :)

Denis Gladkikhпропущено...

я говорил, что не принимаю эту реализацию, она ужасна. может быть в отдельных проектах, и то вряд ли.
В чем Вы видите подвох, если модель будет опубликована во вьюмодели в качестве проперти? Что ужасного? ))

Denis Gladkikhя говорил именно про разделения функциональности для PresentationModel и Presenter. В случае ViewModel вся функциональность падает на один класс ViewModel. Если два класса ViewModel то по два класса PresentationModel и Presenter должно быть.
Мне единственное, что не устраивает в MVVM - это описание работы модели во вьюмодели (в том чисте и событийная часть). Лишаемся замечательного Code Behind, пляшем с бубнами в классе-описателе для решения банального поведения гуя. Маразм. MVVM несъедобен в принципе.

Denis GladkikhНет, это неверное толкование паттерна. ViewModel отвечает за связывание View и Model, но никак не за логику, и что подразумевается под логикой?
+1
В кои-то веки у нас с MCУ совпали мнения аж по двум вопросам!!!
В последнем ребята глубоко ошибаются. VM содержит команды, а они во всех паттернах реализуют необходимую логику.
MVP всем хорош, за исключением одной немаловажной детали - наличием View в Presenter'e.
Это значительно все усложняет и делает неверным еще одно высказывание: "Presenter может использоваться для нескольких представлений". В 90% две основные задачи: показ списков; редактирование выбранной записи. С замечательными свойствами биндинга в WPF\SL это спокойно можно делать без ссылок на View в VM. C нелинейной навигацией, которая имеет больший функционал, чем одно диалоговое окно, можно обойтись без ChildView.
Отдельное свойство для Моdel широко используется в подавляющем большинстве фреймворков, тк граф объектов может быть очень развесистым(root->child->grandchild, etc) Делать его плоским - пустая трата времени и сил.Если вводить отдельные Presenter'ы для каждого объекта, то зачем тогда вообще нужна Моdel. Помимо этого в 90% можно обойтись без их явного создания, используя только их базовые классы.
У MVVM один недостаток - он перегружен. Все остальные аргументы неубедительны
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37006206
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iЕсли вводить отдельные Presenter'ы для каждого объекта, то зачем тогда вообще нужна Моdel. Помимо этого в 90% можно обойтись без их явного создания, используя только их базовые классы.
Модель нужна для байдинга, он очень вскусен. Ты, видимо, хотел сказать - вьюмодель. Да, я согласен, что можно без вьюмодели. Презентационного (Code Behind, по asp.net'овски) слоя вполне хватит. Но дело в том, что использование вьюмодели можно "гибче" адаптировать под твои любимые тесты (только ее логика, без событийной части). Событийную часть нефик тестить - для этого можно натравить робота. Во-вторых, с помощью вьюмодели можно гораздо с меньшими бубнами портировать проложение на другую платформу. Вызовы же юзать в соответствии со спецификой той платформы. А вот с MVVM ты не перенесешь вызовы со своими командами, ибо они не будут работать на том же ASP.NET или WinForms.
Это, кстати, опять один из огромных минусов MVVM. Вызовы должны быть специфичны в рамках используемой платформы.

iУ MVVM один недостаток - он перегружен. Все остальные аргументы неубедительны
Выше я озвучил еще недостаток.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37006236
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУiЕсли вводить отдельные Presenter'ы для каждого объекта, то зачем тогда вообще нужна Моdel. Помимо этого в 90% можно обойтись без их явного создания, используя только их базовые классы.
Модель нужна для байдинга, он очень вскусен. Ты, видимо, хотел сказать - вьюмодель. Да, я согласен, что можно без вьюмодели. Презентационного (Code Behind, по asp.net'овски) слоя вполне хватит. Но дело в том, что использование вьюмодели можно "гибче" адаптировать под твои любимые тесты (только ее логика, без событийной части). Событийную часть нефик тестить - для этого можно натравить робота. Во-вторых, с помощью вьюмодели можно гораздо с меньшими бубнами портировать проложение на другую платформу. Вызовы же юзать в соответствии со спецификой той платформы. А вот с MVVM ты не перенесешь вызовы со своими командами, ибо они не будут работать на том же ASP.NET или WinForms.
Это, кстати, опять один из огромных минусов MVVM. Вызовы должны быть специфичны в рамках используемой платформы.

iУ MVVM один недостаток - он перегружен. Все остальные аргументы неубедительны
Выше я озвучил еще недостаток.

Нет, MCУ, ты меня не правильно понял. VM обязательно нужна для агрегации данных.
Вызовы конанд специфичны, а реализация логики в них спокойно может переноситься
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37006271
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iНет, MCУ, ты меня не правильно понял. VM обязательно нужна для агрегации данных.
Не в коей мере это не так. VM - это тупо абстракция представления.

Приложения WPF с шаблоном проектирования модель-представление-модель представления

MVVMОднако в этой статье я буду называть шаблон аббревиатурой MVVM, а абстракцию представления — моделью представления. В сообществах WPF и Silverlight такая терминология значительно более распространена.

И предлагаю не путаться в определениях. А то у нас в дискуссии каша какая-то.

iВызовы конанд специфичны, а реализация логики в них спокойно может переноситься
Сомнительно.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37006365
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУiНет, MCУ, ты меня не правильно понял. VM обязательно нужна для агрегации данных.
Не в коей мере это не так. VM - это тупо абстракция представления.

Приложения WPF с шаблоном проектирования модель-представление-модель представления

MVVMОднако в этой статье я буду называть шаблон аббревиатурой MVVM, а абстракцию представления — моделью представления. В сообществах WPF и Silverlight такая терминология значительно более распространена.

И предлагаю не путаться в определениях. А то у нас в дискуссии каша какая-то.

iВызовы конанд специфичны, а реализация логики в них спокойно может переноситься
Сомнительно.

Чтобы не путаться самый простой вариант - не вводить русских определений. Лично я, их совершенно не воспринимаю.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37006369
MVP валят! ну ничего святого не осталось!
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37006439
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iЧтобы не путаться самый простой вариант - не вводить русских определений. Лично я, их совершенно не воспринимаю.
Ок, вот описываю "мой" паттерн (сместь MVVM и MVP(C)):

НазваниеОписание View CategoryList.xaml ViewModel CategoryListModel.cs Model кодогенерация враппера WCF сервиса (Service References)Code BehindCategoryList.xaml.cs

View
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
<navigation:Page xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"  x:Class="SLNavi.Views.Categories.CategoryList" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
    xmlns:cnv="clr-namespace:SLNavi.Converters"
    xmlns:model="clr-namespace:SLNavi.Views.Categories.Models"
    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"
    Title="Категории"
    Style="{StaticResource PageStyle}">

    <navigation:Page.Resources>
        <cnv:NullableNotConverter x:Key="NullableNotConverter" />
    </navigation:Page.Resources>

    <navigation:Page.DataContext>
        <model:CategoryListModel />
    </navigation:Page.DataContext>

    <ScrollViewer x:Name="PageScrollViewer" Style="{StaticResource PageScrollViewerStyle}">

        <Grid x:Name="LayoutRoot">

            <Grid.RowDefinitions>
                <RowDefinition Height="70"/>
                <RowDefinition Height="30"/>
                <RowDefinition Height="3040*"/>
            </Grid.RowDefinitions>

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="200"/>
                <ColumnDefinition Width="200"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>

            <TextBlock x:Name="tbTitle" VerticalAlignment="Center" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3" Style="{StaticResource HeaderTextStyle}" Text="Категории"/>

            <Canvas Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3">
                <Button Name="btnAdd" Content="Создать" HorizontalAlignment="Left"  Width="75" Click="btnAdd_Click" />
                <Button Name="btnEdit" Content="Изменить" IsEnabled="{Binding ElementName=gridCategories, Path=SelectedItem, Mode=TwoWay, Converter={StaticResource NullableNotConverter}}" HorizontalAlignment="Left" Width="75" Canvas.Left="80" Canvas.Top="0" Click="btnEdit_Click" />
                <Button Name="btnRemove" Content="Удалить" IsEnabled="{Binding ElementName=gridCategories, Path=SelectedItem, Mode=TwoWay, Converter={StaticResource NullableNotConverter}}" HorizontalAlignment="Left" Width="75" Canvas.Left="160" Canvas.Top="0" Click="btnRemove_Click" />
            </Canvas>

            <sdk:DataGrid Name="gridCategories" ItemsSource="{Binding Items}" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="3" Height="auto" AutoGenerateColumns="False">
                <sdk:DataGrid.Columns>
                    <sdk:DataGridTextColumn Binding="{Binding CategoryID}" Width="Auto" Header="Код" IsReadOnly="True" />
                    <sdk:DataGridTextColumn Binding="{Binding CategoryName}" Width="SizeToCells" Header="Название" IsReadOnly="True" />
                    <sdk:DataGridTextColumn Binding="{Binding Description}" Width="SizeToCells" Header="Описание" IsReadOnly="True" />

                    <sdk:DataGridTemplateColumn Width="SizeToHeader" MaxWidth="20" IsReadOnly="True">
                        <sdk:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <HyperlinkButton Click="OnNavigateToView">
                                    <Image Source="/SLNavi;component/Resources/Images/ViewTable.png" ToolTipService.ToolTip="Просмотр" />
                                </HyperlinkButton>
                            </DataTemplate >
                        </sdk:DataGridTemplateColumn.CellTemplate >
                    </sdk:DataGridTemplateColumn>
                </sdk:DataGrid.Columns>
            </sdk:DataGrid>
        </Grid>
    </ScrollViewer>
</navigation:Page>


ViewModel
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
using System.Collections.ObjectModel;
using System.ComponentModel;
using SLNavi.SvcRef;

namespace SLNavi.Views.Categories.Models
{
    /// <summary>
    /// Модель для CategoryListModel
    /// </summary>
    public class CategoryListModel : BaseModel
    {       
        /// <summary>
        /// Набор данных
        /// </summary>
        private ObservableCollection<CategoryEx> items;
        /// <summary>
        /// Набор данных
        /// </summary>
        public ObservableCollection<CategoryEx> Items
        {
            get
            {
                return items;
            }
            set
            {
                items = value;
                NotifyPropertyChanged(() => this.Items);
            }
        }

        /// <summary>
        /// Инициализация модели
        /// </summary>
        public void Init()
        {
            var svc = new DataServiceClient();
            svc.GetCategoriesCompleted += delegate(object sender, GetCategoriesCompletedEventArgs e)
            {
                if (e.Error != null)
                {
                    throw new System.Exception(e.Error.Message);
                }
                this.Items = e.Result;
            };
            svc.GetCategoriesAsync();
            svc.CloseAsync();
        }

        /// <summary>
        /// Удалить модель
        /// </summary>
        /// <param name="CategoryID"></param>
        public void Remove(int CategoryID)
        {
            var svc = new DataServiceClient();
            svc.RemoveCategoryCompleted += delegate(object sender, AsyncCompletedEventArgs e)
            {
                Init();
            };
            svc.RemoveCategoryAsync(CategoryID);
            svc.CloseAsync();
        }
    }
}


ModelНу, тут без вопросов


Code Behind
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using SLNavi.SvcRef;
using SLNavi.Util;
using SLNavi.Views.Categories.Models;

namespace SLNavi.Views.Categories
{
    /// <summary>
    /// Список категорий
    /// </summary>
    public partial class CategoryList : Page
    {        
        /// <summary>
        /// Конструктор
        /// </summary>
        public CategoryList()
        {
            InitializeComponent();
        }
        
        /// <summary>
        /// Модель
        /// </summary>
        public CategoryListModel Model
        {
            get
            {
                return DataContext as CategoryListModel;
            }
        }

        /// <summary>
        /// Вызов страницы
        /// </summary>
        /// <param name="e"></param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            NavigateUtility.PageInit(this);
            Model.Init();
        }

        /// <summary>
        /// Уход со страницы
        /// </summary>
        /// <param name="e"></param>
        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            ResourceUtility.DestroyContext(this);
        }

        /// <summary>
        /// Удаление категории
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnRemove_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            var category = gridCategories.SelectedItem as CategoryEx;
            if (category != null)
            {
                if (MessageBox.Show("Вы действительно хотите удалить категорию?", "Удаление", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
                {
                    Model.Remove(category.CategoryID.Value);
                }
            }
        }

         /// <summary>
        /// Создать
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            NavigateUtility.ToCategoryEdit();
        }

        /// <summary>
        /// Изменить
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnEdit_Click(object sender, RoutedEventArgs e)
        {
            var category = gridCategories.SelectedItem as CategoryEx;
            if (category != null)
            {
                NavigateUtility.ToCategoryEdit(category.CategoryID.Value);
            }
        }

        /// <summary>
        /// Навигация к карточке категории
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnNavigateToView(object sender, RoutedEventArgs e)
        {
            NavigateUtility.ToCategoryView(((sender as FrameworkElement).DataContext as CategoryEx).CategoryID.Value);
        }
    }
}


P.S. И тестировать легко, и переносить на другие платформы легко, никакого прибивания гвоздей к специфике событий (или команд). Всё по-рихтеро-фаулерски.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37006532
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, по поводу утечек памяти. Где-то читал, что зверски текут ChildWindow. Ну и как на этом сыром SL писать софт? :)
P.S. Вообще, сам XAML - сплошной мемори лик...
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37006731
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К...будет уходить масса времени на "тупой" мэппинг значений свойств.
... "конструкцию" поддерживать будет проще. Меньше изменений нужно будет вносить при изменении модели, одним слоем будет меньше. А все возникающие сложности решаются дописыванием в partial class модели.
угу, так и поступаю - где вьюмодель на 90% "тупой" мэппинг значений свойств модели - дописываю недостающие свойства вьюмодели в "собачий хвост" partial class (модели), а если вьюмодель объединяет несколько моделей - wrapper (соотв. биндинг на вьюмодель.модель.свойство)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37006759
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мда, дискуссия получила другой оборот. Безумно рад, что этот вопрос даже, такое ощущение, примирил i и МСУ в некоторых вопросах.

Алексей КСомнительно. Как говорилось выше, если модель довольно объёмна - будет уходить масса времени на "тупой" мэппинг значений свойств.

У меня такой подход: я практически отказываюсь от кодогенерации, все сервисы и объекты описываю сам, там у меня Dto объекты, которые несут только в себе полезную для контекста информацию (максимальная экономия трафика). Для осуществления байдинга, конечно, нет смысла для каждого объекта осуществлять PresentationModel, но это для тех случаев, когда у нас идет readonly binding, то есть OneWay. В случае редактирования я придерживаюсь создания полей именно в PresentationModel и байдинга на них. В результате бизнес объекты не перегружены, в них нет всяческих реализаций INotifyPropertyChanged интерфейсов (которые по большому счету не нужны нигде кроме View, если это не объекты EF/WCF RIA и т.п.).

Так же в PresentationModel описывается валидация, которая наиболее полная: правила, сообщения. Очевидно, что часто приходится дублировать некоторые валидационные правила, во-первых на стороне сервера (сервисы), во-вторых в БД (уникальные ключи и т.п.). Но основная валидация это все таки на стороне клиента (в SL приложении), вся остальная это защита от взлома.

Алексей К Непонятно, логика чего будет расплываться? Логика биндингов? А "конструкцию" поддерживать будет проще. Меньше изменений нужно будет вносить при изменении модели, одним слоем будет меньше. А все возникающие сложности решаются дописыванием в partial class модели.
В моем случае может быть больше кода, зато мне кажется более чище выглядит код, и ясно где что искать. Скажем так, я быстро печатаю :)

Алексей КА в любом случае придётся делать запрос к модели после сохранения записи, чтобы получить значения, вычисляемые в сервисах модели. И не "обновлять основной объект", а "заменить основной объект вновь полученным". И проблемы тут нет. Всё это легко выносится в базовые классы и в прикладном коде не присутствует.
Может быть, один раз участвовал в таком подходе, писали на WPF + LinqToSQL, мне откровенно не понравилось. Слишком много путаницы. Пытались и с длинными сессиями и с короткими работать.

iVM содержит команды, а они во всех паттернах реализуют необходимую логику.
VM по классическому определению должна осуществлять связь между Model и View. Вся логика (как я понимаю это бизнес логика) должна быть в Model! Model - это не только классы-объекты, которые генерируются EF/WCF или еще чем, а это вся бизнес логика, и даже сервисы и т.п.

iMVP всем хорош, за исключением одной немаловажной детали - наличием View в Presenter'e.
View в Presenter не обязательна. МСУ продемонстрировал как раз пример MVP без использования View в Presenter. Но вот иногда ее бывает полезно иметь, например, для тех же BusyIndicator, ChildWindow и т.п., чтобы сделать нечто вроде IDisposable интерфейса для представлений (и то зависит от реализации Presenter-First или View-First, какая инициализация происходит первая контроллера или представления, и соответственно кто умирает первым).

iУ MVVM один недостаток - он перегружен. Все остальные аргументы неубедительны
Именно, потому я и говорю про разделение VM на Presenter и PresentationModel. Presenter несет в себе связь с сервисами, PresentationModel связь с представлением, как-то так. Причем так же можно PresentationModel использовать для нескольких Presenter и т.п.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37006884
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhУ меня такой подход: я практически отказываюсь от кодогенерации, все сервисы и объекты описываю сам, там у меня Dto объекты, которые несут только в себе полезную для контекста информацию (максимальная экономия трафика). Для осуществления байдинга, конечно, нет смысла для каждого объекта осуществлять PresentationModel, но это для тех случаев, когда у нас идет readonly binding, то есть OneWay. В случае редактирования я придерживаюсь создания полей именно в PresentationModel и байдинга на них. В результате бизнес объекты не перегружены, в них нет всяческих реализаций INotifyPropertyChanged интерфейсов (которые по большому счету не нужны нигде кроме View, если это не объекты EF/WCF RIA и т.п.).
Это неплохо решается с помощью partial class. А с серверной стороны в "собачий хвост" вполне уместно запихнуть, например, код ORM. Общими (для трафика) остаются лишь свойства DataMember (ну и необходимые для обеих сторон методы). В случае SL такой подход особенно оправдан, т.к. приходится "шарить" исходники.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37006896
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhУ меня такой подход: я практически отказываюсь от кодогенерации
А смысл? Рутина ведь. Вообще, лично я не очень уважаю DTO подходы, ибо рутина - извечный враг. К оффтопу заметить, что ну всем нравится хибернейт, но реально минус в том, что руками нужно писать классы, маппинг и DAL. В отличие от L2S/EF, где теме и маппинги генерятся, и DAL какой-никакой генерится при контексте. А вот EF-ский DTO ну никак не радует.

Denis GladkikhВ результате бизнес объекты не перегружены, в них нет всяческих реализаций INotifyPropertyChanged интерфейсов (которые по большому счету не нужны нигде кроме View, если это не объекты EF/WCF RIA и т.п.).
Не понял, что Вы называете бизнес-объектами - сущности модели или вью-модели? Во-вторых, что значит не нужны INotifyPropertyChanged, то есть как это (если речь о вьюмодели)? В-третьих (если речь о модели-таки), кодогенераторы сами по-дефолту генерят пропертя с INotifyPropertyChanged. Не понял Вас.
Вот видите, если отказываться от кодогенерации - многое теряешь. А руками это всё писать - рутинно.

Denis GladkikhМожет быть, один раз участвовал в таком подходе, писали на WPF + LinqToSQL, мне откровенно не понравилось. Слишком много путаницы. Пытались и с длинными сессиями и с короткими работать.
О каких сессиях идет речь? Во-вторых, нет информации о транспорте данных - напрямую к SQL серверу или SOA?

МСУ продемонстрировал как раз пример MVP без использования View в Presenter. Но вот иногда ее бывает полезно иметь, например, для тех же BusyIndicator, ChildWindow и т.п., чтобы сделать нечто вроде IDisposable интерфейса для представлений[/quote].
Вот Вам реализация ChildWindow на таком же паттерне, о котором я говорил:

CategoryPicker.xaml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
<controls:ChildWindow xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"  x:Class="SLNavi.Views.Pickers.CategoryPicker"
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
           xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
           xmlns:model="clr-namespace:SLNavi.Views.Pickers.Models"
           xmlns:cnv="clr-namespace:SLNavi.Converters"
           Width="564" Height="363" 
           Title="Выбор категории">

    <controls:ChildWindow.Resources>
        <cnv:EmptyNotConverter x:Key="EmptyNotConverter" />
        <cnv:NullableNotConverter x:Key="NullableNotConverter" />
    </controls:ChildWindow.Resources>

    <controls:ChildWindow.DataContext>
        <model:CategoryPickerModel />
    </controls:ChildWindow.DataContext>

    <Grid x:Name="LayoutRoot" Margin="2">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>

        <StackPanel>
            <TextBlock Height="20">
                <Run Text="Фильтр:" />
                <LineBreak />
            </TextBlock>

            <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="auto" Height="auto">
                <TextBox Name="tbCategoryName" Text="{Binding FilterCategoryName, Mode=TwoWay}" Height="22" HorizontalAlignment="Left" Width="170" />
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                    <Button Name="btnFilterApply" IsEnabled="{Binding ElementName=tbCategoryName, Path=Text, Mode=TwoWay, Converter={StaticResource EmptyNotConverter}}" Width="70" Content="Применить" Click="btnFilterApply_Click" />
                    <Button Name="btnFilterClear" Width="70" Content="Снять" Click="btnFilterClear_Click" />
                </StackPanel>
            </Grid>

            <TextBlock Height="20">
                <LineBreak />
            </TextBlock>

            <TextBlock Width="10000" Height="0" />

            <sdk:DataGrid Name="gridCategories" VerticalScrollBarVisibility="Visible" ItemsSource="{Binding Items}" Height="220"
                          SelectedItem="{Binding SelectedItem, Mode=TwoWay}" AutoGenerateColumns="False">
                <sdk:DataGrid.Columns>
                    <sdk:DataGridTextColumn Binding="{Binding CategoryName}" Width="500" Header="Название" IsReadOnly="True" />
                </sdk:DataGrid.Columns>
            </sdk:DataGrid>

        </StackPanel>

        <Button Name="CancelButton" Content="Отмена" Click="CancelButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,0,0" Grid.Row="1" />
        <Button Name="OKButton" IsEnabled="{Binding ElementName=gridCategories, Path=SelectedItem, Mode=TwoWay, Converter={StaticResource NullableNotConverter}}" Content="OK" Click="OKButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,79,0" Grid.Row="1" />

    </Grid>

</controls:ChildWindow>


CategoryPicker.xaml.cs
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using SLNavi.Extensions;
using SLNavi.SvcRef;
using SLNavi.Views.Pickers.Models;

namespace SLNavi.Views.Pickers
{
    /// <summary>
    /// Пикер категорий
    /// </summary>
    public partial class CategoryPicker : ChildWindow
    {
        /// <summary>
        /// Результат
        /// </summary>
        public CategoryEx Result { get; set; }

        /// <summary>
        /// Конструктор
        /// </summary>
        public CategoryPicker()
        {
            InitializeComponent();
            Model.Init();
        }

        /// <summary>
        /// Модель
        /// </summary>
        public CategoryPickerModel Model
        {
            get
            {
                return DataContext as CategoryPickerModel;
            }
        }

        /// <summary>
        /// Метод нажатия кнопки "OK"
        /// </summary>
        private void OkFired()
        {
            if (Model != null)
            {
                Result = Model.SelectedItem.Clone<CategoryEx>();
                DialogResult = true;
                this.DialogResult = true;
            }
        }

        /// <summary>
        /// Событие при нажатии кнопки "OK"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OKButton_Click(object sender, RoutedEventArgs e)
        {
            OkFired();
        }

        /// <summary>
        ///  Событие при нажатии кнопки "Отмена"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CancelButton_Click(object sender, RoutedEventArgs e)
        {
            DialogResult = false;
        }

        /// <summary>
        /// Применить фильтр
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnFilterApply_Click(object sender, RoutedEventArgs e)
        {            
            Model.Items = new ObservableCollection<CategoryEx>(Model.ItemsBuffer.Where(d => d.CategoryName.ToLowerInvariant().Contains(Model.FilterCategoryName.ToLowerInvariant())));
        }

        /// <summary>
        /// Снять фильтр
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnFilterClear_Click(object sender, RoutedEventArgs e)
        {
            Model.FilterCategoryName = string.Empty;
            Model.Items = Model.ItemsBuffer.Clone<ObservableCollection<CategoryEx>>();
        }
    }
}


CategoryPickerModel.cs
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
using System.Collections.ObjectModel;
using SLNavi.Extensions;
using SLNavi.SvcRef;
using System.Threading;

namespace SLNavi.Views.Pickers.Models
{
    /// <summary>
    /// Модель для CategoryPickerModel
    /// </summary>
    public class CategoryPickerModel : BaseModel
    {
        /// <summary>
        /// Фильтр названия категории
        /// </summary>
        private string filterCategoryName;
        /// <summary>
        /// Фильтр названия категории
        /// </summary>
        public string FilterCategoryName
        {
            get
            {
                return filterCategoryName;
            }
            set
            {
                filterCategoryName = value;
                NotifyPropertyChanged(() => this.FilterCategoryName);
            }
        }

        /// <summary>
        /// Буфер набора данных для фильтров
        /// </summary>
        public ObservableCollection<CategoryEx> ItemsBuffer { get; set; }

        /// <summary>
        /// Набор данных
        /// </summary>
        private ObservableCollection<CategoryEx> items;
        /// <summary>
        /// Набор данных
        /// </summary>
        public ObservableCollection<CategoryEx> Items
        {
            get
            {
                return items;
            }
            set
            {
                items = value;
                NotifyPropertyChanged(() => this.Items);
            }
        }

        /// <summary>
        /// Категория
        /// </summary>
        private CategoryEx selectedItem;
        /// <summary>
        /// Категория
        /// </summary>
        public CategoryEx SelectedItem
        {
            get
            {

                return selectedItem;
            }
            set
            {
                selectedItem = value;
                NotifyPropertyChanged(() => this.SelectedItem);
            }
        }

        /// <summary>
        /// Инициализация модели
        /// </summary>
        public void Init()
        {
            var svc = new DataServiceClient();
            svc.GetCategoriesCompleted += (sender, e) =>
            {
                if (e.Error != null)
                {
                    throw new System.Exception(e.Error.Message);
                }
                Items = e.Result;
                ItemsBuffer = Items.Clone<ObservableCollection<CategoryEx>>();
            };
            svc.GetCategoriesAsync();
            svc.CloseAsync();

        }
    }
}


Собственно вызов:

Код: plaintext
CategoryPicker categoryPicker = new CategoryPicker();

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
categoryPicker.Closed += delegate
{
    if (categoryPicker.DialogResult.GetValueOrDefault())
    {
        lblInfo.Content = string.Format("CategoryID={0};CategoryName={1}", categoryPicker.Result.CategoryID, categoryPicker.Result.CategoryName);
    }                
};
categoryPicker.Show();

И никаких противоречий. Плюс, опять же, в том, что я с гораздо меньшими граблями портировать код на другую платформу, даже не ориентированную на XAML. Вот оно чё, Дениска.

Denis GladkikhiУ MVVM один недостаток - он перегружен. Все остальные аргументы неубедительны
Именно, потому я и говорю про разделение VM на Presenter и PresentationModel. Presenter несет в себе связь с сервисами, PresentationModel связь с представлением, как-то так. Причем так же можно PresentationModel использовать для нескольких Presenter и т.п.
+1
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37006966
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offПорадовала оценка сроков задачи :)

http://outcoldman.ru/ru/blog/show/257

ДенискаНедавно менеджеры попросили добавить сортировку. Я прикинул, что в простом случае, когда все элементы подгружаются за раз, сделать сортировку очень просто, нужно всего добавить CanUserSort к колонкам и все. Задачу оценили в час (вместе с тестированием и развертыванием).




P.S. Без обид ))
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37007034
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhУ меня такой подход: я практически отказываюсь от кодогенерации, все сервисы и объекты описываю сам, там у меня Dto объекты, которые несут только в себе полезную для контекста информацию (максимальная экономия трафика).Это уже как модель будет спроектирована. ПМСМ, нужно стремиться к тому, чтобы DTO соответствовали сущностям модели. Тогда необходимость в дополнительных DTO отпадёт и траффик будет минимальным. Ну или будет достигнут разумный компромис между созданием DTO и использованием существующих классов модели.

Denis GladkikhДля осуществления байдинга, конечно, нет смысла для каждого объекта осуществлять PresentationModel, но это для тех случаев, когда у нас идет readonly binding, то есть OneWay. В случае редактирования я придерживаюсь создания полей именно в PresentationModel и байдинга на них. В результате бизнес объекты не перегружены, в них нет всяческих реализаций INotifyPropertyChanged интерфейсов (которые по большому счету не нужны нигде кроме View, если это не объекты EF/WCF RIA и т.п.).Учитывая объёмы данных, обрабатываемых на клиенте, "перегруженность" в виде INotifyPropertyChanged вряд ли на что-либо повлияет.

Denis GladkikhТак же в PresentationModel описывается валидация, которая наиболее полная: правила, сообщения. Очевидно, что часто приходится дублировать некоторые валидационные правила, во-первых на стороне сервера (сервисы), во-вторых в БД (уникальные ключи и т.п.). Но основная валидация это все таки на стороне клиента (в SL приложении), вся остальная это защита от взлома.Я бы сказал наоборот. Основная логика валидации данных расположена в модели. Логика предварительной валидации в PresentationModel - это бантик для удобства пользователя, может в каких-то случаях для экономии траффика и уменьшения количества запросов на сервер.

Denis GladkikhВ моем случае может быть больше кода, зато мне кажется более чище выглядит код, и ясно где что искать. Скажем так, я быстро печатаю :)"Овчинка выделки не стоит" (с) народное. :-)

Denis GladkikhАлексей КА в любом случае придётся делать запрос к модели после сохранения записи, чтобы получить значения, вычисляемые в сервисах модели. И не "обновлять основной объект", а "заменить основной объект вновь полученным". И проблемы тут нет. Всё это легко выносится в базовые классы и в прикладном коде не присутствует.
Может быть, один раз участвовал в таком подходе, писали на WPF + LinqToSQL, мне откровенно не понравилось. Слишком много путаницы. Пытались и с длинными сессиями и с короткими работать.Видимо, дело привычки. :-)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37007116
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУА смысл? Рутина ведь. Вообще, лично я не очень уважаю DTO подходы, ибо рутина - извечный враг. К оффтопу заметить, что ну всем нравится хибернейт, но реально минус в том, что руками нужно писать классы, маппинг и DAL. В отличие от L2S/EF, где теме и маппинги генерятся, и DAL какой-никакой генерится при контексте. А вот EF-ский DTO ну никак не радует.

А мне вот не нравятся кодогенераторы, на них сложно полагаться в сложных проектах. Люди используют EF/LinqToSQL и т.п. даже не подозревая как это все должно работать. Не думаю о сессиях, о транзакциях, о состояниях объектов и т.п. А вообще у nHibernate есть кодогенераторы, они не идут в комплекте. Да и самому просто написать.

МСУНе понял, что Вы называете бизнес-объектами - сущности модели или вью-модели? Во-вторых, что значит не нужны INotifyPropertyChanged, то есть как это (если речь о вьюмодели)? В-третьих (если речь о модели-таки), кодогенераторы сами по-дефолту генерят пропертя с INotifyPropertyChanged. Не понял Вас.
Вот видите, если отказываться от кодогенерации - многое теряешь. А руками это всё писать - рутинно.
Приехали. Бизнес объект . Для меня никакой рутины в этом нет. Все зависит от проекта, где-то это хорошо работает, а где-то не очень. MVC сложнее WinForms, потому что там писать больше кода нужно, но зато на выходе получаются более качественные веб-проекты. Разве не так?

МСУО каких сессиях идет речь? Во-вторых, нет информации о транспорте данных - напрямую к SQL серверу или SOA?
Сессиях ORM. Есть понятие длинных и коротких сессиях. Зависит от того, как вы держите сессию, либо только за загрузку объектов, либо раз загрузили, оставили открытой, работают Lazy свойства и т.п. Соединение было напрямую с БД.

МСУИ никаких противоречий. Плюс, опять же, в том, что я с гораздо меньшими граблями портировать код на другую платформу, даже не ориентированную на XAML. Вот оно чё, Дениска.
Не понял к чему реализация ChildWindow мне. Про какие противоречия мы говорили? Как я понимаю вызов его делаете в codebehind другого окна. Ну что ж, это прелести Presenter. В случае ViewModel не все так просто. Но, это как раз один из случаев, почему я считаю MVP подход более практичным, меньше ограничений на реализацию.
МСУ, если вас не затруднит, то не обращайтесь ко мне подобным образом, я все таки вам не приятель ;)


МСУПорадовала оценка сроков задачи :)

http://outcoldman.ru/ru/blog/show/257

Дениска
Недавно менеджеры попросили добавить сортировку. Я прикинул, что в простом случае, когда все элементы подгружаются за раз, сделать сортировку очень просто, нужно всего добавить CanUserSort к колонкам и все. Задачу оценили в час (вместе с тестированием и развертыванием).


P.S. Без обид ))
По мне так хватит уже флудить. Если есть вопросы лично ко мне - то давайте заведем отдельную ветвь на этом форуме. Ну, реально, засрали уже этот тред, и как я понимаю данное происходит с любым тредом. А не нравится оценка задачи? Я не настаиваю ;)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37007147
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей КВидимо, дело привычки. :-)
Я тоже так думаю. Сколько людей - столько мнений. Это же замечательно, что живут разные подходы к разработки ПО. Насколько я понимаю у людей приживается подход, который рассказывают как раз на MS мероприятиях по разработке приложений на SL/WPF, что ж классно, если он действительно работает. В моем случае мне не нравилось как он работал.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37007174
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhА мне вот не нравятся кодогенераторы, на них сложно полагаться в сложных проектах.
Это как "полагаться"?

Denis GladkikhЛюди используют EF/LinqToSQL и т.п. даже не подозревая как это все должно работать. Не думаю о сессиях, о транзакциях, о состояниях объектов и т.п.
Ну так люди-то разные бывают. Есть и такие, которые подозревают "о сессиях, о транзакциях, о состояниях объектов и т.п.". Уж поверьте мне.

Denis GladkikhА вообще у nHibernate есть кодогенераторы, они не идут в комплекте. Да и самому просто написать.
Я бы не сказал, что "просто" написать. Не видел ни одного вменяемого маппинго-генератора. Слишком гибкий и сложный маппинг можно писать на хибере ручками.

Denis GladkikhПриехали. Бизнес объект. Для меня никакой рутины в этом нет. Все зависит от проекта, где-то это хорошо работает, а где-то не очень.
Ну так в бизнес-объекте по-дефолту генерятся INotifyPropertyChanged. В чем проблема-то? Реализация уже есть по-дефолту.

Denis GladkikhMVC сложнее WinForms, потому что там писать больше кода нужно, но зато на выходе получаются более качественные веб-проекты. Разве не так?
Вообще-то, странное сравнение: MVC и WinForms. Что сложнее, апельсин или корова?

Denis GladkikhСессиях ORM.
ORM - ORM'у рознь. В нормальных кругах это называют контекстом. В хибе это называют фабрикой сессий (ISessionFactory, типа глобального контекста), и сессией (ISession, типа локального контекста). А еще сессия бывает у студентов. Так что говорите конкретней.

Denis GladkikhЕсть понятие длинных и коротких сессиях. Зависит от того, как вы держите сессию, либо только за загрузку объектов, либо раз загрузили, оставили открытой, работают Lazy свойства и т.п. Соединение было напрямую с БД.
Опять сессия... )
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37007314
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУНу так в бизнес-объекте по-дефолту генерятся INotifyPropertyChanged. В чем проблема-то? Реализация уже есть по-дефолту.

Хватит уже топтаться на месте. Где генерятся по дефолту? Я вот классы пишу, у меня почему то не генерируются по дефолту реализации INotifyPropertyChanged, пишу с использованием nHibernate и тоже ничего не генерируется. Может быть в случае использования какого-то особого фреймворка генерируются по дефолту? А как думаете, этот фреймворк о котором вы говорите используется всеми разработчиками?

МСУORM - ORM'у рознь. В нормальных кругах это называют контекстом. В хибе это называют фабрикой сессий (ISessionFactory, типа глобального контекста), и сессией (ISession, типа локального контекста). А еще сессия бывает у студентов. Так что говорите конкретней.
Благо для меня нормальный круг - это родоначальник ORM'ов Nibernate, где всегда были определены понятия long-session и session-per-request-with-detached-objects http://docs.jboss.org/hibernate/core/3.3/reference/en/html/transactions.html. Это термин, а не имя класса.

МСУВообще-то, странное сравнение: MVC и WinForms. Что сложнее, апельсин или корова?
Ну если вы можете применить понятие "сложнее" к апельсину и корове, то я выберу ответ апельсин.

МСУ, ладно, сейчас действительно все переходит больше в треп, а не дискуссию. Я нисколько нигде не указывал, что ваши подходы или идеи не верные. Заметьте, я только говорю о своих идея и подходах. Если они вам не подходят, это ваше право. Доказывать или опровергать мне, вроде, нет необходимости. Я, вроде, ответил на все разумные вопросы, которые были тут. В общем-то на форумы я хожу, чтобы что-то рекомендовать и помогать, а не для того чтобы потрепаться (видел вашу тему про Silverlight более чем на 30-40 страниц). Так что давайте закончим этот тред, а? Ну или по крайней мере я отсюда ухожу (с этого треда). Без обид.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37007350
dbis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну или по крайней мере я отсюда ухожуне уходите, лучше просто игнорируйте вопросы "на-флейм" и около-SL/MVVM/you-name-it демагогию от МСУ
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37007405
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbisНу или по крайней мере я отсюда ухожуне уходите, лучше просто игнорируйте вопросы "на-флейм" и около-SL/MVVM/you-name-it демагогию от МСУ
справедливости ради, следует заметить, что сравнения типа "MVC vs WinForms" больше похожи на треп или на непонимание сути вещей. Поэтому замечания типа про коров и апельсины выглядят в этом контексте вполне уместно.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37007412
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhХватит уже топтаться на месте. Где генерятся по дефолту? Я вот классы пишу, у меня почему то не генерируются по дефолту реализации INotifyPropertyChanged, пишу с использованием nHibernate и тоже ничего не генерируется.
А кто топчется? Вы то одно говорите, то другое. NHibernate и его классы не имеет ничего общего с кодосгенерированным враппером WCF сервиса. Вы поставку данных как делаете? Правильно, через WCF сервис. Вот он идолжен сгенерировать асинхронный враппер + INotifyPropertyChanged реализацию. Бесплатно. Что не понятно?
Во-вторых, для меня непонятно, как может WPF/SL разработчик сказать такое:

Denis GladkikhВ результате бизнес объекты не перегружены, в них нет всяческих реализаций INotifyPropertyChanged интерфейсов (которые по большому счету не нужны нигде кроме View, если это не объекты EF/WCF RIA и т.п.).

Denis GladkikhМожет быть в случае использования какого-то особого фреймворка генерируются по дефолту? А как думаете, этот фреймворк о котором вы говорите используется всеми разработчиками?
Если WCF генератор Вы называете фреймворком, то - да, всеми, кто юзает SL, о котором мы и ведем речь. Вменяемый разработчик SL не будет юзать транспорт на asmx-сервисах.

Denis GladkikhБлаго для меня нормальный круг - это родоначальник ORM'ов Nibernate, где всегда были определены понятия long-session и session-per-request-with-detached-objects http://docs.jboss.org/hibernate/core/3.3/reference/en/html/transactions.html. Это термин, а не имя класса.
Вот я и прошу уточнять , ибо мне неизвестно, кто являлся для Вас родоначальником. Всё-таки, понятие контекст больше понятнее и очевиднее, даже в терминах хиба. Понятие "сессия" может запутать человека, который не работал с хибом, а работал с L2S/EF. Поэтому, я-лишь хочу предостеречь от путаницы, не более того.

Denis GladkikhНу если вы можете применить понятие "сложнее" к апельсину и корове, то я выберу ответ апельсин.
Попахивает детством: "Что лучше, Дельфи или Плас-плас". Несерьезный вопрос - несерьезный ответ. Простите, я - пас.

Denis GladkikhТак что давайте закончим этот тред, а? Ну или по крайней мере я отсюда ухожу (с этого треда). Без обид.
Ладно, давайте окончим тепатню. Все всё давно поняли (а кто не понял - пусть продолжат дискуссию). Думаю, пора сворачиваться. Ок.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37007496
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
автор Вся логика (как я понимаю это бизнес логика) должна быть в Model! Model - это не только классы-объекты, которые генерируются EF/WCF или еще чем, а это вся бизнес логика, и даже сервисы и т.п.



Это только в русской wiki должна быть вся бизнес-логика(специально посмотрел). В английском
авторA domain model, or Domain Object Model (DOM) in problem solving and software engineering can be thought of as a conceptual model of a domain of interest (often referred to as a problem domain) which describes the various entities, their attributes and relationships, plus the constraints that govern the integrity of the model elements comprising that problem domain

Помимо этого есть масса других подходов для борьбы с бизнес-объектами(ActiveRecords, D в периоде, еtc), но ни в одном не было и не будет всей логики в силу нарушения тех принципов, которые ты упоминал в тезисах. Помимо этого бизнес-требования могут существенно меняться однако это совершенно не означает изменения структуры БД и соответствующих БО

авторЯ не использую кодогенераторы и ORM..., а бысро печатаю
Вот это основная причина. С нее нужно было начинать, тогда сразу все становится понятным и дальше можно не читать.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37008348
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Тема интересная и можно ее продолжить без уважаемого MVP(он и в блоге тоже предпочитает вопросы переводить в личку и не хочет нести знания в массы, соответствуя своему статусу).

Самопальный вариант борьбы с данными, как я понял, все дружно забраковали.
Дальше у каждого свои предпочтения(RIA, EF, список можно продолжить до бесконечности).
Нивелировать весь этот зоопарк можно с помощью паттерна Repository(приблизительный вариант я уже показывал). В нем скрываем детали реализации получения данных, а Model задает структуру бизнес-объектов и содержит только валидацию для обеспечения консистентности данных. Таким образом можно перейти с двухзвенки на 3х, не зависеть от метода вызовов(синхронный или асинхронный), обеспечить при необхомости кэширование и тд не меняя всего остального.

Обсуждаем, затем продолжаем...
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37008357
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iТема интересная и можно ее продолжить без уважаемого MVP(он и в блоге тоже предпочитает вопросы переводить в личку и не хочет нести знания в массы, соответствуя своему статусу).

облажаться просто более ущербно. Все проще. А тема действительно интересная
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37008495
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
iscrafmiТема интересная и можно ее продолжить без уважаемого MVP(он и в блоге тоже предпочитает вопросы переводить в личку и не хочет нести знания в массы, соответствуя своему статусу).

облажаться просто более ущербно. Все проще. А тема действительно интересная

Возможно. Он уже опубликовал свой вариант на Codeproject .

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public BindingModel()
    {
        ChangePasswordCommand = new DelegateCommand(ChangePassword);
 
        AddValidationFor(() => NewPassword)
            .When(x => string.IsNullOrEmpty(x._newPassword))
            .Show("New password required field.");
 
        AddValidationFor(() => NewPassword)
            .When(x => !string.IsNullOrEmpty(x._newPassword) && x._newPassword.Length >  80 )
            .Show("New password must be a string with maximum length of 80.");
 
        AddValidationFor(() => NewPasswordConfirmation)
            .When(x => !string.IsNullOrEmpty(x._newPassword) && string.CompareOrdinal(x._newPassword, x._newPasswordConfirmation) !=  0 )
            .Show("Password confirmation not equal to password.");
    }

Детально не смотрел, но:

- Model содержит команды, о переносимости, на которую указывал MCУ(ASP,WPF\SL,Winforms, etc), сразу можно забыть.
- Конструктор содержит правила валидации - лишние тормоза в случае, когда правила валидации применимы ко всему типу объекта
- валидация через аттрибуты влечет необходимость изменения модели при изменении соответствующих правил. Постоянный Reflection для них

Код: plaintext
1.
2.
3.
4.
protected BindingModelBase()
{
    PropertyChanged += (s, e) => { if (e.PropertyName != "HasErrors") ValidateProperty(e.PropertyName); };
} 

- Сложно и накладно. Можно в сеттере свойства сразу делать проверки без всяких делегатов и подписок. Это позволит обойтись полностью без UpdateSourceTriggerHelper

- DelegeteCommand без слабых ссылок, как мы давно уже знаем, возможны утечки памяти

ЗЫ Любим мы избретать все самостоятельно.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37008780
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда... Пихать в модель валидацию - тут не только кросспереносимость пойдёт лесом, но и в текущем приложении возможны грабли: для редких, но реальных случаев, когда одна и та же модель в разных представлениях может немного отличаться поведением. Классический пример - пользователь и администратор (ролевые политики). Их GUI может различно вести себя в разрезе валидации и определенных этих политик безопасности.
Так что за такой родход имеет право на жизнь в хеллоуворлд софте.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37008786
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: МСУ, прекратите постоянные переходы на личности
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37008807
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i- Model содержит команды, о переносимости, на которую указывал MCУ(ASP,WPF\SL,Winforms, etc), сразу можно забыть.
Я смотрю вы все приложения с таким расчетом разрабатываете? Что завтра Silverlight перенесете на ASP.NET? Глупости не говорите, когда стоит задача разработки приложения на несколько платформ, тогда и совершенно другой подход работает. Притом, я смотрю, вы гражданин раньше любитель MVVM теперь против использования команд? Это пять.

i- Конструктор содержит правила валидации - лишние тормоза в случае, когда правила валидации применимы ко всему типу объекта
Феерический бред. Я понимаю, что хочется придраться к чему-нибудь. Но вот эта фраза ставит все на свои места.

i- валидация через аттрибуты влечет необходимость изменения модели при изменении соответствующих правил. Постоянный Reflection для них
Тут, я думаю, может понять только автор, что же он хотел сказать. И я смотрю идет постоянная путаница между моделью (Model) и моделью представления (ViewModel), ну это ладно. Спрашивается, а есть такая волшебная валидация, которая не требует изменения при изменении правил?

i- DelegeteCommand без слабых ссылок, как мы давно уже знаем, возможны утечки памяти
А тут вот действительно интересно, а слабо показать? ;) Один пример: запихни туда 1000 кнопок, пересоздавай для них ViewModel, переноси ViewModel от одной кнопки к другой, ну и все в том же духе. Покажи, что в этом случае будет утечка, уж очень интересно. Я понимаю прочли одну умную статью про WeakReference, но все же нужно уметь применять в нужных местах. А еще возможен конец света в 2012, ждете?

Все ваши упреки основаны на попытке придраться ко мне, а не на попытке построить конструктивный разговор. Ребят, я не говорю, что я тут пришел умный парень, который все расставит на свои места, я умею признавать свои ошибки, и признаю те, которые будут конструктивно обоснованы. Но вот и вы же не производите пока впечатление умных парней, ну совсем. В общем, давайте заниматься делом. Я сюда пришел, чтобы отвечать на вопросы, а не дискутировать на постоянные темы, которых и так полно в интернете.

МСУМда... Пихать в модель валидацию - тут не только кросспереносимость пойдёт лесом, но и в текущем приложении возможны грабли: для редких, но реальных случаев, когда одна и та же модель в разных представлениях может немного отличаться поведением. Классический пример - пользователь и администратор (ролевые политики). Их GUI может различно вести себя в разрезе валидации и определенных этих политик безопасности.
Так что за такой родход имеет право на жизнь в хеллоуворлд софте.
Проблема решается очень легко на любой реализации. Если тяжко додуматься как, у вас проблемы.

P.S. Уважаемый, МСУ, я вас попросил не обращаться ко мне подобный образом, так как вы игнорируете, я понимаю, что вы просто не хотите относится ко мне, как к оппоненту, с уважением. Пускай так, ваше право.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37008849
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Gladkikh, не советую шуметь по-поводу "DelegeteCommand без слабых ссылок". Вы не правы, а во-вторых это баян. Тут утечки уже давно мусолятся.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37008851
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... а то щас начну вспоминать "MVC vs WinForms".

Ужас
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37008893
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ... а то щас начну вспоминать "MVC vs WinForms".

Ужас
Жесть в том, что я до сих пор не понял в чем проблема сравнения, пока не прочитал внимательнее. Но так как у оппонентов основная идея попытаться принизить другую стороны, то сложно, конечно, включить мозги и понять где тут опечатка. ;)

МСУDenis Gladkikh, не советую шуметь по-поводу "DelegeteCommand без слабых ссылок". Вы не правы, а во-вторых это баян. Вам этого в блоге не расскажут. Тут утечки уже давно мусолятся.
И потише шумите на ламерские вопросы - порвут одним махом мыши. Серьезно. При всём уважении.
Действительно, про эту утечку я не знал. Но как я понимаю у вас самих о ней знаний не больше, что-то вроде "слышу звон, да не знаю где он". Вот нашел по этой теме http://compositewpf.codeplex.com/workitem/4065?ProjectName=compositewpf .
А не слышал я про нее по очевидным причинам, в примерах типа hello world я этого не делаю, а вообще в проектах давно уже все привыкли при удалении окон, контролов, выставлять DataContext = null (об этом я и говорил, про реализацию IDispatch интерфейса для View). И тогда, в этом случае, таких проблем не будет ;) Ну что ж, спасибо, буду знать.

МСУИ потише шумите на ламерские вопросы - порвут одним махом мыши. Серьезно. При всём уважении.
Уважаемый, а вы не бойтесь за меня. Я же говорю, я признаю любые свои ошибки, и не считаю глагол "порвут" уместным в этом случае. ;)

МСУОтличный аргументированный ответ. Браво.
Ну так это же из серии любимых ламерских вопросов. Ну неужто нет ни одной идеи как это реализовать? Ну расскажите, как вы это решаете, а потом просто подумайте, а здесь можно так же решить или нет? Для меня тут все настолько очевидно, что я считаю, что вы просто придираетесь.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37008903
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые МСУ и i, разрешите сделать вам вызов? Вот тут народ часто говорит, чтобы на вас вообще внимание не нужно обращать, но все же я так не думаю, и, скорее всего, просто в некоторых вопросах возникает такой негатив и спор, только потому, что я, просто, не верно толкую ваши мысли из сообщений.

Так вот про вызов. Сможете сделать такой пример, который бы показал эту самую утечку на моей реализации DelegateCommand? Я без проблем могу хоть сейчас накидать ее.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37008911
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis Gladkikhi- Model содержит команды, о переносимости, на которую указывал MCУ(ASP,WPF\SL,Winforms, etc), сразу можно забыть.
Я смотрю вы все приложения с таким расчетом разрабатываете? Что завтра Silverlight перенесете на ASP.NET? Глупости не говорите, когда стоит задача разработки приложения на несколько платформ, тогда и совершенно другой подход работает. Притом, я смотрю, вы гражданин раньше любитель MVVM теперь против использования команд? Это пять.

i- Конструктор содержит правила валидации - лишние тормоза в случае, когда правила валидации применимы ко всему типу объекта
Феерический бред. Я понимаю, что хочется придраться к чему-нибудь. Но вот эта фраза ставит все на свои места.

i- валидация через аттрибуты влечет необходимость изменения модели при изменении соответствующих правил. Постоянный Reflection для них
Тут, я думаю, может понять только автор, что же он хотел сказать. И я смотрю идет постоянная путаница между моделью (Model) и моделью представления (ViewModel), ну это ладно. Спрашивается, а есть такая волшебная валидация, которая не требует изменения при изменении правил?

i- DelegeteCommand без слабых ссылок, как мы давно уже знаем, возможны утечки памяти
А тут вот действительно интересно, а слабо показать? ;) Один пример: запихни туда 1000 кнопок, пересоздавай для них ViewModel, переноси ViewModel от одной кнопки к другой, ну и все в том же духе. Покажи, что в этом случае будет утечка, уж очень интересно. Я понимаю прочли одну умную статью про WeakReference, но все же нужно уметь применять в нужных местах. А еще возможен конец света в 2012, ждете?

Все ваши упреки основаны на попытке придраться ко мне, а не на попытке построить конструктивный разговор. Ребят, я не говорю, что я тут пришел умный парень, который все расставит на свои места, я умею признавать свои ошибки, и признаю те, которые будут конструктивно обоснованы. Но вот и вы же не производите пока впечатление умных парней, ну совсем. В общем, давайте заниматься делом. Я сюда пришел, чтобы отвечать на вопросы, а не дискутировать на постоянные темы, которых и так полно в интернете.

МСУМда... Пихать в модель валидацию - тут не только кросспереносимость пойдёт лесом, но и в текущем приложении возможны грабли: для редких, но реальных случаев, когда одна и та же модель в разных представлениях может немного отличаться поведением. Классический пример - пользователь и администратор (ролевые политики). Их GUI может различно вести себя в разрезе валидации и определенных этих политик безопасности.
Так что за такой родход имеет право на жизнь в хеллоуворлд софте.
Проблема решается очень легко на любой реализации. Если тяжко додуматься как, у вас проблемы.

P.S. Уважаемый, МСУ, я вас попросил не обращаться ко мне подобный образом, так как вы игнорируете, я понимаю, что вы просто не хотите относится ко мне, как к оппоненту, с уважением. Пускай так, ваше право.

Денис, рано тебе отвечать на вопросы и публиковать статьи. Ты еще находишься в пионерском периоде, когда изобретаются собственные велосипеды без всякого опыта, да и в теории большие проблемы.
Для работы с БД есть большое кол-во фреймворков, которые применимы для всей линейки Net, c валидацией и реализацией всех интерфейсов(в том числе и разграничением доступа,MCУ), которые нужны для клиентской части.
В них нет такого "феерического бреда"(буду придерживаться твоей терминологии), который ведет к большим накладным расходам и тормозам, как пообъектная валидация, когда она применима ко всему типу(длина строки,not null,etc) или DelegeteCommand в Model(посмотри ее реализацию в Prism, там же на форуме есть обсуждение утечек памяти из-за кривости,как у тебя, в первой версии).
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37008928
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУДениска,
Дениска,
Дениска,
Дениска,
Дениска

МСУ, вам понравится, если вас начнут звать "Данилкой", демонстрируя своё пренебрежение к вам?
Может как-то повежливей будете?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37008932
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУДениска, я не придираюсь, увольте. Просто речь была о том, что валидации в моделе нечего делать. Я думаю, Вы и сами это прекрасно понимаете, просто упираетесь )
Проблема только в том, что нет у меня валидации в Model, а так все ок ;) И я не очень вас понимаю, то у вас валидация в моделе, то нет, где правда?

iВ них нет такого "феерического бреда"(буду придерживаться твоей терминологии), который ведет к большим накладным расходам и тормозам, как пообъектная валидация, когда она применима ко всему типу(длина строки,not null,etc)
Видимо я действительно глуп, расскажите, пожалуйста, поподробнее где здесь накладные расходы. Можете по пальцам показать?

МСУДениска, во-первых, если ничего не знали об этой утечке - зачем начали гнуть пальцы?
Я просто хочу сказать, что раз вы такие на форуме завсегдатые, и даже знаете о каких-то проблемах, то их сначала нужно разобрать самому. И не говорить "может случиться", а говорить "случиться в случае...". Это же просто, ведь так? Понимаете утечку памяти можно реализовать уж очень просто и без какого-нибудь чудо фреймворка, как-то я видел как люди хранили ссылки на Page в контроллерах (WebForms), из-за чего память улетучивалась мгновенно, так сказать руки такие. Видите, получилось так что я решал эту проблему установкой DataContext в null, но из-за другой найденной утечки, оговоренной на форумах silverlight.net. Это такое же решение, как использование WeakReference в DelegateCommand для CanExecute ивента.

Ситуация, когда будет memory leak очень специфичная, и не удивительно что Prism так долго жил с такой реализацией. Необходимо после создания контрола с установленным в DataContext объектом ( у которого есть команда, на которую установлен байдинг из контрола), удалить контрол из дерева контролов, но где-то оставить ссылку на объект из DataContext. Потому и говорю, ситуация очень специфичная. Обычно в реализациях MVP+PresentationModel или MVVM объекты типа PresentationModel или ViewModel убиваются во время гибели самих View. Ну обычно нет в них смысла после гибели View, ну может быть на доли времени, чтобы собрать последнюю информацию. Я ни разу не встречал подобных реализация, хотя, конечно же, они могут быть. Все так, или есть еще случаи?

Знаете вы о том как работает эта утечка или нет, мне все равно. Мне было интересно разобраться в этом вопросе подробнее, потому я это и сделал. Спасибо за информацию.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37008957
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis GladkikhiВ них нет такого "феерического бреда"(буду придерживаться твоей терминологии), который ведет к большим накладным расходам и тормозам, как пообъектная валидация, когда она применима ко всему типу(длина строки,not null,etc)
Видимо я действительно глуп, расскажите, пожалуйста, поподробнее где здесь накладные расходы. Можете по пальцам показать?


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

Относительно утечек, вариантов тоже может быть большое разнообразие. Есть вполне определенные правила WPF\SL для поддержания гигиены. Не нужно даже ничего выдумывать и представлять, их нужно просто соблюдать, тогда не будет кариеса.
Для разработчиков системного слоя - это прописная истинна.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37009469
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Gladkikh,

Вы, чуть ранее, объясняли постоянную загрузку при отсутствии взаимодействия с компьютером какими-то руками разработчиков, высказывали соответствующие предположения. Чтобы было легче, объясните плз такую же ситуацию с сайтом компании, в которой вы работаете. Имеете отношение к его созданию и подобным проблемам?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37009482
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafm,

а черт его знает :)

P.S. надеюсь намек понятен ;)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37009485
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Gladkikhiscrafm,

а черт его знает :)

P.S. надеюсь намек понятен ;)
нет, не понятен. Зачем на реальную картинку накладывать какое-то левое изображение?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37009487
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Gladkikhiscrafm,

а черт его знает :)

насчет "черт его знает"... В предыдущий раз вы высказали предположения, объяснив отсутствие ответа отсутствием исходников. Я подумал, что в этот раз получится без предположений, имея, возможно, доступ к исходникам.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37009570
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumМСУ, вам понравится, если вас начнут звать "Данилкой", демонстрируя своё пренебрежение к вам?
Ради бога, я на этом не заостряю внимание. Это как присказка детства - "будешь обращать излишнее внимание за кличкой - она твоя". Согласны, Андрюша?

CompositumМожет как-то повежливей будете?
Куда уж вежливей.

Denis GladkikhЯ просто хочу сказать, что раз вы такие на форуме завсегдатые, и даже знаете о каких-то проблемах, то их сначала нужно разобрать самому. И не говорить "может случиться", а говорить "случиться в случае...". Это же просто, ведь так?
Просто не нужно говорить, что мы такие на форуме завсегдатаи и даже не знаем о каких-то проблемах. Нужно просто уделить вопросу большее внимание, нежели чем просто трепотня в блоге. Во-вторых, только щас заметил, что модератор потёр моё вчерашнее сообщение о пари, на которое я согласился. Суть пари заключалась в том, что если я описываю ситуацию, в которой будет утечка (даже можете нулить датаконтекст) - Вы прилюдно извиняетесь. Согласны на пари?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37009652
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafmDenis Gladkikhiscrafm,

а черт его знает :)

P.S. надеюсь намек понятен ;)
нет, не понятен. Зачем на реальную картинку накладывать какое-то левое изображение?

Как не понятен? Откуда я знаю чего у вас процессор сейчас не спокоен? Вы скажите хоть какие действия произвели. Я вот видите показал скриншот с sql.ru, а у меня оба ядра на 100% загружены, только вот в этот момент работало что-то еще фоном.

Во вторых, если вы к этому клоните, я не имею отношение к сайту, более того, я даже не знаю кто имеет к нему отношение. У нас все таки компания не из 10 человек ;) Но для вас, если так интересно я попробую найти источник проблемы из исходников сгенерируемой таблицы, только опишите действия. Правда не понимаю, зачем вам это нужно.

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

А я и не говорю, что вы не знаете о проблемах. Я понимаю, что вы их знаете. МСУ, этот треп, который развернулся на этих страницах, похож на то, как в начальный класс приходит новый ребенок, а все остальные начинают к нему приставать, типа "а ты где живешь?", "а папа у тебя кем работает?", "а старший брат есть?". Ну честно. Я безусловно с радостью посмотрю на ту проблему где возникнет memory leak без обнуления datacontext. МСУ, если я вас чем-то уже обидел, извините, и пари тут не при чем. Я не гордый, говорил уже не раз. ;)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37009656
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Gladkikhiscrafmпропущено...

нет, не понятен. Зачем на реальную картинку накладывать какое-то левое изображение?

Как не понятен? Откуда я знаю чего у вас процессор сейчас не спокоен? Вы скажите хоть какие действия произвели. Я вот видите показал скриншот с sql.ru, а у меня оба ядра на 100% загружены, только вот в этот момент работало что-то еще фоном.

думаете здесь кто-то кого-то разводит? Не смешите.
Ладно, все понятно.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37009677
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhНо для вас, если так интересно я попробую найти источник проблемы из исходников сгенерируемой таблицы, только опишите действия. Правда не понимаю, зачем вам это нужно.

есть в планах строчка о реализации "кабинетного" интерфейса, я просто изучаю возможные проблемы при использовании различных средств разработки. С показанной проблемой столкнулся не первый раз, думал знаете ответ (типа MVP. Или эти три буквы не за знания и опыт дают, а за маркетинговую активность?). Действия и в первом и во втором случае, показанных здесь, одинаковы: клинуть по ссылке и убрать руки от компьютера. Хотя повторяюсь. Это уже было описано, невнимательны.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37009724
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafm,

iscrafmдумаете здесь кто-то кого-то разводит? Не смешите.
Ладно, все понятно.
Я не про развод говорю, а про то что непонятно откуда проблема идет. У вас может быть стоят какие-нибудь плагины к браузеру, которые и тормозят работу. Самый распространенный из них это плагин от skype, посмотрите и попробуйте убить его, уменьшится ли процент использование процессора. Ну и так же попробуйте в другом браузере, там та же картина или нет? Как я понимаю разговор идет про страницу www.msiuk.com/softwares.asp. На ней работает Flash (даже предположить не могу кто у нас на Flash что-то делает, скорее всего сайт просто заказывали у кого-то), который меняет картинки с определенной периодичностью. Подозреваю, что это и вызывает у вас использование процессорного времени, у меня такого заметного использования нет. То есть процессор используется, но используется процессом iexplorer не более 4% (может у меня просто компьютер немного помощнее вашего).

iscrafmесть в планах строчка о реализации "кабинетного" интерфейса, я просто изучаю возможные проблемы при использовании различных средств разработки. С показанной проблемой столкнулся не первый раз, думал знаете ответ (типа MVP. Или эти три буквы не за знания и опыт дают, а за маркетинговую активность?). Действия и в первом и во втором случае, показанных здесь, одинаковы: клинуть по ссылке и убрать руки от компьютера. Хотя повторяюсь. Это уже было описано, невнимательны.
Вы не повторяетесь, в первый раз вы просто кинули скриншот, и сказали что ничего не трогали. Я так же попробовал открыть сайт, нашел ту страницу, но у меня такого эффекта не было. И не нужно тут затрагивать статусы, их дают за многое и за разное. Но они не ставят человека в другой ранг: "человек делает себе статусы, а не статусы делают человека".

Если изучаете возможные проблемы при использовании различных средств разработки, тогда давайте об этом и говорить. Сайт нашей компании совсем не показатель того, как нужно разрабатывать сайты. Скажите сначала что вы хотите разработать, а мы подскажем технологию.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37009739
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis GladkikhА я и не говорю, что вы не знаете о проблемах. Я понимаю, что вы их знаете. МСУ, этот треп, который развернулся на этих страницах, похож на то, как в начальный класс приходит новый ребенок, а все остальные начинают к нему приставать, типа "а ты где живешь?", "а папа у тебя кем работает?", "а старший брат есть?". Ну честно. Я безусловно с радостью посмотрю на ту проблему где возникнет memory leak без обнуления datacontext. МСУ, если я вас чем-то уже обидел, извините, и пари тут не при чем. Я не гордый, говорил уже не раз. ;)

Треп ты сам начал в лучших и хамоватых традициях Net'овских веток.
Никто к тебе не придирается. Желание во всем разобраться самому похвально, но есть одно но. Твое графоманство вредно, тем более на страницах весьма уважаемого ресурса, как codeproject. Если ты сам со всеми своими сертификатами, скачешь по верхам и не видишь жирных минусов и ошибок, то что говорить о других?
Модератор: Я публично извиняюсь перед МСУ, Denis Gladkikh и i, но следующий оффтоп буду грохать на корню. Надоел этот ситком!
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37009768
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iDenis GladkikhА я и не говорю, что вы не знаете о проблемах. Я понимаю, что вы их знаете. МСУ, этот треп, который развернулся на этих страницах, похож на то, как в начальный класс приходит новый ребенок, а все остальные начинают к нему приставать, типа "а ты где живешь?", "а папа у тебя кем работает?", "а старший брат есть?". Ну честно. Я безусловно с радостью посмотрю на ту проблему где возникнет memory leak без обнуления datacontext. МСУ, если я вас чем-то уже обидел, извините, и пари тут не при чем. Я не гордый, говорил уже не раз. ;)

Треп ты сам начал в лучших и хамоватых традициях Net'овских веток.
Никто к тебе не придирается. Желание во всем разобраться самому похвально, но есть одно но. Твое графоманство вредно, тем более на страницах весьма уважаемого ресурса, как codeproject. Если ты сам со всеми своими сертификатами, скачешь по верхам и не видишь жирных минусов и ошибок, то что говорить о других?
Модератор: Я публично извиняюсь перед МСУ, Denis Gladkikh и i, но следующий оффтоп буду грохать на корню. Надоел этот ситком!

Уважаемый i, перед вами я так же готов извиниться, если я вас как-то обидел. А так же перед модератором, и всеми участниками треда, если виновник этого трепа считаете меня, в будущем буду только по делу.

Вы указали мне на одну из ошибок, чем я конечно же признателен, и об этой ошибке я напишу в статье, и в той же что лежит на codeproject, чтобы не смущать народ, и в будущем никто не попался на эту ошибку. Если хотите я даже могу указать вас, как автора, указавшего на ошибку.

Уважаемый модератор, прошу не удалять это сообщение. Надеюсь что дальше мы переведем русло в другое направление, и общаться будем только по делу.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37009791
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis GladkikhВы указали мне на одну из ошибок, чем я конечно же признателен, и об этой ошибке я напишу в статье, и в той же что лежит на codeproject, чтобы не смущать народ, и в будущем никто не попался на эту ошибку. Если хотите я даже могу указать вас, как автора, указавшего на ошибку.

Уважаемый модератор, прошу не удалять это сообщение. Надеюсь что дальше мы переведем русло в другое направление, и общаться будем только по делу.

Лучше укажи в статье какие другие существуют решения для валидации с их + и -. Вот это будет интересно.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37009801
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iDenis GladkikhВы указали мне на одну из ошибок, чем я конечно же признателен, и об этой ошибке я напишу в статье, и в той же что лежит на codeproject, чтобы не смущать народ, и в будущем никто не попался на эту ошибку. Если хотите я даже могу указать вас, как автора, указавшего на ошибку.

Уважаемый модератор, прошу не удалять это сообщение. Надеюсь что дальше мы переведем русло в другое направление, и общаться будем только по делу.

Лучше укажи в статье какие другие существуют решения для валидации с их + и -. Вот это будет интересно.

А какие еще знаете методы валидации средствами Silverlight, кроме валидации на Exception, IDataErrorInfo и INotifyDataErrorInfo?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37009858
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhЯ не про развод говорю, а про то что непонятно откуда проблема идет. У вас может быть стоят какие-нибудь плагины к браузеру, которые и тормозят работу. Самый распространенный из них это плагин от skype, посмотрите и попробуйте убить его, уменьшится ли процент использование процессора. Ну и так же попробуйте в другом браузере, там та же картина или нет?
спасибо. Скорее всего проблемы с Flash именно на этом компьютере. Попробовал этот пример на другом - такого поведения действительно не наблюдается.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37010261
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis Gladkikhiпропущено...


Лучше укажи в статье какие другие существуют решения для валидации с их + и -. Вот это будет интересно.

А какие еще знаете методы валидации средствами Silverlight, кроме валидации на Exception, IDataErrorInfo и INotifyDataErrorInfo?

Я имел ввиду не интерфейсы, а готовые фреймворки
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37011508
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...На правах оффтопа. Подраскурил статью на хабре, жесть. За такие статьи п е сателям нужно, минимум, линчевать моск.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012041
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Данил, а ведь смысл в этом есть. Иногда предметная область очень заковыристая, и переводить на английский имена хитровывернутых методов бывает непросто. Конечно, ситуацию частично спасают "подсказки" для интеллисенса, но мысль, что гораздо проще было бы назвать метод по-русски и не париться, нет-нет да и возникнет. Хотя пока не пробовал.
А надо бы. В конце концов, переименовать метод обратно в студии можно парой мышекликов.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012261
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь, ну так словари карманные ?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012345
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чем не нравиться?
Код: plaintext
1.
ПодобратьВозможныеРабочиеМеста(List<ПроцессорНормативногоПроцесса> процессоры)
ЗагрузитьПроизводственныйКалендарьПроцессораРасчетного(ПараметрыПроцессораПроцессаРасчетного процессор)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012383
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
ViPRosчем не нравиться?
Код: plaintext
1.
ПодобратьВозможныеРабочиеМеста(List<ПроцессорНормативногоПроцесса> процессоры)
ЗагрузитьПроизводственныйКалендарьПроцессораРасчетного(ПараметрыПроцессораПроцессаРасчетного процессор)


А если так?
Код: plaintext
1.
2.
3.
4.
var List<ПроцессорНормативногоПроцесса> процессоры= new List<ПроцессорНормативногоПроцесса>();
var рабочиеМеста = процессоры.SelectMany(p => p.ВозможныеРабочиеМеста())

var производственныйКалендарь = расчетныйПроцесс.Загрузить<ПроизводственныйКалендарь>();
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012422
__ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i seeИногда предметная область очень заковыристая, и переводить на английский имена хитровывернутых методов бывает непросто.
Вопрос не в том, можно или нельзя переводить (русские термины предметной области на английский язык)
И не в том, просто или непросто.
Вопрос в том - нужно ли этим заниматься. И если нужно, то по какой такой производственной необходимости.

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

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

Ежели человек сидит на русской винде, програмит в русифицированной студии, по Ф1 лезет в переведённый MSDN, в коде пишет комментарии-ворнинги-туду по русски, и рисует полторы формочки с русским интерфейсом для бухгалтерши Сары Моисеевны - перед кем он крутость выпячивает, ежеминутно заглядывая в словарь, и попёрдывая вырисовывая аглицкие букафки в названиях переменных?
Не родился шекспиром, заказчик у тебя не шекспир, начальник у тебя не шекспир, коллеги у тебя не шекспиры, будешь увольняться, так и на смену тебе не шекспир придёт - ну и пиши по-русски.

Бывают конечно объективные причины.
Начиная с незрелости инструментария, заканчивая проектами "наружу" (или с привлечением сил "извне").
Но если оных объектывных нет на горизонте, то непонятно за каким таким прыщавым самолюбованием себя же и мучать.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012426
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__ЛП,
я, в сущности, о том же. Но писать имена классов и методов заставляет не самоторчание, а банальная программистская инерция и подсознательная боязнь кириллической кодировки, оставшаяся с доюникодовских времён.
Кроме того, неизвестно, как отреагирует на мешанину английских операторов и русских наименований классов глаз и мозг (Данил, мозг - это моск )
Поставлю дерзкий эксперимент - попробую задействовать в проекте русскую терминологию.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012450
__ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i seeКроме того, неизвестно, как отреагирует на мешанину английских операторов и русских наименований классов глаз и мозг
Отключи подсветку синтаксиса. Поработай денёк. Включи подсветку синтаксиса.
Это не "мешанина", это как раз наоборот, помощь глазу и мозгу в более чётком разделении мух и котлет.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012468
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__ЛПi seeКроме того, неизвестно, как отреагирует на мешанину английских операторов и русских наименований классов глаз и мозг
Отключи подсветку синтаксиса. Поработай денёк. Включи подсветку синтаксиса.
Это не "мешанина", это как раз наоборот, помощь глазу и мозгу в более чётком разделении мух и котлет.Ты абсолютно прав. Я переименовал свойства и методы у нескольких классов. Чётко видно, где синтаксис языка, а где терминология предметной области.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012482
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
i seeКроме того, неизвестно, как отреагирует на мешанину английских операторов и русских наименований классов глаз и мозг (Данил, мозг - это моск )

"Кому, что нравится" - сказал еж, слезая с сапожной щетки.
Мой мозг представление модель уже воспринимать отказывается. Великий и могучий проигрывает информационную войну. На других просторах СНГ ситуация еще хуже(может, сейчас уже лучше) - своей технической терминологии нет
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012485
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i,

че ты там хотел сказать?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012490
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iМой мозг представление модель уже воспринимать отказывается. Великий и могучий проигрывает информационную войну. На других просторах СНГ ситуация еще хуже(может, сейчас уже лучше) - своей технической терминологии нетПредставление модель я тоже не пойму. Но речь идет о том, что по-русски называются сущности предметной области. Синтаксис языка и программерская терминология остаются англоязычными - нельзя не признать, что для этого английский язык более подходящ.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012507
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i see,

да не английские они, а просто символичесое обозначние чего то
мне пофиг что означет for или static запросто могло бы быть гургу и тумаз
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012513
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosi see,

да не английские они, а просто символичесое обозначние чего то
мне пофиг что означет for или static запросто могло бы быть гургу и тумаз
Спорить не буду, хотя вообще-то английские :)
Но суть не в этом. А в том, что операторы языка вполне могут быть гургу и тумаз, а вот с сущностями объектной модели работать значительно удобнее, если это не гургу и тумазы, а Документы, Сотрудники, Счета-Фактуры и проч.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012516
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i see,

я о том и гворю гургу и тумаз нас заставляют
а остально надо писать на том языке, на каком надо (самому, заказчику, и т.д.)
я как то умничл и написал типа такие названия RecurыiveType и т.д.
тогда казалось что это что то означает
каждый раз блин приходится разобрать код что бы понять что это за рекурсив и что за тип
когда поймешь вроде лень переименовать :(
Я вс теперь пишу на русском в БД языке и везде
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012518
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
ViPRosi,

че ты там хотел сказать?

Это и хотел сказать, что непонятно. Если я правильно понимаю(в чем не уверен ;-), - ViewModel.
Гавайская смесь может получиться
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012520
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i,

да пофиг все эти вьюмью
у меня называется просто
СоздатьПользовательскийИнтерфейсДляМакротипа("Процесс расчетный")
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012535
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
ViPRosi,

да пофиг все эти вьюмью
у меня называется просто
СоздатьПользовательскийИнтерфейсДляМакротипа("Процесс расчетный")

А ПользовательскийИнтерфейс, что означает?Форма?Диалог?Закладка?...?????
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012553
__ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i seeViPRosi see,

да не английские они, а просто символичесое обозначние чего то
Спорить не буду, хотя вообще-то английские :)
i see, не будешь спорить - и правильно. Не английские. От английского языка в шарпе одни ошмётки.
Ну или это какой-то очень странный английский. В котором есть слова foreach, bool, int, в котором "ИЛИ" записывается как ||, "И" записывается как &&, begin-end записывается как {}, и т.п.


Вот для сравнения.
Есть SQL. В котором, с некоторыми условностями, как слышится, так и пишется (для англоговорящих).
А раньше были и такие причуды для работы с БД, как например MUMPS.
Постоянно вспоминаю пример ASCRUS'а из соседнего форума:
"Запас компактности" рассмотрим на примере: записать во все Заказы, сделанные в этом году (позже 31 декабря 1998 года) Покупателями из Города London, Дату заказа 1 января 1999 года:

- если нет индекса по Дате заказа для привязанных к Покупателю Заказов:

n ea,ez
s ea="" f s ea=$$O^%cpad("A",3,"London",ea) q:ea="" d
.s ez="" f s ez=$$OC^%cpadc("A","Z",1,ea,ez) q:ez="" i
$$G^%cpgd("Z",ez,2,"",1)>19981231 d U^%cpuh("Z",ez,2,19990101)
.q
q

- если есть индекс:

n ea,ez,dt
s ea="" f s ea=$$O^%cpad("A",3,"London",ea) q:ea="" d
.s dt=19981231 f s dt=$$OZ^%cpadi("A","Z",1,ea,2,dt) q:dt="" s
ez="" f s ez=$$O^%cpadi("A","Z",1,ea,2,dt,ez) q:ez="" d
U^%cpuh("Z",ez,2,19990101)
.q
q
717385
Как говорится, почувствуйте разницу с SQL


Так вот.
В отличие от паскале-подобных языков (включая VB), си-подобные языки и прочие перлы, с ихними сокращательно-аббревиатурно-символическими скотоложествами - такое же мумпсоподобное говнищще, по большому то счёту. К английскому языку относятся постольку поскольку. Просто потому, что ни на какие другие человечьи языки вообще никак не похожи.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012661
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
__ЛПТак вот.
В отличие от паскале-подобных языков (включая VB), си-подобные языки и прочие перлы, с ихними сокращательно-аббревиатурно-символическими скотоложествами - такое же мумпсоподобное говнищще, по большому то счёту. К английскому языку относятся постольку поскольку. Просто потому, что ни на какие другие человечьи языки вообще никак не похожи.

Спорить не буду, но ежикам разные щетки нравятся. Паскаль только у нас прижился, а на C полмира пишет. Программисты для себя писали, чтобы не ломать себе пальцы. До сих пор помню, как меня бесил этот многословный правильный английский(особенно - обязательный End да еще с точкой в конце файла), когда переходил на Delphi.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012663
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__ЛП
Со всем соглсен, кроме словарей. Каким бы ты не был божеством программирования, но очень часто встречаются в русской лексике соответствующие задачи, перевода которых ты не знаешь. Помогают словари. Встретить сейчас на рынке богатую смесь отличного девелопера и отличного upper intermediate инглишмена - вероятность 1% из ста, по крайней мере в столице.

i seeПоставлю дерзкий эксперимент - попробую задействовать в проекте русскую терминологию.
Комменты и описания ту ду и иже - да, классы, методы и код в частности - ни в коей мере. Русскую студию - печь.

ViPRosЯ вс теперь пишу на русском в БД языке и везде
Сахават, вот таких датабасе девелоперов всегда хотелось к стенке и очередью из калаша по пузяке :)

ViPRosСоздатьПользовательскийИнтерфейсДляМакротипа("Процесс расчетный")
Этапять!
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012720
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i,

А все что надо, что бы обработать макротип (это несколько связанных типов обычно).
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012739
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мусь, ты токо не нервничай, места не сервере много пока
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012741
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМусь, ты токо не нервничай, места не сервере много пока
"Саха", да тут не о месте я вещаю, а про бестпрактис как-бы. Вот потом такой код по-наследству достанется доброму человеку, ... Ни дай Бог.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012756
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну че будет? посмотрит на стиль и продолжить в том же духе
а стиль простой - все что можно описать на улице, надо описать на улице, а внутри интерпретировать
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012760
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я сморю всеэти вьюмью тоже практичеки этим и заняты, а мс какой то еще подобие аксеса выпустил, все стараются
но ихни подельки тебе нравтся а мои нет :)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012763
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мои бизнис объекты описывает аналитик, а ихний кодер
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012775
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosну че будет?
Будут проблемы, если этот код будет заюзан на машинах без русской локали. Только не нужно приводить доводы, что этот код впринципе не будет юзаться на машинах без русской локали. Во-вторых, это очевидная проблема для работы в команде при наличии аутсорс-девелоперов, которые не обязаны быть русскими и знать русский. В-третьих, не раз уже обсуждалось - это антипаттерн, причём злостный.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012794
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну нерусских ТОЧНО не будет, аутсорс и т.д. исключен априори :)
Это как раз один из способов сохранить свое авторство :)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012797
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замет , Сахавата уе нет нигде, випрос и т.д. усиленно стирают автора :)
даже на форуме твоими услиями стерли :)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012798
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУ, ну нерусских ТОЧНО не будет, аутсорс и т.д. исключен априори :)
Я же просил, не говорить об этом. Изначально расставляем себе грабельки.

ViPRosЭто как раз один из способов сохранить свое авторство :)
В этом-то и беда этого гавноподхода.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012804
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosЗамет , Сахавата уе нет нигде, випрос и т.д. усиленно стирают автора :)
даже на форуме твоими услиями стерли :)
Один только емэйл в випросовском профиле напоминает нам о чудодейственном пареньке из прошлых лет ;)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012807
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нормальны подход
требую поывешения зарплаты в 2 раза!!! Упала на треть за 3 года за счет инфляции, премии нет уже полгода
за 2 недели переведу на суахили и греческий если требования народа будут учтены
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012819
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosтребую поывешения зарплаты в 2 раза!!!
За что? За "этот" код и "эту" БД? Саха, я бы Вам зарплату в 2 раза понизил бы. И плетью по кистям нащёлкал бы!
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012820
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересный ты парень, а в проектированииБД есть еще один интересны
он сильно возмущается что я какой то классический объектный модель строю на РМД и слова у меня неправильные
надо грит вместо свойство писать характеристики вместо тип объект
и связь у меня вроде есть а вроде это не связь а ссылка
а в объекте не может быть ссылки так как на не на самого нет ссылки
во как
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012827
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это потому что какой то дейт сказал
а ты про какого то буча наверное счас начнешь
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012831
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Муся, попробуй создай бд из 700 табличек и посмотрю как ты будешь петь
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012836
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юсифыч, ну выражайте мысли яснее, ну итить же. Читать сложно, а то каша опять. Вечно у Вас с формулированиями проблемы были
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012843
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМуся, попробуй создай бд из 700 табличек и посмотрю как ты будешь петь
Наследие гемора один цэ структуры - уже ж обсуждали. В топку такие стратегии, особенно в разрезе "оптимизация запросов" + "производительность запросов". А-ля шарепоинт на данных в одной таблице. Индусы, не иначе - поубивавбынах.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012879
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

я имел ввиду, что когда перед тобой сложная задача, она потихоночку заставляет вводить собственные правила.
Мне ООП сразу понравился, но как только увидел ХЕЛПЕР класс где, понял что фигня этот ооп.
потом пошли фабрики классов, аспектные, ижексионно - ехтеншионные, таперача лямда и т.д.
т.е. полное фиаско
как то хотел переделать код девок
когда увидел тыщами классов с одним методом return false, то воще не стал мучиться
но оправдываться приходится
у меня на работе один крутой перец, чуть ли личный друг Буча и Фаулера, родной брат Дейта и Кодда, все время меня ругает за архитектуру, ООП и т.д
полгода пишет одну фигню и каждый месяц обещает закончить на следующем :(
все поправляет запятые и ищет в словаре слово на аглийском, примеривается к паттернам...
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012882
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так как фаулер этот бабки на этом делает, то скоро он начнет конституцию писать для прогеров и моральный кодекс
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012886
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
давай проверим
напиши ты ХП и сгенерирует ВИПРОС
посмотрим что у кого получается
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012905
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУ, я имел ввиду, что когда перед тобой сложная задача, она потихоночку заставляет вводить собственные правила.
А если эти правила по неопытности ошибке были сформулированые не правильно, а впоследствии выясняется, что "надо было не так, а вот так"?

ViPRosМне ООП сразу понравился, но как только увидел ХЕЛПЕР класс где, понял что фигня этот ооп.
Ну хелпер классы это еще не ООП ;) Это, скорей, готовые собранные функциональности, которые не хочется прибивать к бизнес слою. Поэтому, вынесите свои хелпер ошмётки в отдельную сборку, чтоб не мазолило ооповский глаз.

ViPRosпотом пошли фабрики классов, аспектные, ижексионно - ехтеншионные, таперача лямда и т.д.
т.е. полное фиаско
Фигасе, фиаско... Да этож красота - подрубил неймспес и подсосались тебе экстешены. Лямба вообще вне конкуренции - читабельно и коротко. Вы эт чего, Саха?

ViPRosу меня на работе один крутой перец, чуть ли личный друг Буча и Фаулера, родной брат Дейта и Кодда, все время меня ругает за архитектуру, ООП и т.д
Возможно, ругательства коллеги-божества не лишены основания? )

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

Рыцарь на белом коне (Knight in shining armor)происходит тогда, когда личность, которая не совершает ошибок, появляется на сцене и пытается починить всё, без сообщений о том, какие изменения он сделал/сделает и почему.

А Вы, Саха, больны этим антипаттерном:

Единственный знающий человек (Single head of knowledge)Единственный человек во всей организации контролирует жизненно-важную область ноу-хау или информации о внутренностях системы. Система оказывается "завязана" на этого человека. При его уходе или бездействии работа останавливается.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012927
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

последнее очень точно подмечено, потому все с этого и начинается
коней на переправе не меняют, больше овса!!! кони устали и мчутся хз куды а им овса жалко блин
антипаттерн тоже паттерн
я помню одного кодера он грил прога=алгоритмы+структуры
правда он ошибался пога = структуры + алгоритмы
во это паттерн был и есть
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012955
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУ, последнее очень точно подмечено, потому все с этого и начинается
Не согласен. Задача тимлида или руководителя девелоперов как раз-таки организовать правильно процесс, чтобы такого не было. Достигается элементарно - разграничение ответственности в разрезе задач (а не всего приложения(-ний)). Задача не выполнена.

ViPRosконей на переправе не меняют, больше овса!!! кони устали и мчутся хз куды а им овса жалко блин
Согласен, ибо поздно уже. Посему, наслаждайтесь "процессом" и не ворчите, что "у нас всё так плохо".
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012961
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

как спеца по безопасника советы нужны
куда эту фигню развивать?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37012990
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУ, как спеца по безопасника советы нужны куда эту фигню развивать?
Правила есть - это уже гуд.
Как сделано у меня тут: Membership Administrator
Добавьте возможность множественности (plural relations). То есть, [блок-1] {может использовать} [блок-2], [блок-3], ..., [блок-n]. [блок] - это пользователь, роль или правило.

Добавить возможность динамик кода (dynamic blocks of code C#). То есть в момент вызова Can{x} можно выполнить определенный код (хранится в БД).

dynamic blocks of code C#


P.S. А, вообще, оффтоп уже конкретный пошел.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013030
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

значить побольше гранулярности
спс
да каой наифг офтоп
вес скл офтоп, а я ту по делу спрашиваю
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013064
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosда каой наифг офтоп
Оставляю Вас один на один с Вождём для урегулирования данного вопроса.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013084
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
Надеюсь, описывать плюсы "plural relations" безопасности Вам не нужно.

P.S. Иногда в задаче часто можно встретить такую политику:

юзер 1 может редактировать документы юзера 2 и юзера 3

"может редактировать документы" - это правило ( в частном случае , можно использовать и роль )
"юзер 1", "юзер 2", "юзер 3" - прльзователи

Многие программисты, встречая такую задачу, стараются слать в топку такие требования, ссылаясь на то, что современные готовые ролевые политики не обладают таким функционалом ("правила", наследования правил или ролей, групп, plural relations и иже). Но задача остаётся ею быть.

Можно и так задать:

юзер 1 и юзер 2 может редактировать документы юзера 3 и юзера 4

Можно вместо юзера комбинировать группы, роли и правила. Можно вообще всё в кучу. Таким образом, имея такую гибкую конфигурацию политик можно сформулировать достаточно сложное правило.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013098
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013125
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

понял я уже
это будет нужно для документооборта скорее всего, ну в принципе несложно добавить
спс
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013255
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУViPRos
Надеюсь, описывать плюсы "plural relations" безопасности Вам не нужно.


MCУ, у тебя неправильный справочник. Это делегирование прав. Многие программисты, которые про это знают, используют уже готовые велосипеды
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013300
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опишу плюсы динамической имплементации (dynamic blocks of code C#). Скажу честно, идею украл из рекламированную Севой системы NetSqlAzMan.

Например, рассмотрим правило CanEditDocuments (может редактировать документы).

Что имеем:

(1) Вызов CanEditDocument

(1.5) dynamic blocks of code

(2) Получение результата (true/false)

Суть динамической имплементации (dynamic blocks of code C#) - выполняться между первым и вторым пунктом. То есть, выполниться после пункта 1 и повлиять на пункт 2.

В простом понимании можно описать следующий алгоритм:

Код: plaintext
return CanEditDocument() && DynamicCodeResult()

Пример - в галерее .

По умолчанию - "DynamicCodeResult" возвращает true. Но есть возможность проверить какое-то условие и повлиять на резултат. В результате имеем еще более гибкую конфигурацию политики.

Например, не трудно составить такое правило:

разрешать пользователю редактировать доументы, если возраст пользователя > 30 лет и email пользователя начинается на "superuser" :)

Результатом будет создание правила "CanEditDocument" и соответствующей правкой в "dynamic blocks of code" этого правила.

Есть возможность отключить вообще "dynamic blocks of code" в приложении (в случае ненужности) для того, чтобы не выполнять лишнее условие через reflection.

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

Так что, Сахават, работать еще много над расширением безопасности :)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013312
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMCУ, у тебя неправильный справочник. Это делегирование прав. Многие программисты, которые про это знают, используют уже готовые велосипеды
Сева, Вы оперируете не теми терминами - делегирование прав - это просто (абстрактоно) раздача полномочий. У меня же - именно множестенные отношения.

Про делегирование - общий подход делегирования состоит в том, что делегировать нужно всегда, когда для этого есть возможность, максимальному количеству сотрудников, находящихся на самых низких этажах управленческой структуры, там где на практике реализуются принимаемые решения.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013383
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сева, если что, - из энциклопедия менеджмента: Делегирование прав и ответственности подчиненным

Предлагаю не вступать в полемику: плюс системы в том, что она является враппером над готовоым майкрософтским мембершипом, который используют очень многие .NET разработчики (особенно, что касается ASP.NET). Плюс, система работает и с AD. То есть, переход от обычного мембершипа к расширенному мембершипу - плавный и безболезненный.

Самое главное правило, которое я сформулировал - не должен сломаться работающий код.

Все старые приложения будут нормальное крутиться под кастомизированным мембершипом. Новый софт можно юзать с новыми возможностями, о которых я писал. Вот и всё.

Так что у кого "велосипед" - еще спорный вопрос. Стандартные ролевые политики не удовляетворяют даже минимальным требованиям, ты это и сам знаешь.

Большой минус NetSqlAzMan - нужно иметь свою таблицу юзверей, нужно писать (для веба) левые педальные роле провайдеры, профиль-провайдеры, юзер-провайдеры и т.д. То есть, возможность безболезненного и быстрого перехода с родного популярного мембершипа - нет в принципе. Нету наследования групп. Нету plural relations как класс.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013409
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУiMCУ, у тебя неправильный справочник. Это делегирование прав. Многие программисты, которые про это знают, используют уже готовые велосипеды
Сева, Вы оперируете не теми терминами - делегирование прав - это просто (абстрактоно) раздача полномочий. У меня же - именно множестенные отношения.

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

Сотрудник готовит документ, согласовывает его с другими, начальник отдела утверждает, директор подписывает. У каждого свои должностные обязанности без всякого наследования(босс не будет сидеть за печатной машинкой и телефоном).
Если директора нет, то он передает(делегирует) эту возможность вполне конкретному лицу/лицам
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013417
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iСотрудник готовит документ, согласовывает его с другими, начальник отдела утверждает, директор подписывает. У каждого свои должностные обязанности без всякого наследования(босс не будет сидеть за печатной машинкой и телефоном).
Если директора нет, то он передает(делегирует) эту возможность вполне конкретному лицу/лицам
Это уже процесс , а не политики безопасности. Решается легко с помощью WWF или своими средствами, кои никак не коррелируют с администрированием , о котором я вещаю :)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013611
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Ты правильно подчеркнул, то что ты вещаешь, действительно,
МСУ никак не коррелируют с администрированием :)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013667
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iТы правильно подчеркнул, то что ты вещаешь, действительно,
МСУ никак не коррелируют с администрированием :)
Еще раз. Имеем:
1. Секьюрити, описанный мной.
2. Воркфлоу, описанный тобой.

Внимание вопрос: кто "не правильно" вещает. Просьба подумать, прежде чем отвечать.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013744
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
К чему относятся: имеет право "подписывать документ","согласовывать документ", "опубликовывать документ"?

МСУПросьба подумать, прежде чем отвечать.

А Workflow - последовательность, в которой могут выполнятся эти действия. На нее могут накладываться правила разграничений прав доступа.

Последовательность, правила, права доступа - три большие разницы.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37013808
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iК чему относятся: имеет право "подписывать документ","согласовывать документ", "опубликовывать документ"?
К секьюрити, конечно.

iА Workflow - последовательность, в которой могут выполнятся эти действия. На нее могут накладываться правила разграничений прав доступа.
Могут. А к чему тогда в начале вот это сказал:

iЭто делегирование прав. Многие программисты, которые про это знают, используют уже готовые велосипеды

?

И о каких готовых велосипедах речь? Способны ли эти велосипеды решить задачу безпроблемной миграции с существующей безопасности? Способны ли эти системы дать полный набор инструментария, о котором я увещеваю?

Если отталиваться от твоего изначального потал, то делегирование - абстрактное понятие в рамках обсуждения темы. Любой пук админа в разере секьюрити - это делегирование. Тогда непонятно, зачем ты стал акцентировавть внимание на этом делегировании, когда я начал рассказывать о "plural relations". Ясен пень, что всё это делегирование.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37014143
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУiК чему относятся: имеет право "подписывать документ","согласовывать документ", "опубликовывать документ"?
К секьюрити, конечно.

iА Workflow - последовательность, в которой могут выполнятся эти действия. На нее могут накладываться правила разграничений прав доступа.
Могут. А к чему тогда в начале вот это сказал:

iЭто делегирование прав. Многие программисты, которые про это знают, используют уже готовые велосипеды

?

И о каких готовых велосипедах речь? Способны ли эти велосипеды решить задачу безпроблемной миграции с существующей безопасности? Способны ли эти системы дать полный набор инструментария, о котором я увещеваю?

Если отталиваться от твоего изначального потал, то делегирование - абстрактное понятие в рамках обсуждения темы. Любой пук админа в разере секьюрити - это делегирование. Тогда непонятно, зачем ты стал акцентировавть внимание на этом делегировании, когда я начал рассказывать о "plural relations". Ясен пень, что всё это делегирование.

MCУ, велосипеды были способны на все это задолго до того, как ты передрал частично функционал у них.
А в их документации нет русского понимания общепринятых и всем понятных терминов
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37014169
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMCУ, велосипеды были способны на все это задолго до того, как ты передрал частично функционал у них.
Ну давай на пальцах:
Наследования привилегий - нету

Множественного отношения - нету

Костыль в БД у них - есть (у меня же юзается родная мембершип БД, которая развертывается готовым инсталлятором от MS)

Родных ASP.NET роле-провайдеров, профиле-пролвайдеров и юзер-провайдеров у них нет. Весь этот ужас придется писать самому. У меня же - ни строчки провайдерного кода, всё крутится по дефолту, так же работает и дефолтная родная безопасность.

У меня - миграция на расширенную безопасность - пнул дистриб, он сам расширил существующий мембершип. Всё. Программист получил расширенную безопасность + ASP.NET сайт админка в подарок.

iА в их документации нет русского понимания общепринятых и всем понятных терминов
Эти термины в той или иной степени сводятся к одному - к задаче, которую нужно выполнить. Не важно как ты называешь алычу - алычёй или сливой, абрикос - абрикосом или жердёлой. Факт только один - нужно сделать так, чтобы работало должным образом. И не важно, где это будет работать - в Шанхае, Страссбурге или Удмутрии, - оно должно работать.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37014190
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ в подарок девелопер получает

"Health Monitoring module" (логи, кстати тоже родные, с удобным ридером + командами, вшитыми в объектную модель мембершип-расширения)

Пакет отчетов для мониторинга секьрити компании (естессно, всё расширяется по надобности)

+ система адаптирована и оттестирована под работу с большими массивами данных, собсно всё это в 1.8 версии

P.S. Плюс даётся урезанная редакция безопасности: Membership Administrator Standard Edition , без всех вкусностей полной редакции.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37014237
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУ+ в подарок девелопер получает

"Health Monitoring module" (логи, кстати тоже родные, с удобным ридером + командами, вшитыми в объектную модель мембершип-расширения)

Пакет отчетов для мониторинга секьрити компании (естессно, всё расширяется по надобности)

+ система адаптирована и оттестирована под работу с большими массивами данных, собсно всё это в 1.8 версии

P.S. Плюс даётся урезанная редакция безопасности: Membership Administrator Standard Edition , без всех вкусностей полной редакции.


Старый баян и всего лишь куцый функционал.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37014252
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iСтарый баян и всего лишь куцый функционал.
Ну я не ахти верстаю. Натрави суперверсталу, он сделает умопомрачительную верстку по дизайну. Но я не эту цель преследовал, тут уж прости.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37058184
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В сети появилась книга


Сам не увлекаюсь, местным на заметку.
P.S. просьба не разводить срачЪ ;d
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37058205
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredВ сети появилась книга

Сам не увлекаюсь, местным на заметку.
P.S. просьба не разводить срачЪ ;d
Индусским студентам нужно кормиться, вот и пишут порноту всякую :)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37058213
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нигде не встречал вот такую методику сращивания моделиМорды с мордой в режиме создания View Model First.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
    public class ViewModel : SomeBaseClassForINotifyPropertyChangedAndOtherCrap
    {        
        public object View
        {
            get { return _View; }
            set
            {
                SetViewData(null);
                _View = value;
                SetViewData(this);
                OnPropertyChanged(() => View);
            }
        }
        object _View;

        void SetViewData(object model)
        {
            if (View == null)
                return;

            var iView = View as IView;
            if (iView != null)
            {
                iView.Data = model;
                return;
            }

            var frameworkElementView = View as FrameworkElement;
            if (frameworkElementView != null)
            {
                frameworkElementView.DataContext = model;
                return;
            }
        }
    }

    public class ViewModel<TView> : ViewModel
    {
        public ViewModel(bool createView)
        {
            if (createView)
                View = Activator.CreateInstance<TView>();
        }

        public ViewModel()
            : this(true)
        { }

        public ViewModel(TView view)
            : this(false)
        {
            View = view;
        }

        public TView ViewAsT
        {
            get { return (TView)base.View; }
            set { base.View = value; }
        }

        protected override void OnPropertyChanged(string name)
        {
            base.OnPropertyChanged(name);
            if (name == "View")
                OnPropertyChanged(() => ViewAsT);
        }
    }

    public interface IView
    {
        object Data { get; set; }
    }

Мне представляется такая схема наиболее жизнеспособной. Интересны мнения по поводу недостатков и преимуществ этого подхода.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37058252
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, Лёнь. Порнушно. Тут в родном коде бехинде представления лучше общаться с ViewModel.
Ваш же способ пакуется в печь по причине непереносимости ViewModel - ибо жестко прибито гвоздями представление. Отоночё.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37058258
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНе, Лёнь. Порнушно. Тут в родном коде бехинде представления лучше общаться с ViewModel.
Ваш же способ пакуется в печь по причине непереносимости ViewModel - ибо жестко прибито гвоздями представление. Отоночё.Как раз наоборот. В кодбехинде логика железно прибита к представлению. В моём случае ViewModel может иметь свою иерархию наследования и взаимодействовать с разными типами View в зависимости от потребностей.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37058340
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В коде бехинде нет логики. Там только вызовы методов вьюмодели :)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37058348
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВ коде бехинде нет логики. Там только вызовы методов вьюмодели :)Тогда речь идёт о View First? Если так, то я говорю о ViewModel First.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37058351
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТам только вызовы методов вьюмодели :)OFF: Через ICommand лучше. :-)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37058353
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другими словами, коде бехинде выступает в роли презентационного слоя. А точнее - контроллера..
Баян, уже дискутировали. С примрами гавнокодига.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37058367
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУТам только вызовы методов вьюмодели :)OFF: Через ICommand лучше. :-)
Через коде бехинде гибче и больше возможностей. Тем более, он бесплатно генерится. Нечего ему пустовать :)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37058375
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВаш же способ пакуется в печь по причине непереносимости ViewModel - ибо жестко прибито гвоздями представление. Кстати, а чего в этом плохого? В большинстве случаев МодельМорды и Морда создаются одновременно и живут сообща. В случае, когда это не так - никто не заставляет применять такой способ. А про тестирование тоже уже много говорили. :-)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37058391
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЧерез коде бехинде гибче и больше возможностей. Тем более, он бесплатно генерится. Нечего ему пустовать :)Если МодельМорды инкапсулирована в Морду - при взаимодействии нескольких МоделейМорд приходится мутить средства для делегирования или приведения типов вроде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
class MyUserControl : UserControl
{
     public MyViewModel Data
     {
          get { return (MyViewModel)DataContext; }
          set { DataContext = value; }
     }
}

Учитывая, что дизайнер не любит наследования - эта необходимость весьма неприятна.
...
Рейтинг: 0 / 0
236 сообщений из 236, показаны все 10 страниц
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MVVM Framework. Кто какой использует?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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