Admin.NET为前后端分离架构,后台服务的入口项目为Admin.NET.Web.Entry,其与其它项目的依赖关系如下图所示。
由于项目采用Furion框架,后台服务启动方式、注册方式、配置方式等方面与常规的asp.net core项目差异明显,初步接触可能很不习惯,需要学习furion的基本用法才能看明白后台服务启动方式。
首先是配置文件,Furion支持获取任何项目层根目录下的json文件,然后自动合并所有分散的配置文件。除此之外,还支持在启动项目的appsettings.json文件中配置ConfigurationScanDirectories参数,指定配置文件目录集合,Furion启动时会自动导入并合并这些文件夹中的配置文件信息。
其次为启动方式,基于Furion框架,只需在启动项目的program.cs文件中调用Serve.Run即可达到常规启动文件的效果,按照Furion帮助文档的说法:“Serve.Run() 已经包含了基本的 WebAPI 功能,包含动态 WebAPI,跨域 等等”。Admin.NET项目的program.cs文件中使用了组件化启动方式,如下图所示。启动时调用的WebComponent组件继承自IWebComponent接口,该接口的Load函数等效于调用WebApplicationBuilder注册中间件。
最后是Startup文件,除了Admin.NET.Web.Entry和Admin.NET.Core项目,每个项目都包含继承自AppStartup的Startup类。Furion框架支持AppStartup启动,也即所有启动项目直接引用或间接应用的项目中继承自AppStartup类的Startup类都会被自动加载运行,所在的项目层没有被启动层直接或间接添加引用。Furion帮助文档的解释是避免集中配置或修改启动项目中的Startup类,而是每个项目只需关系自身项目中所需注册及使用的服务即可。
最后一点是GlobalUsings机制。从.NET6开始,微软新增了 GlobalUsings 机制,Admin.NET的不少项目根目录下都存在GlobalUsings.cs文件,其内是一组项目各代码文件共用的using语句,项目内其它cs文件不需要再次添加using声明,可以减少代码量。
关于上述内容更详细的说明请见参考文献3,本文仅是学习Furion的粗浅理解。
参考文献:
[1]https://github.com/zuohuaijun/Admin.NET
[2]http://101.43.53.74:5050/introduce/
[3]https://furion.net/docs/