powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Паттерн MVVM
65 сообщений из 65, показаны все 3 страниц
Паттерн MVVM
    #36328660
GFX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день господа.
Объясните мне пожалуйста, почему паттерн MVVM плотно используется в WPF?
Можно или нужно ли его использовать в WinForms?
А так же где можно почитать на русском языке про основные конструкции этого паттерна:
Model, View, ViewModel, Controller. (Примеров полно, а вот детального описание взаимодействие не могу найти :( )
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36328755
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в соседней ветке /topic/713538&pg=-1


Шайтан
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36328795
GFX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шайтанв соседней ветке /topic/713538&pg=-1


Шайтан

В этой ветке я ни нашел ни один ответ на мои вопросы.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36328860
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36328894
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используется он по одной простой причине - отделить логику от предстваления.Это значительно упрощает написание и тестирование.View не должно содержать кода, а ViewModel напрямую общаться с контролами.В WPF/SL это решается очень просто,в WinForms для реализации ICommand нужны специальные адаптеры и пляски с бубнами, а без него особого смысла нет.
MVVM with WPF, Silverlight, and… Windows Forms в этой статье хорошо показано насколько в WinForms больше кода

Статья на русском была в msdn magazine.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36328895
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще интересно написано, правда не по-русски :)

http://stackoverflow.com/questions/1153147/one-sentence-explanation-to-mvvm-in-wpf/1153246#1153246
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36328903
fulltime4wd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мантру повторять 128 раз перед сном ежедневно

Не забывать кто кому и сколько должен.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36328921
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman S. Golubin http://msdn.microsoft.com/ru-ru/magazine/dd419663.aspx
после этого я смогу связать DataTable и DataGrid?
ток честно
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36328949
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koJIo6okпосле этого я смогу связать DataTable и DataGrid?
ток честно
Не понял. Это ответ на вопрос ТС "где можно почитать на русском языке про основные конструкции". При чем тут DataTable и DataGrid?
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36328964
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman S. Golubin,
а эта про что была? /topic/713538&pg=-1
сор за офтоп
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329013
GFX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 Спасибо, я эту же статью до Вашего ответа на английском читал :)
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329048
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сравни диаграммы из соседней ветки.В MVP в отличии от MVVM, Presenter и View не разделены и содержат явные ссылки друг на друга(знают все,как говорит Роман), а это весьма неудобно.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329137
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaСравни диаграммы из соседней ветки.В MVP в отличии от MVVM, Presenter и View не разделены и содержат явные ссылки друг на друга(знают все,как говорит Роман), а это весьма неудобно.
Кстати сказать, диаграмма MVP в соседней ветке - абсолютно не соответствует реальному MVP...
В том-то и основной "фикус-пикус" реального MVP, что он убирает все ненужные зависимости из тройки MVC и оставляет только то, что ему "лично" нужно для управления уровнем представления, а именно:
методы для обновления модели;

методы для обновления "вью";

события от "вью" на пользовательские действия.
При этом - ни модель, ни "вью" не обязаны ничего знать о том, что они с кем-то там "взаимодействуют"...
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329142
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GFXИли мне надо было задать вопрос по другому: чем отличаются MVP от MVVM (основные концептуальные отличия интересует)?как раз в указанной мной теме эти диаграммы и приведены


Шайтан
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329148
GFX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
public partial class UserView : Form,IUserView
    {
       
        public UserView()
        {
            InitializeComponent();
        }

        #region Реализация IUserView
        
        public string UserID
        {
            get { return this.UserIDTextBox.Text; }
            set { this.UserIDTextBox.Text = value; }
        }

        public string UserName
        {
            get { return this.UserNameTextBox.Text; }
            set { this.UserNameTextBox.Text = value; }
        }
        

        public event EventHandler SendActionEvent;        
        #endregion

        private void SendActionButton_Click(object sender, EventArgs e)
        {
            if (SendActionEvent != null)
            {                
                SendActionEvent(sender, e);               
            }
        }
    }

