.net中的插件架构:卸载
我需要在c#/ .net中实现一个插件架构才能加载
- 自定义用户定义的操作
- 数据类型处理自定义数据网格/转换/ …的代码
来自非静态链接的程序集文件。
因为应用程序必须处理许多自定义用户定义的操作,所以Iam需要在执行后卸载它们以减少内存使用。
我发现了几篇关于插件架构的好文章,例如:
- ExtensionManager
- PluginArchitecture
- …
但他们都没有给我足够的香肠来正确地卸下组件。
由于要分发程序并且用户定义的操作(如名称所示)用户定义:如何防止程序集执行恶意代码(例如,关闭我的程序,删除文件)?
你们其中一个人遇到过其他陷阱吗?
您是否考虑过使用MS的Add-Ins和Extensiblity框架? http://msdn.microsoft.com/en-us/magazine/cc163476.aspx
迈克尔
一种技术是将其他程序集加载到单独的AppDomain中。 卸载AppDomain将卸载程序集。
您无法卸载单个程序集。 您只能通过卸载它们所属的AppDomain来卸载一组程序集。
这实质上就是SQL CLR的工作原理,以及ASP.NET – 通过为用户提供的程序集提供临时AppDomain。