Этот баннер — требование Роскомнадзора для исполнения 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 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Ну вот, Сева опять облажался с паттернами. Путать общеизветсный MVP и определять его связью модели с представлением && представление с презентёром Очередной отжиг, особенно про замес названий MVP у Фаулера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 21:25 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
MCУОчередной отжиг, особенно про замес названий MVP у Фаулера Специально для тебя бестолочь Retirement note for Model View Presenter Pattern Чтобы небыло путаницы,Фаулер MVP разделил на два. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 21:44 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
МСУ, если платят за объём кода (за XML - по двойной ставке) и применённые аббревиатуры - паттерны - вещь полезная. Главное - не заработать органическое поражение головного мозга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 22:08 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
SeVa Дурик, эти черти влепили туда supervising контроллер, сделали замес с MVC + влепили пассивное представление для управления моделью: контроллер прибит как к модели так и к представлению. Плюс ребята хатели нам что-то рачссказать и про анонимые представления, которым (по идее) должен управлять всё тот же контроллер (ужос), но с мая 2004 (!) года "реализация" на стадии разработки. Выкиньте в мусорный ящик этот старческий баян и выучите, наконец, что такое MVC. Не лапшекод студентов изобретателей, которым Вы страдаете, а именно MVC. Извернуть и переполпатить под конкретную задачу MVC можно по-разному, но это уже будет не паттерном, а поделкой. MVC - это MVC, а не тот шлак, который Вы слили в тред. Учитесь, студент. Ваше время еще не пришло для решения серьезных вопросов P.S. Удачи, я зарекался не общаться с Вами. Толку от Вашего пустозвония - ноль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 22:09 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
ИзопропилМСУ, если платят за объём кода (за XML - по двойной ставке) и применённые аббревиатуры - паттерны - вещь полезная. Главное - не заработать органическое поражение головного мозга. Изопропил, абсолютно с Вами согласен. Вы тоже знаете мою точку зрения. Тут я солидарен с Данатасом (с его "криком души" ). Лепить повсюду паттерны - не получится, если не хотим получить в итоге лапшекодище. Я как-то недавно говорил, что примеять паттерны - это одно, думать паттернами - это уже диагноз. В каждой задаче - своя практика. А пркатика и опыт может говорить только об одном: универсальных (на все случаи жизни) решений не бывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 22:13 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
МСУ, паттерны - это удобный способ именования стандартных приёмов программирования. До этого был визг про "структурное пограммирование" (типа без goto) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 22:26 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
ИзопропилМСУ, паттерны - это удобный способ именования стандартных приёмов программирования. До этого был визг про "структурное пограммирование" (типа без goto) Ну вот давайте пофилософствкуем на эту тему. Я как-то задумывался над такой мыслью: По сути своей, все мы имеем стандартные приёмы программирования (практики). Именно свои. Мы не задумывамся о их именовании, мы просто их используем. Когда нужно "вшить" некое расширение в плане логики или представления - мы просто делаем это, раширяя функционал и добавляя новый код. По сути своей - мы видоизменяем наши приемы под конкретную задачу, тем самым порождая некий видоизмененный приём собственного приготовления. Что происходит со стандартными паттернами: Мы используем стандартные приёмы программирования (практики). Но не именно свои, а конктерные: MVC, MVP, ... Мы задумывамся о их именовании, мы знаем их и их логику работы, - мы просто их используем. Но когда нужно "вшить" некое расширение в плане логики / представления / презентера / контроллера - мы просто делаем это, раширяя функционал и добавляя новый код. В результате рождается по сути побочный паттерн, расширяющий и делающий наш код и саму практику более удобными в применении (как нам кажется, но это не означает, что другим разработчикам это порождение будет так же вкусно). Результатом является новая практика, которая породилась и отнаследовалась от классической практики. Так появляются новые паттерны, которые мы (точнее, некий студент Сева) пытаются метлой замести в "стандартизованные" паттерны. И что в итоге? И в первом и во втором случаях имеем - 1) практики 2) видоизмененные практики Что это значит? Это значит, что ровным счетом ничего не изменилось, код не стал меньше по объемам, код не стал универсальным, код не стал сам пис а ться. Всё тоже самое . Как говорят, те же яйца только в профайл. А те, которые усердно бьются башкой об самосвал, рассказывая разработчками про шашки с танками - ... помолимся о них, друзья мои :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 22:40 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
МСУ, Проще. Замените свежее заимствование "паттерн" на старое "шаблон". "У меня шаблонное мышление". "Я мыслю шаблонами". Странно, не так ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 22:51 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Эк тебя пробрало после недолгого молчания.То,что и Фаулер для тебя дурак я нисколько не сомневался.С таким диагнозом,как у тебя другого быть не может.Тебе,что авторизация и аутентификация ,что MVC и MVP - нет никакой разницы.Не задумываясь лепишь пятые колеса(которые даже показать боишься),авось довезет. Отвали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 22:58 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
ИзопропилМСУ, Проще. Замените свежее заимствование "паттерн" на старое "шаблон". "У меня шаблонное мышление". "Я мыслю шаблонами". Странно, не так ли? Изоприл, странно изобретать велосипеды или использовать технологии ради только одного их применения,как это делает MCУ, вытягивая списки из хранимых процедур и делая затем join на клиенте.Если микроскопом забивают гвозди, то он здесь ни причем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 23:06 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
"Собираясь воспользоваться типовыми решениями, не забывайте, что они только отправная точка, а не пункт назначения" (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 23:13 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Изопропил"Собираясь воспользоваться типовыми решениями, не забывайте, что они только отправная точка, а не пункт назначения" (с) Хороший пример шаблонного выражения.Никто об этом не забывает и разработчики MS всячески подчеркивают, что их framework'и только основа, а не готовое решение,но с помощью ее можно гораздо быстрее доехать до финиша, чем на своем самокате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2009, 23:27 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
ИзопропилМСУ, Проще. Замените свежее заимствование "паттерн" на старое "шаблон". "У меня шаблонное мышление". "Я мыслю шаблонами". Странно, не так ли? Ничего странного, Изя. Таких людей есть (далеко не надо ходить - вон наш горе-теоретик Сева). И у них всё еще впереди :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 09:58 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
ИзопропилПроще. Замените свежее заимствование "паттерн" на старое "шаблон". "У меня шаблонное мышление". "Я мыслю шаблонами". Странно, не так ли?С другой стороны, ООП - это тоже типовое решение (шаблон, паттерн, называйте как хотите), хотя и встроенное в язык. А мыслить абстракциями ООП весьма практично. Главное - не впадать в состояние творческого безумия, и всё получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 10:15 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Алексей Кэто тоже типовое решение (шаблон, паттерн, называйте как хотите) Лёш, шаблон (паттерн, практика) по определению не может быть решением, как типовым так и нетиповым :) Алексей КА мыслить абстракциями ООП весьма практично. Фигасе философия пошла... Это как? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 10:53 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
МСУАлексей Кэто тоже типовое решение (шаблон, паттерн, называйте как хотите) Лёш, шаблон (паттерн, практика) по определению не может быть решением, как типовым так и нетиповым :)pattern == шаблон == типовое решение МСУАлексей КА мыслить абстракциями ООП весьма практично. Фигасе философия пошла... Это как? :)Это не философия, это суровая реальность. ЗЫ: Ненавижу философию... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 11:09 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
МСУ, Мольер ЖУчитель философии. Вы предпочитаете прозу? Г-н Журден. Нет, я не хочу ни прозы, ни стихов. Учитель философии. Так нельзя: или то, или другое. Г-н Журден. Почему? Учитель философии. По той причине, сударь, что мы можем излагать свои мысли не иначе, как прозой или стихами. Г-н Журден. Не иначе, как прозой или стихами? Учитель философии. Не иначе, сударь. Все, что не проза, то стихи, а что не стихи, то проза. Г-н Журден. А когда мы разговариваем, это что же такое будет? Учитель философии. Проза. Г-н Журден. Что? Когда я говорю: "Николь, принеси мне туфли и ночной колпак", это проза? Учитель философии. Да, сударь. Г-н Журден. Честное слово, я и не подозревал, что вот уже более сорока лет говорю прозой. Большое вам спасибо, что сказали. Так вот что я хочу ей написать: "Прекрасная маркиза, ваши прекрасные глаза сулят мне смерть от любви", но только нельзя ли это же самое сказать полюбезнее, как-нибудь этак покрасивее выразиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 11:12 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Алексей КИзопропилПроще. Замените свежее заимствование "паттерн" на старое "шаблон". "У меня шаблонное мышление". "Я мыслю шаблонами". Странно, не так ли?С другой стороны, ООП - это тоже типовое решение (шаблон, паттерн, называйте как хотите), хотя и встроенное в язык. А мыслить абстракциями ООП весьма практично. Главное - не впадать в состояние творческого безумия, и всё получится. Здоровый прагматизм,безусловно,должен присутствовать.Сполски в своем блоге, описывает три типа программистов: - Одни на любой чих будут обкладывать себя ОО слоями; - Вторые ничего не понимая в их диаграммах, тихо чувствуют себе неловко; - Третьи - duck tape программисты со скотчем в кармане и WD 40, не увлекаясь новомодными вещами, тихо финишируют,когда первые находятся еще на старте. Но это возможно только при наличии опыта и головы на плечах.За примером далеко ходить не нужно - Сахават на dataset'ах чудеса творит, а четвертый тип в своих Средствах управления с ними смотрится смешно. А все по одной простой причине - их деградация началась после прочтения единственной книжки(больше им не нужно и так все знают).Не понимая,как можно применить паттерны, они будут топать ногами и брызгать слюной, не замечая, что их поделки даже студентам неинтересны,мотивируя это тем,что все еще не доросли до их уровня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 11:14 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
SeVa, давайте вернёмся к обсуждению MVVM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 11:27 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Изопропилдавайте вернёмся к обсуждению MVVM Имеет ли смысл во всех случаях выносить из ViewModel в другой класс львиную долю логики и оставлять только "прослойку" для взаимодействия Model <=> View через датабиндинг? Даже если выносимый код используется только в контексте данного ViewModel и в дальнейшем изменения ситуации не планируется. Что об этом говорят идейные вдохновители MVVM? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 11:38 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
SeVa- Третьи - duck tape программисты со скотчем в кармане и WD 40 HDD Western Digital 40 GB ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 11:40 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Алексей КSeVa- Третьи - duck tape программисты со скотчем в кармане и WD 40 HDD Western Digital 40 GB ? Точно. Алексей КИзопропилдавайте вернёмся к обсуждению MVVM Имеет ли смысл во всех случаях выносить из ViewModel в другой класс львиную долю логики и оставлять только "прослойку" для взаимодействия Model <=> View через датабиндинг? Даже если выносимый код используется только в контексте данного ViewModel и в дальнейшем изменения ситуации не планируется. Что об этом говорят идейные вдохновители MVVM? Хороший вопрос. Теоретики сами озадачены этим вопросом и ничего внятного не говорят. Еще одно обсуждение . Сам по себе MVVM многих проблем не решает.Я для себя остановился пока на следующем варианте. - работа с БД через Repository.С помощью Reactive Framework(Linq for Events будет входить в состав Net 4.0,для SL уже есть в Toolkit), удалось полностью избавится от необходимости написания асинхронных callback'ов,что дало идентичный код для серверной и клиентской частей. - Унификация взаимодействия с БД позволила создавать базовые ViewModel, в них оставил только SCRUD(валидация в Моdel). - Бизнес логика,создание View&ViewModel,композицию форм вынес в контроллеры.Их вызов удобней делать не с помощью ICommand, которые подразумевают явное создание команд, а через Routing по принципу ASP.Net MVC.Переходы задаются в текстовом виде(модуль/контроллер/действие/параметры) , их легко создавать и осуществлять binding.Кроме того, при таком подходе несложно сделать загрузку модулей по требованию. Пока такой вариант полностью устраивает, основная работа сводится только к реализации бизнес-логики.Проблемы сейчас другие - приходится ломать голову над тем,как сделать более удобный интерфейс.Возможностей много,шаблоны не отработаны и это весьма тормозит процесс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 12:19 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
SeVaХороший вопрос. Теоретики сами озадачены этим вопросом и ничего внятного не говорят. Еще одно обсуждение . Сам по себе MVVM многих проблем не решает.Я для себя остановился пока на следующем варианте. - работа с БД через Repository.С помощью Reactive Framework(Linq for Events будет входить в состав Net 4.0,для SL уже есть в Toolkit), удалось полностью избавится от необходимости написания асинхронных callback'ов,что дало идентичный код для серверной и клиентской частей. - Унификация взаимодействия с БД позволила создавать базовые ViewModel, в них оставил только SCRUD(валидация в Моdel). - Бизнес логика,создание View&ViewModel,композицию форм вынес в контроллеры.Их вызов удобней делать не с помощью ICommand, которые подразумевают явное создание команд, а через Routing по принципу ASP.Net MVC.Переходы задаются в текстовом виде(модуль/контроллер/действие/параметры) , их легко создавать и осуществлять binding.Кроме того, при таком подходе несложно сделать загрузку модулей по требованию. Пока такой вариант полностью устраивает, основная работа сводится только к реализации бизнес-логики.Проблемы сейчас другие - приходится ломать голову над тем,как сделать более удобный интерфейс.Возможностей много,шаблоны не отработаны и это весьма тормозит процесс.Спасибо. Буду читать, думать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 12:23 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
SeVa Тоже стоит посмотреть Ок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2009, 12:38 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
SeVa Алексей КИзопропил давайте вернёмся к обсуждению MVVM Имеет ли смысл во всех случаях выносить из ViewModel в другой класс львиную долю логики и оставлять только "прослойку" для взаимодействия Model <=> View через датабиндинг? Даже если выносимый код используется только в контексте данного ViewModel и в дальнейшем изменения ситуации не планируется. Что об этом говорят идейные вдохновители MVVM? Хороший вопрос. Теоретики сами озадачены этим вопросом и ничего внятного не говорят. Еще одно обсуждение . Сам по себе MVVM многих проблем не решает.Я для себя остановился пока на следующем варианте. - работа с БД через Repository.С помощью Reactive Framework(Linq for Events будет входить в состав Net 4.0,для SL уже есть в Toolkit), удалось полностью избавится от необходимости написания асинхронных callback'ов,что дало идентичный код для серверной и клиентской частей. - Унификация взаимодействия с БД позволила создавать базовые ViewModel, в них оставил только SCRUD (валидация в Моdel). - Бизнес логика,создание View&ViewModel,композицию форм вынес в контроллеры.Их вызов удобней делать не с помощью ICommand, которые подразумевают явное создание команд, а через Routing по принципу ASP.Net MVC. Переходы задаются в текстовом виде(модуль/контроллер/действие/параметры) , их легко создавать и осуществлять binding.Кроме того, при таком подходе несложно сделать загрузку модулей по требованию. Пока такой вариант полностью устраивает, основная работа сводится только к реализации бизнес-логики.Проблемы сейчас другие - приходится ломать голову над тем,как сделать более удобный интерфейс.Возможностей много,шаблоны не отработаны и это весьма тормозит процесс. У меня 3 вопроса к SeVa: что значит S в новоявленной аббревиатуре "SCRUD"? (вроде бы, всегда хватало CRUD aka C[reate]R[etrieve aka select]U[pdate]D[elete]); как рассуждения Ward-a Bell-a о целесообразности введения "Screen Factory" ("View Factory") в WPF\SL приложении соотносятся с ответом на вопрос Алексея К о целесообразности вынесения к.-л. логики из VM вообще? (вроде бы, с логикой ли, без логики ли, а создавать VM в составе "триады" все равно надо и эти 2 вопроса - абсолютно ортогональны); как в описанной вами структуре (архитектуре?) приложения обрабатываются "переходы в виде: модуль/контроллер/действие/параметры"? Подразумевает ли этот способ обработки наличие некоего "ViewEngine" ("по принципу ASP.Net MVC"), который строит V "на лету" (в виде XAML или еще чего-нить "декларативного") и отсылает клиенту только на "рендеринг" и отображение, фактически превращая UI-часть WPF\SL приложения в аналог браузера, но не для HTTP/HTML, а для XAML или любого другого "проприетарного" формата? З.Ы. кстати, по принципу описанному в 3-ем вопросе еще 20 (25?) лет назад строился клиент для SAP\R3 (наверное, и сейчас строится, я уже выпал из контекста). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2009, 14:33 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
SeVaС помощью Reactive Framework(Linq for Events будет входить в состав Net 4.0,для SL уже есть в Toolkit), удалось полностью избавится...Это... как ево... и что - уже успешно это (reactive framework) используем? Поделитесь опытом. Зы. Не флейма ради - вот это оперативность освоения новых технологий... Снимаю шляпу. Модератор: Тема перенесена из форума "Winforms, .Net Framework". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2009, 16:18 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
авторУ меня 3 вопроса к SeVa: что значит S в новоявленной аббревиатуре "SCRUD"? (вроде бы, всегда хватало CRUD aka C[reate]R[etrieve aka select]U[pdate]D[elete]); как рассуждения Ward-a Bell-a о целесообразности введения "Screen Factory" ("View Factory") в WPF\SL приложении соотносятся с ответом на вопрос Алексея К о целесообразности вынесения к.-л. логики из VM вообще? (вроде бы, с логикой ли, без логики ли, а создавать VM в составе "триады" все равно надо и эти 2 вопроса - абсолютно ортогональны); как в описанной вами структуре (архитектуре?) приложения обрабатываются "переходы в виде: модуль/контроллер/действие/параметры"? Подразумевает ли этот способ обработки наличие некоего "ViewEngine" ("по принципу ASP.Net MVC"), который строит V "на лету" (в виде XAML или еще чего-нить "декларативного") и отсылает клиенту только на "рендеринг" и отображение, фактически превращая UI-часть WPF\SL приложения в аналог браузера, но не для HTTP/HTML, а для XAML или любого другого "проприетарного" формата? 1. - R(etrive) - выборка по фиксированным пармаетрам, S(earch) - по дополнителными условиям поиска. 2. Существуют разные стратегии, две из них: View First; ViewModel First. Все они имею существенные недостатки.Bell указывал на то,что логика построения(выбора) View может быть сложной(например, зависить от прав доступа),если ее помещать в VM, то это осложняет класс,теряется гибкость и тестируемость.Вынесение этой логики в отдельную сущность все упрощает. Такой подход применяется в их Caban'е, View&Presenter для гридов универсальные,нужны только специальные GridBuider'ы. С помощью введения IScreen их действительно можно сделать ортогональными. 3.Низводить мощный xaml до банального рендеринга, на мой взгляд, не стоит.А вот инжекция нужных вариантов View,VM с помощью MEF(тоже будет входить в состав 4.0), в некоторых случаях может быть весьма интересным вариантом. авторЭто... как ево... и что - уже успешно это (reactive framework) используем? Поделитесь опытом. Зы. Не флейма ради - вот это оперативность освоения новых технологий... Снимаю шляпу Здесь нет ничего сложного. VM должен реализовывать IObserver, а создать универсальный Observable для асинхронных вызовов особого труда не составляет.Кроме универсальности получаем еще один дополнительный бонус - тестируемость без дополнительных framework'ов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2009, 19:52 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Сранительный анализ MVVM framework'oв . Приложение SL у меня не запустилось,но в предыдущем посте есть текстовая версия. Большинство из одной бочки и в основном под WPF.Наиболее комплексный - Calibrum c MVP. Под SL особняком - nroute. В этой парочке много интересных моментов. Вчера попался Reactive Framework Extensions Generator .Тулзовина сканирует сборки проекта,создает "Reactive" assembly, это позволяет затем работать с Event'ами с помощью Observable APIs. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2009, 18:26 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Могу еще посоветовать поглядеть в сторону Prism. Сейчас как раз все десктопные клиенты разрабатываем в связке MVVM/Prism. Причем в зависимости от сложности модуля возможно присутствие контроллера модуля. View и ViewModel ресолвятся через Юнити. Мне лично нравится мэнеджер регионов, модульность и инфраструктура ивентов. Плюс атачед проперти и втроеные DelegateCommand и тд. Просто имхо=) Хотя в свое время и с MVC и MVP в пору выхода 3.0 ковырялся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 16:59 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
ZorrikМне лично нравится мэнеджер регионов, модульность и инфраструктура ивентов. Что-то я поковырял этот призм недели две, да и выбросил. Особенно про регионы так ничего и не понял - нафига оно в таком виде нужно... имхо, регион должен из себя представлять стек с push(view) и pop(cnt). А так как он сделан - только hello world писать можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 17:17 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Может слабо ковыряли? =) К примеру Activate, Deactivate, ScopedRegions? На призме оч весело все заработало. Ну а если не нравятся регионы - не юзайте. К примеру там очень приятная интеграция с AvalonDock. Это все сугубо имхо. Кому-то нравится свои реализации DelegateCommand юзать, а кому-то нет. Фломастеры разные=) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 18:24 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Сорри забыл. Интеграция с авалоном в Композит контрибе. Но пришлось самому его пересобрать под проект=) А, если не секрет, вы пользуетесь чем-нибудь из фреймворков? Если да, то каким(какими)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 18:28 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
ZorrikА, если не секрет, вы пользуетесь чем-нибудь из фреймворков? Если да, то каким(какими)? Нет, как-то ни к чему пока было. Все в простые модели умещается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 18:30 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Roman S. GolubinZorrikА, если не секрет, вы пользуетесь чем-нибудь из фреймворков? Если да, то каким(какими)? Нет, как-то ни к чему пока было. Все в простые модели умещается. тынц Вот тут неплохие статьи по базовой работе с регионами. В приложении б рассмотрен более комплексный вариант использования. К сожалению у нас достаточно сложный интерфейс, с поддержкой плагинов и тд. Получается вполне элегантно и чисто. А IEventAggregator просто ftw =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 18:34 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
ZorrikВот тут неплохие статьи по базовой работе с регионами. В приложении б рассмотрен более комплексный вариант использования. Я это читал уже. ZorrikК сожалению у нас достаточно сложный интерфейс, с поддержкой плагинов и тд. Получается вполне элегантно и чисто. А у меня достаточно простой. Но чисто и элегантно пришлось писать свой RegionManager. Zorrik А IEventAggregator просто ftw =) Согласен. Хотя больше нравятся Callback-интерфейсы через WCF. Что называется, оповещение по факту и без всякой химии с предварительной регистрацией синглтонов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 18:47 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Roman S. GolubinZorrikВот тут неплохие статьи по базовой работе с регионами. В приложении б рассмотрен более комплексный вариант использования. Я это читал уже. ZorrikК сожалению у нас достаточно сложный интерфейс, с поддержкой плагинов и тд. Получается вполне элегантно и чисто. А у меня достаточно простой. Но чисто и элегантно пришлось писать свой RegionManager. Zorrik А IEventAggregator просто ftw =) Согласен. Хотя больше нравятся Callback-интерфейсы через WCF. Что называется, оповещение по факту и без всякой химии с предварительной регистрацией синглтонов У нас тож через WCF с серверсайдом работа=) но там взял за основу идею из одной из первых реализаций DelegateCommand для MVVM, немножко переосмыслил и сейчас все работает асинхронно, быстро, прозрачно и куда же без красивых анимаций ;-) Все довольны=) Но, опять же, это мое имхо=) и пришел к этому не от желания пострадать фигней и поиздеваться над командой разработчиков=) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 18:56 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
ZorrikУ нас тож через WCF с серверсайдом работа=) но там взял за основу идею из одной из первых реализаций DelegateCommand для MVVM, немножко переосмыслил и сейчас все работает асинхронно, быстро, прозрачно и куда же без красивых анимаций ;-) Все довольны=) Что за идея, если не секрет? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 19:30 |
|
||
|
Паттерн MVVM
|
|||
|---|---|---|---|
|
#18+
Roman S. GolubinZorrikУ нас тож через WCF с серверсайдом работа=) но там взял за основу идею из одной из первых реализаций DelegateCommand для MVVM, немножко переосмыслил и сейчас все работает асинхронно, быстро, прозрачно и куда же без красивых анимаций ;-) Все довольны=) Что за идея, если не секрет? :) Есть реализации с синхронизацией контекста.Вызов и обработчик в разных потоках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 20:16 |
|
||
|
|

start [/forum/topic.php?all=1&fid=21&tid=1442960]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
97ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 436ms |

| 0 / 0 |
