Связывание DLL с зависимостью от внешних ресурсов на основе MEF
Я прочитал как.net MEF (Managed Extensibility Framework), так и MAF (System.AddIn), и меня смутили их онлайн-обзоры.
Хотя MEF кажется более новым и привлекательным, чем MAF. Я не могу понять, как мы можем связать расширение с приложением.NET, используя MEF. Например, в MAF я могу разработать всю логику расширения (AddIn), которая включает в себя:
- Основная DLL, скажем, X.dll
- все библиотеки, на которые ссылается X.dll
- внешние ресурсы, которые нужны X.dll, такие как база данных, некоторые текстовые файлы... и т. д.
Затем Хост может просто вызвать метод внутри X.dll и дождаться результата.
С другой стороны, MEF требует, чтобы все DLL были расположены в одной папке, скажем, "Плагины", поэтому X.dll должен быть в "Плагинах", чтобы их можно было обнаружить и связать, поэтому мой вопрос, как мы можем встроить все ресурсы, которые требуются X.dll для завершения входящего запроса с хоста?
Мой реальный вопрос: если команда должна спроектировать хост-приложение, чтобы его возможности обработки могли быть расширены с помощью расширений, разработанных другими командами или просто загруженных и установленных из Интернета, является ли MEF эффективной технологией в таком проекте? или команда должна придерживаться MAF?
PS: мой вопрос не в том, какой из них лучше с точки зрения безопасности... и т. Д. Вместо этого я больше заинтересован в том, чтобы выяснить, позволяет ли MEF подключать сборки, для которых требуются собственные внешние ресурсы, доступные вокруг сборки, такие как расширение для проверки орфографии, которое требует некоторого набора текста и базы данных эвристики, эти два ресурса требуются расширением, но не требуются самим хостом
Кроме того, в моем предыдущем примере, если X.dll требует Y.dll для запуска, я не могу просто поместить обе библиотеки в папку "Плагины", потому что y.dll не является расширением.