типа вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public class UserPresenter
    {
        private IUserView _view;             

        public UserPresenter(IUserView view)
        {
            _view = view;
            _view.SendActionEvent += new EventHandler(_view_SendActionEvent);
            RefreshView();
        }

        void _view_SendActionEvent(object sender, EventArgs e)
        {
            CurrentUser.SendAction(_view.UserID, _view.UserName);
        }

        private void RefreshView()
        {                        
            _view.UserID = CurrentUser.UserID;
            _view.UserName = CurrentUser.UserName;
        }
    }
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329153
GFX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл написать что CurrentUser - это модель, статический объект
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329193
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GFXЗабыл написать что CurrentUser - это модель, статический объект
Реализаций MVP вагон и маленькая тележка.Есть такие,где у View есть ссылка на презентер или они содержат общий контекст
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329208
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaGFXЗабыл написать что CurrentUser - это модель, статический объект
Реализаций MVP вагон и маленькая тележка. Есть такие,где у View есть ссылка на презентер или они содержат общий контекст
Только такие т.н. "реализации" неправильно называть MVP - ибо: "как вы яхту назовете..." (с).

З.Ы. названия паттернам, в частности, придумали еще и затем, чтобы не путаться в определениях реализаций, которых "вагон и маленькая тележка"...
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329218
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qu-quSeVaСравни диаграммы из соседней ветки.В MVP в отличии от MVVM, Presenter и View не разделены и содержат явные ссылки друг на друга(знают все,как говорит Роман), а это весьма неудобно.
Кстати сказать, диаграмма MVP в соседней ветке - абсолютно не соответствует реальному MVP...
В том-то и основной "фикус-пикус" реального MVP, что он убирает все ненужные зависимости из тройки MVC и оставляет только то, что ему "лично" нужно для управления уровнем представления, а именно:
методы для обновления модели;

методы для обновления "вью";

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


"Фикус-пикус" MVVM cостоит в том, что самые неудобные методы для обновления View полностью убираются.Пишутся базовые наборы ViewModel(конкретные реализации явно в отдельных классах можно и не создавать,а вытаскивать их через DI) и все.Остается только прописать бизнес-логику в отдельных сущностях.Все упрощается на порядки.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329227
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qu-quSeVaGFXЗабыл написать что CurrentUser - это модель, статический объект
Реализаций MVP вагон и маленькая тележка. Есть такие,где у View есть ссылка на презентер или они содержат общий контекст
Только такие т.н. "реализации" неправильно называть MVP - ибо: "как вы яхту назовете..." (с).

З.Ы. названия паттернам, в частности, придумали еще и затем, чтобы не путаться в определениях реализаций, которых "вагон и маленькая тележка"...
Эти названия придумал не я,посмотри у Фаулера.Задачи и вкусы бывают разные.Для одних их правильно совершенно не совпадает с правильностью других
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329228
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ Лично для меня,более удобоваримый и гибкий вариант с общим контекстом, а не с интерфейсами
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329290
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 пока не придумали).
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329366
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настоящий или ненастоящий мало интересно,поскольку с 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.
public class UserPresenter
    {
        private IUserView _view;             

        public UserPresenter(IUserView view)
        
            _view = view;
            _view.SendActionEvent += new EventHandler(_view_SendActionEvent);
            RefreshView();
        }

        void _view_SendActionEvent(object sender, EventArgs e)
        {
            CurrentUser.SendAction(_view.UserID, _view.UserName);
        }

        private void RefreshView()
        {                        
            _view.UserID = CurrentUser.UserID;
            _view.UserName = CurrentUser.UserName;
        }
    }

создавать не нужно совсем, в 90% хватает базовых.
А все View содержат только конструктор.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329383
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qu-qu
Проблема паттернов в их модности.
Мне спустили сверху требование реализовать MVP. И когда я говорил, что в нашей ситуации ему не будет применения - довод был - у всех, значит есть применение, а у нас - нету? Мы что, типа, не люди что ли? Давай, делай!

