Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/55: Рейтинг темы: голосов - 55, средняя оценка - 4.67
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 617
1

Какой фреймворк выбрать?

09.03.2016, 00:16. Показов 10772. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Изучаю потихоньку WPF с паттерном MVVM и прихожу к выводу, что надо уже брать какой то фреймворк и работать. Слышал про MVVMLight и Catel. Кто знаком с ними, можете кратко плюсы минусы каждого накидать? Буду очень благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2016, 00:16
Ответы с готовыми решениями:

Какой самый популярный фреймворк на C# для unit-тестов
Привет! Какой самый популярный фреймворк на C# для юнит-тестов?

какой фреймворк выбрать?
есть самописное приложение на php, которое уже довольно сильно разрослось и в планах по "наведению...

Какой выбрать фреймворк
У меня стоит задача в кратчайшие сроки разработать интернет магазин в частности раздел где клиент...

Какой фреймворк выбрать?
Требуется написать веб-приложение для организации. Прилжение будет иметь несколько модулей. К...

13
1214 / 805 / 244
Регистрация: 08.08.2014
Сообщений: 2,368
09.03.2016, 09:43 2
Тот, который вам лично больше понравится. Для этого нужно взять наиболее популярные фреймворки (MVVMLight, Prism, Catel, Caliburn.Micro), реализовать с их использованием хотя бы самые простые примеры (биндинг свойств и команд, навигация по View) и решить какой вариант вам больше подходит.

Для меня, например, очень привлекательны идеи, реализованные в Caliburn.Micro, когда громоздкие однотипные куски кода ViewModel полностью уходят и заменяются на простые соглашения об именовании, когда байндинг выглядит непривычно, но зато более лаконичен. Однако, тут есть разные мнения, кто-то считает подобный подход неприемлимым в силу того, что появляется много неочевидного поведения (фреймворк многое сам додумывает и достраивает на этапе выполнения), кому-то специфичный синтксис байндинга не нравится. А по мне так, что угодно, только бы избавиться от всех этих DelegateCommand/RelayCommand и необходимости лицезреть этот жуткий оверхед при объявлении каждой команды.
1
95 / 54 / 10
Регистрация: 16.09.2012
Сообщений: 207
09.03.2016, 13:08 3
Chizel, если тебе прям нужно совсем вкратце плюсы и минусы, то MVVMLight очень хорош для старта, потому что он позиционируется как легковесный фреймворк, на изучение которого нужно потратить минимум усилий. Catel - целая платформа, в которой есть всё) И кател хорошо изучать на реальном большом проекте, а не на проектах однодневках. Потому что маленькие проекты часто просто не смогут показать всю "мощь" фреймворка. Такая же история с Prism (это тоже огромный фреймворк).

А вообще, всё зависит от того, какие у тебя цели. Если ты хочешь выучить фреймворк с пользой, то начинай работать с самыми популярными фреймворками. В твоём случае - MVVMLight. Так же, я бы тебе посоветовал Caliburn или Caliburn.Micro. Но там порог вхождения уже выше, чем в MVVMLight. Так же, очень много инфы и очень много документации по MVVMLight. Куча примеров и большое сообщество. Поэтому для старта MVVMLight очень хороший вариант.

