Призма v4: единство или МЭФ?
-
30-09-2019 - |
Вопрос
Я скачал Призма 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. Это может звучать забавно, но МЭФ, кажется, обрабатывает потребление памяти и выпустить как-то лучше, чем единство.
Было бы неплохо слышать, сделали ли другие одинаковым опытом?
В рассмотрении вашего вопроса о том, может ли МЭФ и единство хорошо работать друг с другом, я могу сказать вам, что они очень хорошо работают друг с другом. Я разработал доказательство концептуального приложения, которое использовало призму, единство и МЭФ.