Вопрос

Я скачал Призма v4. и запустил установщик. Я вошел в каталог и запустил две следующие пакетные файлы:

  • Только для рабочего стола - открытая модульность с MEF QuickStart.bat
  • Только для рабочего стола - открытая модульность с Unity QuickStart.BAT

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

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

Например:

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

  • Посмотреть запись адреса

Связанные к адресу все товары находятся в адресе .dll.

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

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

Связанные к адресу все товары находятся в адресе .dll.
Все элементы управления связаны в пределах admin.dll.

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

Я использовал единство в течение года с призмом, но я заметил некоторые серьезные проблемы утечки памяти. Следовательно, я решил дать призму 4 и MEF пойти. Что я сделал, сначала преобразует мое приложение для использования призма 4 с единством. Затем я преобразовал ветку, чтобы использовать MEF. Это может звучать забавно, но МЭФ, кажется, обрабатывает потребление памяти и выпустить как-то лучше, чем единство.

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

В рассмотрении вашего вопроса о том, может ли МЭФ и единство хорошо работать друг с другом, я могу сказать вам, что они очень хорошо работают друг с другом. Я разработал доказательство концептуального приложения, которое использовало призму, единство и МЭФ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top