码迷,mamicode.com
首页 > Web开发 > 详细

我发起了一个 .Net Core 平台上的 开源项目 ShadowDomain 用于 热更新

时间:2018-12-25 22:24:28      阅读:418      评论:0      收藏:0      [点我收藏+]

标签:请求   处理   domain   .config   一个   就会   创建   在线   需要   

大家好,  我发起了一个 .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 用于 热更新

标签:请求   处理   domain   .config   一个   就会   创建   在线   需要   

原文地址:https://www.cnblogs.com/KSongKing/p/10176695.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!