Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Добрый день господа. Объясните мне пожалуйста, почему паттерн MVVM плотно используется в WPF? Можно или нужно ли его использовать в WinForms? А так же где можно почитать на русском языке про основные конструкции этого паттерна: Model, View, ViewModel, Controller. (Примеров полно, а вот детального описание взаимодействие не могу найти :( ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 15:29 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
в соседней ветке /topic/713538&pg=-1 Шайтан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 15:53 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Шайтанв соседней ветке /topic/713538&pg=-1 Шайтан В этой ветке я ни нашел ни один ответ на мои вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 16:04 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Используется он по одной простой причине - отделить логику от предстваления.Это значительно упрощает написание и тестирование.View не должно содержать кода, а ViewModel напрямую общаться с контролами.В WPF/SL это решается очень просто,в WinForms для реализации ICommand нужны специальные адаптеры и пляски с бубнами, а без него особого смысла нет. MVVM with WPF, Silverlight, and… Windows Forms в этой статье хорошо показано насколько в WinForms больше кода Статья на русском была в msdn magazine. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 16:30 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Вот еще интересно написано, правда не по-русски :) http://stackoverflow.com/questions/1153147/one-sentence-explanation-to-mvvm-in-wpf/1153246#1153246 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 16:30 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
мантру повторять 128 раз перед сном ежедневно Не забывать кто кому и сколько должен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 16:32 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Roman S. Golubin http://msdn.microsoft.com/ru-ru/magazine/dd419663.aspx после этого я смогу связать DataTable и DataGrid? ток честно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 16:36 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
koJIo6okпосле этого я смогу связать DataTable и DataGrid? ток честно Не понял. Это ответ на вопрос ТС "где можно почитать на русском языке про основные конструкции". При чем тут DataTable и DataGrid? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 16:44 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Roman S. Golubin, а эта про что была? /topic/713538&pg=-1 сор за офтоп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 16:47 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
SeVaИспользуется он по одной простой причине - отделить логику от предстваления.Это значительно упрощает написание и тестирование.View не должно содержать кода, а ViewModel напрямую общаться с контролами.В WPF/SL это решается очень просто,в WinForms для реализации ICommand нужны специальные адаптеры и пляски с бубнами, а без него особого смысла нет. MVVM with WPF, Silverlight, and… Windows Forms в этой статье хорошо показано насколько в WinForms больше кода Статья на русском была в msdn magazine. Для WinForms чтобы отделить логику от представления я использую Model-View-Presenter. Почему MVP не используют в WPF? Ведь тоже самое - отделение логики. Или мне надо было задать вопрос по другому: чем отличаются MVP от MVVM (основные концептуальные отличия интересует)? Спасибо. 2Roman S. Golubin Спасибо, я эту же статью до Вашего ответа на английском читал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 16:58 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Сравни диаграммы из соседней ветки.В MVP в отличии от MVVM, Presenter и View не разделены и содержат явные ссылки друг на друга(знают все,как говорит Роман), а это весьма неудобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 17:09 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
SeVaСравни диаграммы из соседней ветки.В MVP в отличии от MVVM, Presenter и View не разделены и содержат явные ссылки друг на друга(знают все,как говорит Роман), а это весьма неудобно. Кстати сказать, диаграмма MVP в соседней ветке - абсолютно не соответствует реальному MVP... В том-то и основной "фикус-пикус" реального MVP, что он убирает все ненужные зависимости из тройки MVC и оставляет только то, что ему "лично" нужно для управления уровнем представления, а именно: методы для обновления модели; методы для обновления "вью"; события от "вью" на пользовательские действия. При этом - ни модель, ни "вью" не обязаны ничего знать о том, что они с кем-то там "взаимодействуют"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 17:38 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
GFXИли мне надо было задать вопрос по другому: чем отличаются MVP от MVVM (основные концептуальные отличия интересует)?как раз в указанной мной теме эти диаграммы и приведены Шайтан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 17:40 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
SeVaСравни диаграммы из соседней ветки.В MVP в отличии от MVVM, Presenter и View не разделены и содержат явные ссылки друг на друга(знают все,как говорит Роман), а это весьма неудобно. Не согласен. View ни чего не знает про Presenter. View всего лишь реализует интерфейс, который передается в Presenter. Код: 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. типа вот так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 17:42 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Забыл написать что CurrentUser - это модель, статический объект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 17:44 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
GFXЗабыл написать что CurrentUser - это модель, статический объект Реализаций MVP вагон и маленькая тележка.Есть такие,где у View есть ссылка на презентер или они содержат общий контекст ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 17:55 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
SeVaGFXЗабыл написать что CurrentUser - это модель, статический объект Реализаций MVP вагон и маленькая тележка. Есть такие,где у View есть ссылка на презентер или они содержат общий контекст Только такие т.н. "реализации" неправильно называть MVP - ибо: "как вы яхту назовете..." (с). З.Ы. названия паттернам, в частности, придумали еще и затем, чтобы не путаться в определениях реализаций, которых "вагон и маленькая тележка"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 18:02 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
qu-quSeVaСравни диаграммы из соседней ветки.В MVP в отличии от MVVM, Presenter и View не разделены и содержат явные ссылки друг на друга(знают все,как говорит Роман), а это весьма неудобно. Кстати сказать, диаграмма MVP в соседней ветке - абсолютно не соответствует реальному MVP... В том-то и основной "фикус-пикус" реального MVP, что он убирает все ненужные зависимости из тройки MVC и оставляет только то, что ему "лично" нужно для управления уровнем представления, а именно: методы для обновления модели; методы для обновления "вью"; события от "вью" на пользовательские действия. При этом - ни модель, ни "вью" не обязаны ничего знать о том, что они с кем-то там "взаимодействуют"... "Фикус-пикус" MVVM cостоит в том, что самые неудобные методы для обновления View полностью убираются.Пишутся базовые наборы ViewModel(конкретные реализации явно в отдельных классах можно и не создавать,а вытаскивать их через DI) и все.Остается только прописать бизнес-логику в отдельных сущностях.Все упрощается на порядки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 18:07 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
qu-quSeVaGFXЗабыл написать что CurrentUser - это модель, статический объект Реализаций MVP вагон и маленькая тележка. Есть такие,где у View есть ссылка на презентер или они содержат общий контекст Только такие т.н. "реализации" неправильно называть MVP - ибо: "как вы яхту назовете..." (с). З.Ы. названия паттернам, в частности, придумали еще и затем, чтобы не путаться в определениях реализаций, которых "вагон и маленькая тележка"... Эти названия придумал не я,посмотри у Фаулера.Задачи и вкусы бывают разные.Для одних их правильно совершенно не совпадает с правильностью других ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 18:10 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
ЗЫ Лично для меня,более удобоваримый и гибкий вариант с общим контекстом, а не с интерфейсами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 18:12 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
SeVaqu-quSeVaСравни диаграммы из соседней ветки.В MVP в отличии от MVVM, Presenter и View не разделены и содержат явные ссылки друг на друга(знают все,как говорит Роман), а это весьма неудобно. Кстати сказать, диаграмма MVP в соседней ветке - абсолютно не соответствует реальному MVP... В том-то и основной "фикус-пикус" реального MVP, что он убирает все ненужные зависимости из тройки MVC и оставляет только то, что ему "лично" нужно для управления уровнем представления, а именно: методы для обновления модели; методы для обновления "вью"; события от "вью" на пользовательские действия. При этом - ни модель, ни "вью" не обязаны ничего знать о том, что они с кем-то там "взаимодействуют"... "Фикус-пикус" MVVM cостоит в том, что самые неудобные методы для обновления View полностью убираются.Пишутся базовые наборы ViewModel(конкретные реализации явно в отдельных классах можно и не создавать,а вытаскивать их через DI) и все.Остается только прописать бизнес-логику в отдельных сущностях.Все упрощается на порядки. Я не оспаривал "удобство" MVVM по сравнению с MVP (да и вообще, обсуждения MVVM пока не касался). Я просто указал на факт, что вы в своем посте обсуждали преимущества MVVM над ненастоящим MVP (у которого M связана с V, а V связано с P, как на картинке Р. Голубина) - таких MVP не бывает, а если и бывают, то это уже не MVP... З.Ы. "Фикус-пикус" MVVM cостоит в том, что самые неудобные методы для обновления View... заменяются "биндингом" через рефлексию... (т.к. другого "биндинга" в MS пока не придумали). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 18:41 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Настоящий или ненастоящий мало интересно,поскольку с MVP большая путанница,как и рефлексия в биндинге или нет.А вот скорость обновления в 60раз в секунду,которая стоит по умолчанию в SL, считаю черезмерной и ограничиваю 30.Такой скорости,как в SL у WinForms никогда не будет с любыми ухищраниями. Гораздо больше волнует то,что подобных презентеров Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. создавать не нужно совсем, в 90% хватает базовых. А все View содержат только конструктор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 19:36 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
qu-qu Проблема паттернов в их модности. Мне спустили сверху требование реализовать MVP. И когда я говорил, что в нашей ситуации ему не будет применения - довод был - у всех, значит есть применение, а у нас - нету? Мы что, типа, не люди что ли? Давай, делай! А фокус в том, что каждый юзерконтрол (View) - сугубо штучный, и принадлежит (отображает ) одной какой-то таблице, а если даже двум (или больше) - то берет эти таблицы целенаправленно (никакой возможности сделать это через базовый презентер нет - такова уж архитектура. И сейчас у меня в коде - один контрол - один интерфейс - один презентер на каждый из 30 обьектов бизнес-логики. То есть, 90 файлов вместо 30 - при плоском подходе. Когда приходится строить экран (заполнять комбо-боксы) в зависимости от выбранного значения в предыдущем контроле - я игнорирую этот паттерн, и запрашиваю данные напрямую, в обработчике эвента, так как вначале я конечно же наплел восьмерок - эвент - интерфейс - презентер - интерфейс - обновление контрола, но когда потребовалось изменить логику заполнения - пару комбо-боксов добавить, один убрать - то просто стер все нафиг, и написал заново - и уже без выкрутасов. И еще нигде - вообще и в принципе - не возникла не то что необходимость, а даже возможность использовать какой-либо презентер для другого View... Зато - ПАТТЕРН! МВП! Такой вот крик души. Тем более что "байндинг" - действительно через рефлексию и у "Инфраджистиков" тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 19:47 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Это не проблема MVP, а отсутствие системного слоя.Посмотрите,как реализован подобный паттерн в Cabana у IdeaBlade на базе SCSF.5-6 базовых View&Presenter, наследуясь от них можно получить реальную экономию в коде,если не задумыватся о спичках в виде binding'a c рефлексией. Но в WinForms подобные получаются довольно увесистыми, а без них - с шашками на танки. А биндинг в WPF позволяет забыть про все эти страсти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 20:38 |
|
||
|
|

start [/forum/topic.php?fid=21&msg=36329193&tid=1442960]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 352ms |

| 0 / 0 |