А фокус в том, что каждый юзерконтрол (View) - сугубо штучный, и принадлежит (отображает ) одной какой-то таблице, а если даже двум (или больше) - то берет эти таблицы целенаправленно (никакой возможности сделать это через базовый презентер нет - такова уж архитектура.
И сейчас у меня в коде - один контрол - один интерфейс - один презентер на каждый из 30 обьектов бизнес-логики. То есть, 90 файлов вместо 30 - при плоском подходе.

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

И еще нигде - вообще и в принципе - не возникла не то что необходимость, а даже возможность использовать какой-либо презентер для другого View...
Зато - ПАТТЕРН! МВП!

Такой вот крик души.

Тем более что "байндинг" - действительно через рефлексию и у "Инфраджистиков" тоже.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329459
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не проблема MVP, а отсутствие системного слоя.Посмотрите,как реализован подобный паттерн в Cabana у IdeaBlade на базе SCSF.5-6 базовых View&Presenter, наследуясь от них можно получить реальную экономию в коде,если не задумыватся о спичках в виде binding'a c рефлексией. Но в WinForms подобные получаются довольно увесистыми, а без них - с шашками на танки.
А биндинг в WPF позволяет забыть про все эти страсти.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329512
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, Сева опять облажался с паттернами. Путать общеизветсный MVP и определять его связью модели с представлением && представление с презентёром

Очередной отжиг, особенно про замес названий MVP у Фаулера
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329521
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тявкнул.Полегчало?
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329531
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MCУОчередной отжиг, особенно про замес названий MVP у Фаулера

Специально для тебя бестолочь Retirement note for Model View Presenter Pattern
Чтобы небыло путаницы,Фаулер MVP разделил на два.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329547
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

если платят за объём кода (за XML - по двойной ставке) и применённые аббревиатуры - паттерны - вещь полезная. Главное - не заработать органическое поражение головного мозга.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329554
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa
Дурик, эти черти влепили туда supervising контроллер, сделали замес с MVC + влепили пассивное представление для управления моделью: контроллер прибит как к модели так и к представлению.
Плюс ребята хатели нам что-то рачссказать и про анонимые представления, которым (по идее) должен управлять всё тот же контроллер (ужос), но с мая 2004 (!) года "реализация" на стадии разработки.

Выкиньте в мусорный ящик этот старческий баян и выучите, наконец, что такое MVC. Не лапшекод студентов изобретателей, которым Вы страдаете, а именно MVC. Извернуть и переполпатить под конкретную задачу MVC можно по-разному, но это уже будет не паттерном, а поделкой. MVC - это MVC, а не тот шлак, который Вы слили в тред.

Учитесь, студент. Ваше время еще не пришло для решения серьезных вопросов

P.S. Удачи, я зарекался не общаться с Вами. Толку от Вашего пустозвония - ноль.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329560
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилМСУ,

если платят за объём кода (за XML - по двойной ставке) и применённые аббревиатуры - паттерны - вещь полезная. Главное - не заработать органическое поражение головного мозга.

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

Я как-то недавно говорил, что примеять паттерны - это одно, думать паттернами - это уже диагноз.

В каждой задаче - своя практика. А пркатика и опыт может говорить только об одном: универсальных (на все случаи жизни) решений не бывает.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329569
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

паттерны - это удобный способ именования стандартных приёмов программирования. До этого был визг про "структурное пограммирование" (типа без goto)
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329593
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилМСУ,

паттерны - это удобный способ именования стандартных приёмов программирования. До этого был визг про "структурное пограммирование" (типа без goto)

Ну вот давайте пофилософствкуем на эту тему. Я как-то задумывался над такой мыслью:

По сути своей, все мы имеем стандартные приёмы программирования (практики). Именно свои.

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

Что происходит со стандартными паттернами:


Мы используем стандартные приёмы программирования (практики). Но не именно свои, а конктерные: MVC, MVP, ...

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

И что в итоге? И в первом и во втором случаях имеем - 1) практики 2) видоизмененные практики

Что это значит? Это значит, что ровным счетом ничего не изменилось, код не стал меньше по объемам, код не стал универсальным, код не стал сам пис а ться. Всё тоже самое . Как говорят, те же яйца только в профайл.

А те, которые усердно бьются башкой об самосвал, рассказывая разработчками про шашки с танками - ... помолимся о них, друзья мои :)
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329614
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Проще. Замените свежее заимствование "паттерн" на старое "шаблон".

