1. 程式人生 > >我發起了一個 .Net Core 平臺上的 開源項目 ShadowDomain 用於 熱更新

我發起了一個 .Net Core 平臺上的 開源項目 ShadowDomain 用於 熱更新

哈哈哈 當前 serve 我不 一個 文章 開源 通過 host

大家好, 我發起了一個 .Net Core 平臺上的 開源項目 ShadowDomain 用於 熱更新 。

簡單的說, 原理就是 類似 Asp.net 那樣 讓 當前 WebApp 運行在一個 App Domain 中,

當 WebApp 的 Bin 目錄 或者 Web.config 被更新時, 就會 創建一個 新的 App Domain,

我們把 這個 新的 App Domain 稱之為 “New Domain”,

把 原來的 正在運行的 App Domain 稱之為 “Old Domain” ,

然後, 將 更新後的 程序(Bin目錄 , Web.config) 運行在 New Domain 下,

然後, 等 Old Domain 裏把 已經在 處理的 請求 都 處理 完成後, 就 停止 和 銷毀 Old Domain 。

這樣就可以 實現 在線熱更新,或者 運行中熱更新,

也不需要考慮 更新文件 後 要 重啟 應用程序 等問題 。

這個項目裏 包含 3 個 部分 :

1 一個 Host 框架 for Kestrel, 這是 Asp.net 的部分

2 一個 Host 框架 for Windows Service, 這是 Windows Service 的部分

3 一個 Host 框架 for Linux AP , 就相當於是 Linux 上的 Windows Service, 我不知道 Linux 上的 Windows Service 叫什麽, 就叫 AP 好了

1 的 原理就是 把 Kestrel 作為一個 應用(AP), 通過 Host 創建一個 App Domain , 讓 Kestrel 運行在這個 App Domain 裏,

有更新的話, 就像上面說的, 創建一個 New Domain , 讓 更新後的 程序 運行在 New Domain,

同時 等 Old Domain 處理完 請求, 則 停止 和 銷毀 Old Domain 。

2 , 3 的 原理 類似 。

至於 Shadow Domain, 也許是指 New Domain, 也許是指 Old Domain, 我記不清了…… 反正都講得通 。哈哈哈

Shadow Domain 這個項目 的 意義在於 為 ServerFul 架構 提供了支持,

有關 ServerFul 架構, 請參考我寫的另一篇文章 《》

我發起了一個 .Net Core 平臺上的 開源項目 ShadowDomain 用於 熱更新