Подтвердить что ты не робот

Какая структура MVVM - лучшая структура для приложений WPF

Я начинаю с WPF. Прежде чем разрабатывать проект среднего и крупного размера лучше всего на WPF, мне нужно работать с открытым исходным кодом/свободной MVVM-инфраструктурой для WPF, поэтому, пожалуйста, скажите, какая фреймворк MVVM будет правильным выбором для приложений WPF, с помощью которых я могу разработать очень привлекательный интерфейс для корпоративных приложений, и который поставляется с хорошим учебником и большим количеством примеров кода для ознакомления с потоком структуры. Пожалуйста, обсудите подробно. Благодарю.

4b9b3361

Ответ 1

Этот вопрос действительно сложно ответить объективно, потому что то, что лучше всего для вас, зависит от ваших требований и предпочтений. Я сам использовал два фреймворка, так что это те, о которых я могу поговорить.

Одной из самых популярных фреймворков MVVM является MVVM Light Toolkit, которая представляет собой универсальную структуру, которая позволяет вам создавать приложения так, как вы хотите. Это помогает справиться с некоторыми основными причинами боли при создании MVVM-приложений, но для этого требуется написать много кода шаблона самостоятельно. Это может быть полезно для нового разработчика WPF, поскольку он не скрывает столько инфраструктуры WPF.

Мой личный фаворит Caliburn.Micro, который является самоуверенной структурой MVVM для WPF, Silverlight и Windows Phone 7. Он использует соглашение, чрезмерной конфигурации, что избавляет вас от написания много скучного, утомительного кода сантехники. Это также означает, что это требует от вас согласия с рамочным мнением - если вы не будете следовать конвенциям, которые он предписывает, вы будете бороться с тяжелой битвой, чтобы все работало.

Caliburn.Micro также имеет качество работы, и если вы действительно не понимаете, что происходит под капотом, все может показаться немного волшебным. Это здорово, пока все работает. Но когда они этого не делают, или вам нужно что-то сделать, рамки не предназначены для этого, вам потребуется довольно четкое понимание WPF, чтобы найти ваши ориентиры.

Вам необходимо оценить возможности различных фреймворков и наборов инструментов и решить сами.

Ответ 2

Существует много популярных open source MVVM-фреймворков.

Вероятно, три самых популярных: MVVM Light, Caliburn или Prism (который с версии v4 поддерживает и предоставляет примеры MVVM). У всех троих есть сильные и слабые стороны, и все они хороши.

Призма имеет то преимущество, что она является "Microsoft" (спонсируемым) продуктом, так как она представлена ​​группой Microsoft Patterns and Practices. Это, как правило, способствует принятию на многих крупных предприятиях. Это, как говорится, также намного больше и сложнее, чем другие популярные варианты, тем более что его целью является не просто "MVVM Framework", а скорее библиотека общего назначения для разработки сложных приложений.


Я начинаю работать с WPF.

Я также подумал, что хочу упомянуть - прежде чем вы выберете фреймворк, я потрачу некоторое время на то, чтобы действительно изучить и понять MVVM. Я написал серию, чтобы помочь перейти в WPF с MVVM из Windows Forms, который может иметь значение.

Часто его трудно выбрать рамки, пока вы не поймете, что это действительно делает. Большинство MVVM можно сделать очень легко, без каких-либо фреймворков. В "фреймворках" добавляются утилиты, которые облегчают управление определенными болевыми точками разработки MVVM, например, MVVM Light обладает отличным классом Messenger, который помогает в обмене данными между ViewModels, что может быть сложным в разы. У Caliburn есть отличные инструменты для обеспечения удобства и т.д. Однако, пока вы не поймете основы, выбор инструментария может сделать вашу жизнь более сложной, а не простой.

Ответ 3

Может быть, для того, чтобы получить удовольствие от MVVM, вам вообще не нужно использовать какие-либо библиотеки? Легко реализовать основные вещи (DelegateCommand и класс для получения уведомлений о свойствах - это все, что вам нужно), но это поможет вам понять MVVM без введения какой-либо библиотеки. Вероятно, вы столкнетесь с некоторыми препятствиями во время этой реализации, и вам придется решать ее самостоятельно, без каких-либо сторонних библиотек. Я считаю, что это может помочь вам разработать более четкое представление о структуре MVVM (конечно, если у вас будет хорошее руководство), но без введения специфических особенностей, предоставляемых библиотеками.

Может быть, я немного изобретатель колес, но я до сих пор не использую никаких библиотек MVVM. Я просто не вижу ничего хорошего, что они могут предоставить, чтобы представить еще одну библиотеку в проекте. Обычно для реализации базового материала, необходимого для MVVM, не требуется многого, но в конце вы получаете очень гибкий код (потому что весь код принадлежит вам).