Связывание 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 не является расширением.

0 ответов

Другие вопросы по тегам