PRISM уже включает логику MEF и MVVM :)
Хорошо, небольшое объяснение здесь:
MVVM означает логику в вашем приложении. На самом деле умный способ разделения View, View-Model и Model. Не знаете какой-либо лучшей (?) Платформы для этого - вы можете проверить Catel, если хотите, или MVVM Light, но это всего лишь тонны кода от кого-то, кто понимает логику MVVM и упрощает ее реализацию. На самом деле вы можете попытаться написать свою собственную инфраструктуру MVVM и увидеть, что «нет никакого секретного ингредиента» - тот же повторяющийся код, те же классы и т. Д. На самом деле вам не нужна какая-либо инфраструктура MVVM для реализовать MVVM.
Как только вы изучите и напишете MVVM, вы сразу же столкнетесь с вопросом - как я тестирую его с помощью NUnit (например, это нетривиальная проблема в Silverlight) - поэтому здесь вступает в игру вся структура IOC / Inject. Например MEF. Рассмотрим следующий пример, чтобы понять общую картину о фреймворке Inject:
Проект 'Shared', записанный через 'наименьший разделитель' (например, Portable Library)
public interface IAmSharedInterface
{
string SayHello();
}
Проект "Главный", только ссылка "Общий" проект
public class IAmMainClass
{
[ImportingConstructor]
public IAmMainClass(IAmSharedInterface SharedInterface)
{
SharedInterface.SayHello();
}
}
Проект «Реализатор», только ссылка на «Общий» проект
[Export(IAmSharedInterface)]
public class IAmImplementor: IAmSharedInterface
{
public string SayHello()
{
return "Hello from implementator class to whoever using it";
}
}
Видите ли - нет прямой ссылки между проектами «Main» и «Implementator» - вся «магия» происходит в процессе сборки / разрешения MEF / Unity. Таким образом, вы можете легко запустить тест NUnit на Main без использования проекта «Implementor» и «Implementor» с «Main». Также существует сценарий, в котором другой проект может реализовать и экспортировать IAmSharedInterface специально для целей тестирования.
Итак, вернемся к ПРИЗМЕ - в ней есть все (!) Это. Я знаю, что это непростая структура для понимания сразу и она не подходит для простых программ "Hello World", но как только вы ее изучите - пути назад нет. Он просто склеивает все части вместе и дает вам большую степень свободы в использовании любого фреймворка moq, который вы хотите (например, Носорог).
Prism разрабатывается в Microsoft, поэтому (надеюсь) она будет поддерживаться не только в Windows 8, но и в Windows 9 и во всех будущих версиях.
Что бы вы ни спросили, все это внутри: MVVM, Inject, развязка / плагины, легко читается и тестируется.
person
Jasper
schedule
31.05.2012