Ну и главное не забывать, что фреймворк - всего лишь инструмент. И зацикливаться на одном не нужно. Разные фреймворки предназначены для разных задач и для разных проектов. Поэтому пару месяцев кодь на MVVMLight, потом посмотри какой-нибудь другой фреймворк. Посмотришь, сравнишь, потом поймёшь к чему душа лежит
1
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 617
09.03.2016, 17:22  [ТС] 4
Большое спасибо за развернутые ответы. Про Caliburn.Micro вообще ничего не слышал, заинтересовало. Будем попробовать.
0
0 / 0 / 0
Регистрация: 21.03.2017
Сообщений: 16
30.08.2017, 17:05 5
Здравствуйте. Я за советом.
Самостоятельно занимаюсь изучением WPF (До этого также самостоятельно прошёл курсы по С# и EF). Признаюсь, из обучающего материала пока прочитал только небольшое руководство на Metanit.com.
Недавно получил тестовое задание от одной компании. Одним из требований является использование паттерна MVVM.
Выполнение этого задания меня вызывает определённые сложности. Например, первое с чем столкнулся - взаимодействие между окнами. В интернете есть какие-то решения, но они либо мне не очень понятны, либо не соответствую паттерну. К тому же, собирая по кусочкам информацию, не создаётся целостного понимания правильности разработки.
Соответственно, хочу узнать, применение фреймворков упрощает мне задачу? Насколько они нужны на раннем этапе и чем могут мне помочь? Как я понял из темы, для новичков лучше всего подходит MVVMLight. Есть ли какое-нибудь руководство на русском языке, как им пользоваться? И последнее, применение подобных Фреймворков даёт плюс или минус к тестовому заданию? Как компании относятся к ним?
Надеюсь, кто-нибудь ответит
0
Эксперт .NET
1838 / 1346 / 427
Регистрация: 10.06.2011
Сообщений: 2,126
31.08.2017, 09:41 6
Цитата Сообщение от madsen Посмотреть сообщение
Соответственно, хочу узнать, применение фреймворков упрощает мне задачу?
Если приложение большое, то использование фреймворка будет решением, облегчающим разработку. Для малюсеньких приложений смысла использовать фреймворк нет.
Цитата Сообщение от madsen Посмотреть сообщение
Насколько они нужны на раннем этапе и чем могут мне помочь?
Фреймворк может пригодиться тогда, когда известно, что приложение будет не уровня лабораторной работы, а несколько серьёзнее. Фреймворки могут помочь с разбиением приложения на модули, когда нужно уметь уже во время выполнения программы подгружать новые dll с функционалом. Фреймворк может заведовать функционалом открытия окон, распределением элементов интерфейса на окне, навигацией между элементами интерфейса и много чего ещё. Использование фреймворка может дать приложению гибкость и поддерживаемость. Если вы не используете какой-либо готовый фреймворк, то вы всё равно напишите некоторую часть его функционала самостоятельно.
Цитата Сообщение от madsen Посмотреть сообщение
Как я понял из темы, для новичков лучше всего подходит MVVMLight
Я использовал только PRISM. Правда, стоит признать, что на его изучение мне был выделен всего один день (тоже делал тестовое задание) и тогда я поломал голову несколько часов, прежде чем у меня все мысли встали на место, как надо правильно делать. Но разобраться реально. С другими фреймворками не работал. Думаю, что документации про каждый фреймворк в интернете достаточно. Можно попробовать посмотреть на примеры уже готовых приложений и оценить, какой вам больше нравится и более понятный.
Цитата Сообщение от madsen Посмотреть сообщение
Есть ли какое-нибудь руководство на русском языке?
Есть переведённые статьи про PRISM. Правда статья про уже устаревшую версию PRISM'а.
Цитата Сообщение от madsen Посмотреть сообщение
как им пользоваться?
Читать и пробовать сделать
Цитата Сообщение от madsen Посмотреть сообщение
применение подобных Фреймворков даёт плюс или минус к тестовому заданию?
Я бы зачёл, как плюс. Минусом бы это было вряд ли.
Цитата Сообщение от madsen Посмотреть сообщение
Как компании относятся к ним?
Некоторые компании указывают в вакансиях, какой фреймворк они используют. Посмотрите, указан ли в вакансии какой-либо фреймворк, и, если указан, то используйте его.

Добавлено через 10 часов 42 минуты
Если что, то вот страничка PRISM на GitHub с актуальной информацией о нём. Там же есть ссылка и на примеры приложений.
4
0 / 0 / 0
Регистрация: 21.03.2017
Сообщений: 16
31.08.2017, 20:06 7
novikov.ea, большое спасибо за исчерпывающий ответ. "+" к репутации не получается поставить, пишет, что недостаточно прав
0
Эксперт .NET
1838 / 1346 / 427
Регистрация: 10.06.2011
Сообщений: 2,126
31.08.2017, 22:50 8
madsen, пожалуйста)
0
294 / 234 / 58
Регистрация: 03.02.2011
Сообщений: 1,993
Записей в блоге: 1
01.09.2017, 09:50 9
novikov.ea,
- используете ли вы многооконные приложения с передачей Модели по ним?
- используете ли вы одну ViewModel для представления в нескольких разных регионах или в разных окнах?
- используете ли вы модули?
- используете ли вы штатный ServiceLocator или какой то сторонний?
- используете ли вы MahApps?

Добавлено через 35 секунд
Всё это, естественно, при применении PRISM.
0
Эксперт .NET
1838 / 1346 / 427
Регистрация: 10.06.2011
Сообщений: 2,126
01.09.2017, 10:24 10
Цитата Сообщение от skilllab Посмотреть сообщение
используете ли вы многооконные приложения с передачей Модели по ним?
Многооконные приложения, конечно, реализую. Информацию между окнами, резумеется, тоже передаю
- Если произошло событие, то с помощью EventAggregator'а или подписки и обработки события экземпляра некоего класса, который создаётся при инициализации приложения и прокидывается в качестве зависимости ViewModel'ям
- Если информацию нужно передать при открытии окна, то просто можно задать эти значения в свойства ViewModel окна перед открытием этого окна
Цитата Сообщение от skilllab Посмотреть сообщение
используете ли вы одну ViewModel для представления в нескольких разных регионах или в разных окнах?
Наверное, если задача потребует, чтобы были две одинакое вьюхи, завязанные на одни и теже данные, то можно сделать так. Лично мне пока такая необходимость не встречалась.
Цитата Сообщение от skilllab Посмотреть сообщение
используете ли вы модули?
Да. Продукт может иметь оболочку (приложение WPF) и отдельные проекты-модули. Модули можно использовать, например так:
- Пробная версия содержит 2 модуля, стадартная - 5 модулей, полная - 7 модулей
Или так:
- Один продукт загружает модули А, Б, В. Другой загружает А, Г, Д. Продукты типа разные, но у них есть общий функциональчик А. Можно комбинировать модули, чтобы создать прозвольное подмножество функционала для продукта.
Цитата Сообщение от skilllab Посмотреть сообщение
используете ли вы штатный ServiceLocator или какой то сторонний?
ServiceLocator'ом не пользуюсь. Пользуюсь DI контейнером. Вообще не вижу задачи, которую бы нельзя было решить, не используя ServiceLocator. Единственное, где на мой взгляд ServiceLocator был бы удобен - это если требуется внедрить зависимоть в большое количество самописных вьюх. Так, например, делает Telerik для локализации контролов.
Цитата Сообщение от skilllab Посмотреть сообщение
используете ли вы MahApps?
Видел, что MahApps существует. Но не познакомился ещё с ним)
0
294 / 234 / 58
Регистрация: 03.02.2011
Сообщений: 1,993
Записей в блоге: 1
01.09.2017, 11:07 11
Цитата Сообщение от novikov.ea Посмотреть сообщение
конечно, реализую
А каким образом вы решаете строение проекта с многими окнами? В том смысле что:

