今天说一说.NET 中的插件技术,即 应用程序热升级。在很多情况下、我们希望用户对应用程序的升级是无感知的,并且尽可能不打断用户操作的。

虽然在Web 或者 WebAPI上,由于多点的存在可以逐个停用单点进行系统升级,而不影响整个服务。但是 客户端却不能这样做,毕竟用户一直在使用着。

那么有没有一种方式,可以在用户无感知的情况下(即、不停止进程的情况下)对客户端进行升级呢?

答案是肯定的, 这就是我今天想说的插件技术、可以对应用程序进行热升级。当然这种方式也同样适用于 ASP.NET ,

不过当前随笔是以 WPF为例子的,并且原理是一样的、代码逻辑也是一样的。

 

一、应用程序域AppDomain

在介绍插件技术之前、我们需要先了解一些基础性的知识,第一个就是应用程序域AppDomain.

操作系统和运行时环境通常会在应用程序间提供某种形式的隔离。 例如,Windows 使用进程来隔离应用程序。 为确保在一个应用程序中运行的代码不会对其他不相关的应用程序产生不良影响,这种隔离是必需的。这种隔离可以为应用程序域提供安全性、可靠性, 并且为卸载程序集提供了可能。

 

在 .NET中应用程序域AppDomain是CLR的运行单元,它可以加载应用程序集Assembly、创建对象以及执行程序。<