Jus*_*tin 5 .net asp.net assemblies
ASP.Net允许您将新程序集复制到bin应用程序的目录中,而无需重新启动任何服务或进程.
我有一个加载用户定义的插件和扩展的应用程序(其中一些是基于COM的) - 我想提供类似的功能(即无需重新启动过程就能更改/更新程序集).目前,程序集已锁定,直到进程停止.
ASP.Net如何管理这个?
ASP.Net 通过使用“影子复制”来实现这一点。请参阅此处: MSDN 卷影复制
基本上,程序集被 ASP.Net 复制到不同的文件夹,并从该文件夹加载到应用程序域中。正是该程序集的复制版本被进程锁定,从而使原始程序集文件(位于 Bin 文件夹中)保持解锁状态。然后,应用程序域被配置为监视原始程序集的更改,并且在检测到更新的情况下,将创建新的应用程序域并将新程序集加载到其中。
此时,任何未来对 Web 应用程序的请求都将由 ASP.Net 路由到新的应用程序域,而旧的应用程序域将保持活动状态,以继续为任何当前正在执行的请求提供服务,直至完成。当 ASP.Net 确定旧的应用程序域不再处理任何请求时,它将被卸载并且“热交换”完成。
根据您的简短描述,我建议您研究一下Microsoft MEF。MEF 是一个致力于构建您所描述的插件架构类型的框架。