2014-02-02 3 views
4

У меня есть Winform, которая нуждается в переписывании. Я знаю, что у нас есть Prism в WPF. Для тех, кто прошел через оба, каковы существенные различия между этими двумя структурами? Я программист CAB, поэтому я уже привык к проводке событий CAB.Сравнение между CAB и Prism

Кроме того, работает ли Prism для Winforms? Работает ли CAB для WPF?

ответ

5

Я использовал оба приложения, записывая приложение уровня предприятия, используя CAB, а затем переписывая его с помощью PRISM (для winforms, а не WPF).

PRISM не работает для winforms из коробки, вы должны взломать различные вещи, такие как менеджеры регионов, но некоторые из составных материалов будут работать (например, Unity или агрегация событий). Это действительно справедливая работа, (все исходные коды PRISM свободно доступны), но есть некоторые разработчики, которые написали блоги о том, как начать работу. Некоторые примеры: http://briannoyesblogwp.azurewebsites.net/2008/10/13/composite-extensions-for-windows-forms/ http://blogs.msdn.com/b/gblock/archive/2008/10/20/bringing-prism-to-winforms.aspx

ли САВ работа для WPF ... почему вы хотите, чтобы попытаться выяснить? CAB очень старый, его трудно узнать, потому что он настолько запутан, чтобы делать простые вещи (кривая обучения довольно значительна), а использование памяти было довольно высоким. Одна из целей CAB заключалась в том, чтобы позволить разработчикам писать развязанное программное обеспечение, но есть так много зависимостей от фреймворка, что он в значительной степени терпит неудачу. Я понимаю, что вы разработчик CAB, а разработчик CAB - это не малое достижение, потому что требуется много времени, усилий и обучения, чтобы иметь возможность запрограммировать приложение с использованием CAB успешно (я знаю, я был там!), но, перейдя к PRISM, я бы не стал касаться CAB полюсом баржи.

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

Если вы находитесь в ситуации, когда вы можете повторно написать приложение - вам, вероятно, будет почти невозможно сделать прямой порт для PRISM. У нас было 30 форм в нашем приложении во время миграции, и из-за рабочей нагрузки shoehorning нашего старого материала CAB в PRISM мы просто закончили тем, что воссоздали все это. Оглядываясь назад - мы действительно должны просто укусить пулю и перенести на WPF реализацию PRISM, так как теперь мы зависим от старой устаревшей технологии, чтобы заполнить пробелы, которые WPF предоставил бы нам бесплатно (например, привязку данных). Как уже было сказано, мы не потому, что и WPF, и MVVM были слишком новыми и слишком рискованными для наших заинтересованных сторон, но теперь они довольно развитые технологии/шаблоны - я действительно думаю, что это то, что нужно сделать, а не дооснащение вашей инфраструктуры (PRISM) использовать Winforms.

Итак - основные отличия: САВ

  1. Старый, при поддержке ООН
  2. Очень крутой кривой обучения, трудно поддерживать по этой причине (думать о необходимости получить новый Dev, чтобы работать с ним)

WPF

  1. Новый, поддерживается и активно поддерживается/простираться ed
  2. Множество примеров - это может быть трудно освоить - но есть много разработчиков, знакомых с технологией и имеющейся технической поддержкой
  3. WPF specific - вы получаете 2-х стороннюю привязку из ящик, декларативный дизайн формы (гораздо более мощный, чем winforms)
  4. Winforms specific - PRISM способствует лучшему разделению кода с пользовательского интерфейса, поэтому ваш проект становится более проверяемым и менее багги.

Если вы хотите получить информацию прямо из Mounth лошадей - прочитать: http://compositewpf.codeplex.com/releases/view/16941 - это документ сравнения CAL для CAB и объясняет много деталей, что делается для исправления недостатков САВ.

+0

ли наличие САВ фона помогает в изучении PRISM? –

+0

Я вижу, что CAL полностью избавляется от использования атрибутов в Command and Event publish/subscribe. Какое расширение CAL вы используете, чтобы сделать CAL похожим на CAB? –

+1

@JesonMartajaya Наличие фона CAB помогает изучать PRISM, потому что вы должны быть знакомы с такими понятиями, как инъекция зависимостей, разделение проблем, построение модульного приложения (где модули не имеют зависимости друг от друга) и т. Д. – Jay