"У меня шаблонное мышление". "Я мыслю шаблонами". Странно, не так ли?
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329624
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эк тебя пробрало после недолгого молчания.То,что и Фаулер для тебя дурак я нисколько не сомневался.С таким диагнозом,как у тебя другого быть не может.Тебе,что авторизация и аутентификация ,что MVC и MVP - нет никакой разницы.Не задумываясь лепишь пятые колеса(которые даже показать боишься),авось довезет.
Отвали
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329639
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилМСУ,

Проще. Замените свежее заимствование "паттерн" на старое "шаблон".

"У меня шаблонное мышление". "Я мыслю шаблонами". Странно, не так ли?
Изоприл, странно изобретать велосипеды или использовать технологии ради только одного их применения,как это делает MCУ, вытягивая списки из хранимых процедур и делая затем join на клиенте.Если микроскопом забивают гвозди, то он здесь ни причем.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329647
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Собираясь воспользоваться типовыми решениями, не забывайте, что они только отправная точка, а не пункт назначения" (с)
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36329659
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил"Собираясь воспользоваться типовыми решениями, не забывайте, что они только отправная точка, а не пункт назначения" (с)
Хороший пример шаблонного выражения.Никто об этом не забывает и разработчики MS всячески подчеркивают, что их framework'и только основа, а не готовое решение,но с помощью ее можно гораздо быстрее доехать до финиша, чем на своем самокате.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36330003
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилМСУ,
Проще. Замените свежее заимствование "паттерн" на старое "шаблон".
"У меня шаблонное мышление". "Я мыслю шаблонами". Странно, не так ли?

Ничего странного, Изя. Таких людей есть (далеко не надо ходить - вон наш горе-теоретик Сева).
И у них всё еще впереди :)
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36330052
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилПроще. Замените свежее заимствование "паттерн" на старое "шаблон".

"У меня шаблонное мышление". "Я мыслю шаблонами". Странно, не так ли?С другой стороны, ООП - это тоже типовое решение (шаблон, паттерн, называйте как хотите), хотя и встроенное в язык. А мыслить абстракциями ООП весьма практично. Главное - не впадать в состояние творческого безумия, и всё получится.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36330188
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кэто тоже типовое решение (шаблон, паттерн, называйте как хотите)
Лёш, шаблон (паттерн, практика) по определению не может быть решением, как типовым так и нетиповым :)

Алексей КА мыслить абстракциями ООП весьма практично.
Фигасе философия пошла... Это как? :)
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36330249
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кэто тоже типовое решение (шаблон, паттерн, называйте как хотите)
Лёш, шаблон (паттерн, практика) по определению не может быть решением, как типовым так и нетиповым :)pattern == шаблон == типовое решение

МСУАлексей КА мыслить абстракциями ООП весьма практично.
Фигасе философия пошла... Это как? :)Это не философия, это суровая реальность.

ЗЫ: Ненавижу философию...
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36330263
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Мольер ЖУчитель философии. Вы предпочитаете прозу?
Г-н Журден. Нет, я не хочу ни прозы, ни стихов.
Учитель философии. Так нельзя: или то, или другое.
Г-н Журден. Почему?
Учитель философии. По той причине, сударь, что мы можем
излагать свои мысли не иначе, как прозой или стихами.
Г-н Журден. Не иначе, как прозой или стихами?
Учитель философии. Не иначе, сударь. Все, что не проза, то
стихи, а что не стихи, то проза.
Г-н Журден. А когда мы разговариваем, это что же такое
будет?
Учитель философии. Проза.
Г-н Журден. Что? Когда я говорю: "Николь, принеси мне
туфли и ночной колпак", это проза?
Учитель философии. Да, сударь.
Г-н Журден. Честное слово, я и не подозревал, что вот уже
более сорока лет говорю прозой. Большое вам спасибо, что
сказали. Так вот что я хочу ей написать: "Прекрасная маркиза,
ваши прекрасные глаза сулят мне смерть от любви", но только
нельзя ли это же самое сказать полюбезнее, как-нибудь этак
покрасивее выразиться?
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36330269
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИзопропилПроще. Замените свежее заимствование "паттерн" на старое "шаблон".

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

Здоровый прагматизм,безусловно,должен присутствовать.Сполски в своем блоге, описывает три типа программистов:
- Одни на любой чих будут обкладывать себя ОО слоями;
- Вторые ничего не понимая в их диаграммах, тихо чувствуют себе неловко;
- Третьи - duck tape программисты со скотчем в кармане и WD 40, не увлекаясь новомодными вещами, тихо финишируют,когда первые находятся еще на старте.
Но это возможно только при наличии опыта и головы на плечах.За примером далеко ходить не нужно - Сахават на dataset'ах чудеса творит, а четвертый тип в своих Средствах управления с ними смотрится смешно. А все по одной простой причине - их деградация началась после прочтения единственной книжки(больше им не нужно и так все знают).Не понимая,как можно применить паттерны, они будут топать ногами и брызгать слюной, не замечая, что их поделки даже студентам неинтересны,мотивируя это тем,что все еще не доросли до их уровня.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36330314
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

давайте вернёмся к обсуждению MVVM
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36330345
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилдавайте вернёмся к обсуждению MVVM
Имеет ли смысл во всех случаях выносить из ViewModel в другой класс львиную долю логики и оставлять только "прослойку" для взаимодействия Model <=> View через датабиндинг? Даже если выносимый код используется только в контексте данного ViewModel и в дальнейшем изменения ситуации не планируется. Что об этом говорят идейные вдохновители MVVM?
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36330350
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa- Третьи - duck tape программисты со скотчем в кармане и WD 40 HDD Western Digital 40 GB ?
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36330480
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К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.Кроме того, при таком подходе несложно сделать загрузку модулей по требованию.
Пока такой вариант полностью устраивает, основная работа сводится только к реализации бизнес-логики.Проблемы сейчас другие - приходится ломать голову над тем,как сделать более удобный интерфейс.Возможностей много,шаблоны не отработаны и это весьма тормозит процесс.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36330496
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.Кроме того, при таком подходе несложно сделать загрузку модулей по требованию.
Пока такой вариант полностью устраивает, основная работа сводится только к реализации бизнес-логики.Проблемы сейчас другие - приходится ломать голову над тем,как сделать более удобный интерфейс.Возможностей много,шаблоны не отработаны и это весьма тормозит процесс.Спасибо. Буду читать, думать...
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36330537
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36330553
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36333728
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 (наверное, и сейчас строится, я уже выпал из контекста).
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36334028
Относит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaС помощью Reactive Framework(Linq for Events будет входить в состав Net 4.0,для SL уже есть в Toolkit), удалось полностью избавится...Это... как ево... и что - уже успешно это (reactive framework) используем? Поделитесь опытом.
Зы. Не флейма ради - вот это оперативность освоения новых технологий... Снимаю шляпу.

Модератор: Тема перенесена из форума "Winforms, .Net Framework".
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36334450
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторУ меня 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'ов.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36337096
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сранительный анализ MVVM framework'oв .
Приложение SL у меня не запустилось,но в предыдущем посте есть текстовая версия.
Большинство из одной бочки и в основном под WPF.Наиболее комплексный - Calibrum c MVP.
Под SL особняком - nroute. В этой парочке много интересных моментов.
Вчера попался Reactive Framework Extensions Generator .Тулзовина сканирует сборки проекта,создает "Reactive" assembly, это позволяет затем работать с Event'ами с помощью Observable APIs.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36352467
Zorrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу еще посоветовать поглядеть в сторону Prism. Сейчас как раз все десктопные клиенты разрабатываем в связке MVVM/Prism. Причем в зависимости от сложности модуля возможно присутствие контроллера модуля. View и ViewModel ресолвятся через Юнити. Мне лично нравится мэнеджер регионов, модульность и инфраструктура ивентов. Плюс атачед проперти и втроеные DelegateCommand и тд. Просто имхо=) Хотя в свое время и с MVC и MVP в пору выхода 3.0 ковырялся.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36352520
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZorrikМне лично нравится мэнеджер регионов, модульность и инфраструктура ивентов.
Что-то я поковырял этот призм недели две, да и выбросил. Особенно про регионы так ничего и не понял - нафига оно в таком виде нужно... имхо, регион должен из себя представлять стек с push(view) и pop(cnt). А так как он сделан - только hello world писать можно.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36352674
Zorrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может слабо ковыряли? =) К примеру Activate, Deactivate, ScopedRegions? На призме оч весело все заработало. Ну а если не нравятся регионы - не юзайте. К примеру там очень приятная интеграция с AvalonDock. Это все сугубо имхо. Кому-то нравится свои реализации DelegateCommand юзать, а кому-то нет. Фломастеры разные=)
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36352688
Zorrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри забыл. Интеграция с авалоном в Композит контрибе. Но пришлось самому его пересобрать под проект=)
А, если не секрет, вы пользуетесь чем-нибудь из фреймворков? Если да, то каким(какими)?
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36352693
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZorrikА, если не секрет, вы пользуетесь чем-нибудь из фреймворков? Если да, то каким(какими)?
Нет, как-то ни к чему пока было. Все в простые модели умещается.
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36352701
Zorrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman S. GolubinZorrikА, если не секрет, вы пользуетесь чем-нибудь из фреймворков? Если да, то каким(какими)?
Нет, как-то ни к чему пока было. Все в простые модели умещается.

