三、源码结构
Hoa Framework 采用自动抽象工厂多层设计模式。
Hoa 项目层
Hoa 项目层是Hoa Framework 的核心层,支撑着整个应用的初始化和管理工作。
HoaFramework
├─Hoa 框架核心层(由框架作者维护)
│ ├─AppConfigure 应用全局配置选项目录
│ ├─Authorization 应用授权目录
│ │ ├─HoaMultipleClassifyPolicy 内置多应用授权策略目录
│ ├─DbManager 数据库操作管理目录
│ │ ├─Attributes 特性目录
│ │ ├─Collections 分页拓展目录
│ │ ├─ContextPool 上下文池目录
│ │ ├─Extensions 拓展目录
│ │ ├─Filters 过滤器目录
│ │ ├─Helpers 帮助库过滤器目录
│ │ ├─Identifiers 多上下文标识目录
│ │ ├─Interceptors 拦截器目录
│ │ ├─Repositories 内置EF Core仓储目录
│ │ ├─Tangents 切面上下文目录
│ │ ├─Tenant 多租户目录
│ ├─Dependencies 注入/反转依赖目录
│ ├─Encryption 数据加密目录
│ ├─Exception 内置异常目录
│ ├─Extensions 拓展方法目录
│ ├─Helpers 帮助类目录
│ ├─Interceptors 内置拦截器目录
│ ├─IocManager 依赖注入/控制反转目录
│ ├─Jwt Jwt授权目录
│ ├─Models 碎片类目录
│ ├─ServiceController 动态WebApi目录
│ │ ├─Attributes 特性目录
│ ├─Swagger Swaggger管理目录
│ ├─Views 视图相关管理目录
│ │ ├─Models 模型目录
│ ├─Workbook Excel操作目录
│ ├─AppGlobal.cs 全局应用类
│ ├─HoaModule.cs 依赖配置管理类
Hoa.Application 项目层
Hoa.Application 项目层是应用业务代码编写的主要层。
HoaFramework
├─Hoa.Application 业务代码主要编写层
│ ├─Authorization 内置授权示范例子目录
│ ├─AppConst.cs 业务层常量配置类
│ ├─HoaApplicationModule.cs 依赖配置管理类
│ ├─HoaAppService.cs 业务层公共代码定义类
│ ├─ManualMapper.cs 模型映射配置类
Hoa.Core 项目层
Hoa.Core 项目层是数据库实体模型、自定义仓储编写的主要层。
HoaFramework
├─Hoa.Core 实体模型、自定义仓储主要编写层
│ ├─DbConst.cs 数据库常量配置类
│ ├─DbScalarFunctions.cs 数据库标量函数配置类
│ ├─HoaCoreModule.cs 依赖配置管理类
Hoa.EntityFrameworkCore 项目层
Hoa.EntityFrameworkCore 项目层是EF Core构建 代码先行(Code First)
和 逆向工程(Database First)
代码生成器主要层。
HoaFramework
├─Hoa.EntityFrameworkCore EF Core 实体生成器及配置层
│ ├─DbContextBakFiles HoaDbContext生成备份目录
│ ├─db_to_entities.ps1 逆向工程生成模型脚本文件
│ ├─HoaDbContext.cs EF Core 数据库操作上下文类
│ ├─ManualHoaDbContext.cs 存储过程、视图、函数、自定义模型配置类
│ ├─HoaEntityFrameworkCoreModule.cs 依赖配置管理类
Hoa.UnitTest.Specs 项目层
Hoa.UnitTest.Specs 项目层是整个框架的单元测试层,默认集成了 UnitTest 和 SpecFlow 类库。
HoaFramework
├─Hoa.UnitTest.Specs UnitTest和SpecFlow 单元测试层
│ ├─Features 测试故事板目录
│ ├─SpecFlowPlusRunner SpecFlow测试自动生成目录
│ ├─StepDefinitions Feature故事板生成的测试目录
│ ├─Support 单元测试帮助类目录(包含依赖注入,初始化等)
Hoa.Web.Core 项目层
Hoa.Web.Core 项目层是Web应用的核心公共代码配置层。
HoaFramework
├─Hoa.Web.Core Web应用公共代码配置层(过滤器、MVC拓展、服务拓展等)
│ ├─Filters 过滤器目录
│ ├─MiddlewareExtensions 中间件拓展目录
│ ├─Middlewares 中间件目录
│ ├─MvcBuilderExtensions MvcBuilder拓展目录(拓展Mvc功能)
│ ├─ServiceExtensions Startup 服务拓展目录
│ ├─HoaWebConfigure.cs Web应用启动初始化文件
│ ├─HoaWebCoreModule.cs 依赖配置管理类
Hoa.Web.Host 项目层
Hoa.Web.Host 项目层是我们框架自带的WebAPI应用层,也就是我们的启动层。
HoaFramework
├─Hoa.Web.Host Web应用层(启动项)
│ ├─Properties 服务器主机启动配置目录
│ ├─wwwroot 静态资源存放目录
│ ├─Controllers 默认控制器目录(支持MVC所有功能)
│ ├─appsettings.json 全局框架应用配置文件
│ ├─appsettings.Development.json 全局框架应用配置文件(开发环境)
│ ├─nlog.config NLog 日志组件配置文件
│ ├─Program.cs 应用启动程序类
│ ├─Startup.cs 应用启动挂载文件
Hoa.MSTest.SpecFlow 项目层
Hoa.MSTest.SpecFlow 项目层是单元测试核心功能层,也就是所有的单元测试需要的模型、服务、接口都应该在这里定义。
HoaFramework
├─Hoa.MSTest.SpecFlow 单元测试核心层
│ ├─Dependencies 依赖注入目录
│ ├─Extensions 测试快捷拓展目录
│ ├─Materials 单元测试需要的辅助类目录
│ ├─Models 模型定义目录
│ ├─SpecFlowStartup.cs 单元测试初始化启动类
│ ├─TestConst.cs 测试常量配置类
Hoa.MSTest.Projects 项目层
Hoa.MSTest.Projects 项目层是单元测试测试代码层,主要对应用项目进行单元测试。
HoaFramework
├─Hoa.MSTest.Projects 项目代码单元测试层
│ ├─Features 故事板/测试案例目录
│ ├─SpecFlowPlusRunner SpecFlow运行测试依赖目录
│ ├─StepDefinitions 故事板/测试案例生成具体的测试步骤目录
│ ├─Startup.cs 启动配置类
Hoa.MSTest.Remote 项目层
Hoa.MSTest.Remote 项目层是单元测试测试代码层,主要对远程API进行单元测试。
该项目层有区别于 Hoa.MSTest.Projects
,前者主要对远程API进行测试,后者是测试项目代码。🤦♀️🤦♂️🤷♀️🤷♂️
HoaFramework
├─Hoa.MSTest.Remote 远程API单元测试层
│ ├─Features 故事板/测试案例目录
│ ├─SpecFlowPlusRunner SpecFlow运行测试依赖目录
│ ├─StepDefinitions 故事板/测试案例生成具体的测试步骤目录
│ ├─Startup.cs 启动配置类
Hoa.Worker.Projects 项目层
Hoa.Worker.Projects 项目层是创建Windows服务或Linux守护进程的服务层,可以非常方便的系统后台服务。
HoaFramework
├─Hoa.Worker.Projects 工作服务目录
│ ├─Properties 配置信息
│ ├─Workers 具体的工作目录(功能都写在这里)
│ ├─create_system_services.ps1 创建系统服务脚本
│ ├─delete_system_services.ps1 删除系统服务脚本(只能删除自己创建的)
│ ├─Program.cs 启动程序
│ ├─WorkerStartup.cs 工作服务启动注册类