在不重新启动 Web 应用程序的情况下加载 MEF 插件

Loading MEF plugins without restarting web application

我正在 .NET 中开发一个 Web 应用程序,该应用程序在后端(Web api)中使用通过 MEF 加载的插件。在 Web API 中,我使用 Autofac DI 和 MEF 加载插件。 我遇到的问题是如何在不重新启动 Web 应用程序 (Azure) 或 IIS 池的情况下替换生产中的插件。 我什至计划将每个插件托管为一个 Web 服务,以便应用程序不依赖于插件。

Recomposition就是答案。

简而言之:

  • 使用 allow-recomposition 标记您的插件导入
  • 每次出现新插件或现有插件消失时,MEF 都会触发重新导入

您可以在此处找到更多样本:

https://qube7.com/guides/recomposition.html