设为首页 加入收藏

TOP

使用 .NET Core 3.0 的 AssemblyLoadContext 实现插件热加载(四)
2019-10-09 19:59:07 】 浏览:175
Tags:使用 .NET Core 3.0 AssemblyLoadContext 实现 插件 加载
;)) { bool keepRunning = true; Console.CancelKeyPress += (sender, e) => { e.Cancel = true; keepRunning = false; }; while (keepRunning) { try { Console.WriteLine(controller.GetMessage()); } catch (Exception ex) { Console.WriteLine($"{ex.GetType()}: {ex.Message}"); } Thread.Sleep(1000); } } }

主函数创建了 PluginController 实例并指定了上述的 guest 文件夹为插件文件夹,之后每隔 1 秒调用一次 GetMessage 方法,这样插件代码改变的时候我们可以从控制台输出中观察的到,如果插件代码包含语法错误则调用时会抛出异常,程序会继续运行并在下一次调用时重新尝试编译与加载。

写在最后

本文的介绍就到此为止了,在本文中我们看到了一个最简单的 .NET Core 3.0 插件热加载实现,这个实现仍然有很多需要改进的地方,例如如何管理多个插件、怎么在重启宿主程序后避免重新编译所有插件,编译的插件代码如何调试等,如果你有兴趣可以解决它们,做一个插件系统嵌入到你的项目中,或者写一个新的框架。

关于 ZKWeb,3.0 会使用了本文介绍的机制实现插件热加载,但因为我目前已经退出 IT 行业,所有开发都是业余空闲时间做的,所以基本上不会有很大的更新,ZKWeb 更多的会作为一个框架的实现参考。此外,我正在使用 C++ 编写 HTTP 框架 cpv-framework,主要着重性能 (吞吐量是 .NET Core 3.0 的两倍以上,与 actix-web 持平),目前还没有正式发布。

关于书籍,出版社约定 11 月但目前还没有让我看修改过的稿件 (尽管我问的时候会回答),所以很大可能会继续延期,抱歉让期待出版的同学们久等了,书籍目前还是基于 .NET Core 2.2 而不是 .NET Core 3.0。

首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇.NET开发者必须学习.NET Core 下一篇.netcore+vue+elementUI 前后端分..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目