今天說一說.NET 中的插件技術,即 應用程序熱升級。在很多情況下、我們希望用戶對應用程序的升級是無感知的,并且盡可能不打斷用戶操作的。

雖然在Web 或者 WebAPI上,由于多點的存在可以逐個停用單點進行系統(tǒng)升級,而不影響整個服務。但是 客戶端卻不能這樣做,畢竟用戶一直在使用著。

那么有沒有一種方式,可以在用戶無感知的情況下(即、不停止進程的情況下)對客戶端進行升級呢?

答案是肯定的, 這就是我今天想說的插件技術、可以對應用程序進行熱升級。當然這種方式也同樣適用于 ASP.NET ,

不過當前隨筆是以 WPF為例子的,并且原理是一樣的、代碼邏輯也是一樣的。

 

一、應用程序域AppDomain

在介紹插件技術之前、我們需要先了解一些基礎性的知識,第一個就是應用程序域AppDomain.

操作系統(tǒng)和運行時環(huán)境通常會在應用程序間提供某種形式的隔離。 例如,Windows 使用進程來隔離應用程序。 為確保在一個應用程序中運行的代碼不會對其他不相關的應用程序產(chǎn)生不良影響,這種隔離是必需的。這種隔離可以為應用程序域提供安全性、可靠性, 并且為卸載程序集提供了可能。

 

在 .NET中應用程序域AppDomain是CLR的運行單元,它可以加載應用程序集Assembly、創(chuàng)建對象以及執(zhí)行程序。<