Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Паттерн 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?fid=21&msg=36352674&tid=1442960]: |
0ms |
get settings: |
8ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 260ms |
| total: | 358ms |

| 0 / 0 |