- является ли ещё одно окно новым проектом в решении? Ибо на то новое окно существует своя логика, свои представления. Т.е. то новое окно в отдельной сборке того же решения.

- или новое окно является частью того же самого проекта?

- как быть если в проекте одно окно используется нескольким сборками? К примеру своё красивое окно ввода данных. Используется как для текущего проекта редактирования какой либо, ну к примеру базы данных, так и для проекта внесения новой записи. Т.е. одно окно на несколько проектов в решении.

- модули в PRISM - это просто регион в основном проекте, или же это может быть самостоятельная единица с собственными элементами управления и собственной MVVM. Как правильно его использовать?
0
Эксперт .NET
1838 / 1346 / 427
Регистрация: 10.06.2011
Сообщений: 2,126
01.09.2017, 11:36 12
Новое окно и ViewModel для обычно лежат в том же проекте
Цитата Сообщение от skilllab Посмотреть сообщение
как быть если в проекте одно окно используется нескольким сборками? К примеру своё красивое окно ввода данных. Используется как для текущего проекта редактирования какой либо, ну к примеру базы данных, так и для проекта внесения новой записи. Т.е. одно окно на несколько проектов в решении
Я имею проект, на который ссылаются зависимые проекты-модули. Все общие штуки помещаю туда. Если у вас есть своё красивое окно ввода данных, то поместите его в общий проект и используйте его во всех модулях.
Цитата Сообщение от skilllab Посмотреть сообщение
модули в PRISM - это просто регион в основном проекте, или же это может быть самостоятельная единица с собственными элементами управления и собственной MVVM
Модуль можеть регистрировать нужные ему зависимости в DI контейнере для своих объектов, регистрировать ViewModel и View. Модуль может регистрировать вьюхи в регионах, определённых в оболочке (проекте WPF), для того, чтобы отобразить свои элементы интерфейса на нём. Например, в каком-нибудь ItemsControl'е можно списочком отобразить кнопочки для каждого подгруженного модуля, и по нажатию на кнопку, отображать на главном экране UI для этого модуля.
Получается, что оболочка не знает ни о каких модулях. А модуль сам для себя отобразил кнопку в нужном месте (считается, что он знает, как называется регион). Оболочка просто предоставила регион для этого.
0
294 / 234 / 58
Регистрация: 03.02.2011
Сообщений: 1,993
Записей в блоге: 1
01.09.2017, 11:46 13
Ну и пока крайний вопрос)) почему Модуль? Когда это просто ещё один проект в решении. Чем в PRISM Модуль отличается от
ещё одной обычной сборки? Или это просто семантика.
0
Эксперт .NET
1838 / 1346 / 427
Регистрация: 10.06.2011
Сообщений: 2,126
01.09.2017, 11:52 14
У PRISM есть специальная функция, которая загружает проекты-модули. ModuleInitializer или какая-то типа такая пурга....
Он ищет в сборке классб который реализует интерфейс IModule и вызывает у него метод Initialize. Можно ещё получить событие, что модуль загрузился и отобразить сообщение на экран. И возможно, что-то ещё....
Вы можете написать и свою реализацию, если хочется. Но в PRISM это уже всё сделано за вас. Смысл такой)
1
01.09.2017, 11:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2017, 11:52
Помогаю со студенческими работами здесь

Какой выбрать фреймворк?
Всем привет, перешел я на php, пописал простенькие сайты, терь захотелось чего то большего,...

Какой фреймворк выбрать?
Привет всем. Да, знаю, что вы прочитали заголовок и опять возник вопрос: "обожезачтомнеэто". Не...

Какой фреймворк выбрать начинающему?
Посоветуйте, что выбрать новичку - Zend или Yii?

Какой веб фреймворк выбрать?
Здравствуйте уважаемые форумчане. Решил изучить какой то из веб фреймворков, выбор идет из: 1)Yii...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru