2010-12-02 4 views
30

Скачал Prism v4 и запустил установщик. Я вошел в каталог и побежал две следующие командные файлы:Prism v4: Unity или MEF?

  • Desktop только - Открытые модульности С Mef ​​QuickStart.bat
  • Desktop только - Open Модульность С Unity QuickStart.bat

Когда я скомпилируйте эти приложения, я не вижу никакой реальной разницы. Я искал MEF vs Unity, и я нашел некоторые плюсы/минусы, но ничего конкретно не говорится о том, что «лучше» (и я знаю, что это субъективно) с использованием в Prism. Возможно, если я перечислил свои требования, кто-то может указать мне на правильные технологии для использования (даже если это не Prism 4).

  • Приложение должно быть написано в WPF (НЕ Silverlight).
  • Основное приложение будет очень тонким.
  • Основное приложение будет использовать веб-службу для создания меню «приложений/модулей», к которому имеет доступ человек.
  • «Приложения/модули» будут полностью содержаться в других управляемых библиотеках.
  • Основное приложение получает виды и режимы просмотра, отражая их в этих DLL.
  • Основное приложение должно подавать службы для ведения журнала и т. Д. В эти «приложения/модули».

Например:

Основной пользователь может иметь варианты:

  • ViewOnly Адрес записи

Все детали Адрес родственный находятся в пределах Address.dll.

Опытный пользователь может иметь варианты:

  • Новый адрес звукозаписывающого
  • Открыть запись адреса (обновление/удаление)
  • Управления пользователей

Всех деталей Адрес родственными являются в Address.dll.
Все элементы Связанные файлы находятся в файле Admin.dll.
Приложение не должно ссылаться ни на одну из этих DLL, я планирую отразить их, чтобы, если существует 100 различных модулей, и пользователь имеет доступ только к двум из них, загружаются и используются только 2 из них. В то время как пользователь, имеющий доступ к 10 из них, получает их. 10.

Я уже решил загрузить DLL через WebService. :)

+0

Использование 2.1 Prism с Unity и WPF ... до сих пор было довольным, лично не использовало MEF ... – 2010-12-02 21:52:51

+0

Что вы в итоге решили? Я смотрю на аналогичный проект, поэтому ваш вклад будет отличным. – John 2011-12-08 18:52:34

+0

@John: Pure MEF. – 2011-12-08 19:46:22

ответ

21

Нет «лучше»: это разные вещи.

IMO Ваш выбор должен управляться только по вашим требованиям. Основываясь на требованиях, которые вы разместили здесь, я предлагаю вам использовать MEF, потому что у вас есть модули, содержащиеся в DLL, и основное приложение не знает загрузки модулей. Эти задачи являются причиной того, почему MEF существует.

В любом случае вы можете использовать их как: MEF для модульности и единства воспользоваться преимуществами внедрения зависимостей (проверяемость, повторное использование, ...)

4

Если все модули не перекомпилировать в то же время, как приложение, то MEF дает вам много способов справиться с изменением интерфейсов в главном приложении. В противном случае MEF может быть более сложным, чем вам нужно.

2

Я использую Unity в течение года с помощью PRISM, но я заметил некоторые серьезные проблемы с утечкой памяти. Поэтому я решил предоставить PRISM 4 и MEF. Первое, что я сделал, это преобразование моего приложения для использования PRISM 4 с Unity. Затем я преобразовал ветвь для использования MEF. Это может показаться забавным, но MEF, похоже, справляется с потреблением памяти и выпуском как-то лучше, чем Unity.

Было бы неплохо узнать, сделали ли другие опыт такого же опыта?

2

Что касается вашего вопроса, могут ли MEF и UNITY работать хорошо друг с другом, я могу сказать вам, что они работают очень хорошо друг с другом. Я разработал доказательство применения концепции, которое использовало PRISM, Unity и MEF.

Смежные вопросы