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

大家好,  我发起了一个 .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 架构, 请参考我写的另一篇文章  《》

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

时间: 2024-10-08 23:06:15

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

GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。

1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便地使用所有版本的Android动作栏的设计模式. 对于Android 4.0及更高版本,ActionBarSherlock可以自动使用本地ActionBar实现,而对于之前没有ActionBar功能的版本,基于Ice Cream Sandwich的自定义动作栏实现将自动围绕布局.能够让开发者轻松开发

使用cvs或svn从sourceforge上获取开源项目的方法[转载]

著名开源软件网站(www.sourceforge.net)上面的开源项目,大部分使用的管理工具为cvs或svn. 这两种软件的代表客户端程序是wincvs和tortoiseSVN. 1.cvs CVS (Concurrent Versions System) is a tool used by many software developers to manage changes within their source code tree. CVS provides the means to st

在github上参与开源项目贡献代码

1 登录github, 点击自己感兴趣的repository的fork按钮,这样自己的github主页会有一个拷贝. 2 在自己本地修改同时保持和原来的repository同步: git remote -v, 看看自己当前git repository的configure, origin 表示自己的repository 要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 git remote add [shortname] [url]:git remote add upstream

Fragment为载体可自动布局的CardView(GitHub上写开源项目初体验)

前些天一直在看Android5.0 的Material Desgin,里面新增了一个新的控件——CardView.从Google这次直接提供了CardView控件就可以看出它已经变的非常流行了. 在此之前我们可以通过设置圆角边框来模拟CardView效果,但现在既然Google已经提供了新控件就没有理由不用它了.而我之前在学自定义布局的时候写了一个CardView自动布局的小Demo——ANDROID自定义视图——仿瀑布布局(附源码) 刚好最近正好在学Git,而且也想试试CardView在5.0

如何在sourceforge上找到开源项目并在centos进行安装-以htop的安装为例

一.htop是什么? top是linux下常用的监控程序,htop相当于其加强版,颜色显示不同参数,且支持鼠标操作. 具体介绍参看此说明文档. 二.如何下载? 一般开源项目托管在sourceforge上面,当然也有些托管在github上,但github最近才火起来,所以sourceforge上多一些成熟的项目. 第一步.找到sourceforge上的htop页面. 第二步.找到文件所在的目录,分为如下几步: 1.选择browse all files 2.选择htop文件目录 3.选择最新的版本

[最新].NET Core ORM 开源项目一览,持续更新

原文:[最新].NET Core ORM 开源项目一览,持续更新 截至2019-05-08共收集27个 .NET Core ORM 开源项目,38个 .NET ORM 开源项目. .NET Core ORM 开源项目收集地址:https://github.com/orm-core-group .NET ORM 开源项目收集地址:https://github.com/orm-group 如有遗漏,欢迎引荐!!! 项目名称 项目描述 代码仓库地址 Insight.Database Fast, lig

我如何在OSC上做开源项目

昨天 @红薯 约我了!不过,是约稿,让我讲讲我在OSC上如何做开源项目和利用开源项目赚钱.如何做开源软件,大家都明白,所以重点是在如何利用开源软件赚钱. 先简单介绍一下我的开源项目:开源进销存PSI ( http://git.oschina.net/crm8000/PSI),是一款企业管理软件,帮助企业管理采购.销售和库存.这是我的创业项目,不是业余爱好,所以从项目一开始启动,我就规划了整个商业化的步骤.进销存产品本身没有什么技术含量,所以必须从商业模式上创新,才有可能立足和发展. 互联网上的生

【分享】Asp.net Core相关教程及开源项目

入门 全新的ASP.NET:  https://www.cnblogs.com/Leo_wl/p/5654828.html 在IIS上部署你的ASP.NET Core项目: https://www.cnblogs.com/wangjieguang/p/core-iis.html 举个例子来聊聊它的依赖注入: http://www.bkjia.com/Asp_Netjc/1309630.html, http://www.cnblogs.com/jesse2013/p/di-in-aspnetcor

Pull Request的正确打开方式(如何在GitHub上贡献开源项目)

GitHub的官方帮助如下: Fork A Repo: https://help.github.com/articles/fork-a-repo Using Pull Requests: https://help.github.com/articles/using-pull-requests Merging a pull request: https://help.github.com/articles/merging-a-pull-request Closing a pull request: