三、源码结构

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                工作服务启动注册类

最后更新于