тынц

Вот тут неплохие статьи по базовой работе с регионами. В приложении б рассмотрен более комплексный вариант использования. К сожалению у нас достаточно сложный интерфейс, с поддержкой плагинов и тд. Получается вполне элегантно и чисто. А IEventAggregator просто ftw =)
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36352730
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZorrikВот тут неплохие статьи по базовой работе с регионами. В приложении б рассмотрен более комплексный вариант использования.
Я это читал уже.
ZorrikК сожалению у нас достаточно сложный интерфейс, с поддержкой плагинов и тд. Получается вполне элегантно и чисто.
А у меня достаточно простой. Но чисто и элегантно пришлось писать свой RegionManager.
Zorrik А IEventAggregator просто ftw =)
Согласен. Хотя больше нравятся Callback-интерфейсы через WCF. Что называется, оповещение по факту и без всякой химии с предварительной регистрацией синглтонов
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36352743
Zorrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman S. GolubinZorrikВот тут неплохие статьи по базовой работе с регионами. В приложении б рассмотрен более комплексный вариант использования.
Я это читал уже.
ZorrikК сожалению у нас достаточно сложный интерфейс, с поддержкой плагинов и тд. Получается вполне элегантно и чисто.
А у меня достаточно простой. Но чисто и элегантно пришлось писать свой RegionManager.
Zorrik А IEventAggregator просто ftw =)
Согласен. Хотя больше нравятся Callback-интерфейсы через WCF. Что называется, оповещение по факту и без всякой химии с предварительной регистрацией синглтонов

У нас тож через WCF с серверсайдом работа=) но там взял за основу идею из одной из первых реализаций DelegateCommand для MVVM, немножко переосмыслил и сейчас все работает асинхронно, быстро, прозрачно и куда же без красивых анимаций ;-) Все довольны=) Но, опять же, это мое имхо=) и пришел к этому не от желания пострадать фигней и поиздеваться над командой разработчиков=)
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36352792
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZorrikУ нас тож через WCF с серверсайдом работа=) но там взял за основу идею из одной из первых реализаций DelegateCommand для MVVM, немножко переосмыслил и сейчас все работает асинхронно, быстро, прозрачно и куда же без красивых анимаций ;-) Все довольны=)
Что за идея, если не секрет? :)
...
Рейтинг: 0 / 0
Паттерн MVVM
    #36352842
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman S. GolubinZorrikУ нас тож через WCF с серверсайдом работа=) но там взял за основу идею из одной из первых реализаций DelegateCommand для MVVM, немножко переосмыслил и сейчас все работает асинхронно, быстро, прозрачно и куда же без красивых анимаций ;-) Все довольны=)
Что за идея, если не секрет? :)
Есть реализации с синхронизацией контекста.Вызов и обработчик в разных потоках.
...
Рейтинг: 0 / 0
65 сообщений из 65, показаны все 3 страниц
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Паттерн MVVM
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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