【发布时间】:2016-01-20 20:31:38
【问题描述】:
我正在设计一个解决方案,我相信它可以在插件式架构中运行良好。
“主程序”将提供诸如数据库访问、向远程客户端发送消息、日志记录和其他功能等服务。
每个“插件”都将能够使用这些函数并包含将执行“插件”特定逻辑的自定义函数。
我需要能够在运行时安装和卸载插件,而无需重新启动“主程序”。卸载主要发生在新版本的“插件”可用并且需要添加到“主程序”中。
如果我将每个插件创建为 DLL 并将其放在一个文件夹中,我可以向“主程序”发出信号以加载它们,一切都很好。我不确定如何在不再需要时正确卸载它们,而不会造成内存泄漏。
如果我对程序集执行 Application.Load,则卸载它的唯一方法是卸载整个 AppDomain。我对 AppDomains 的工作方式不是很熟悉,但这似乎会导致问题。
以前有没有人做过这种事情,并且可以就如何做到这一点提供一些建议,而不会造成不稳定或内存泄漏?
【问题讨论】:
标签: c# plugins architecture