概述
贡献指南将详细介绍和说明工具内部实现的设计思路、实现原理、开发指南等等内容,让开发者能够更深入的理解和参与到 Perigon 的开发中。
项目结构
Perigon 项目主要包含以下几个部分:
- scripts:包含一些脚本文件,用于辅助开发和部署。
- src: 包含主要的源代码文件。
- Command/CommandLine: 命令行工具实现。
- Definition:定义层
- CodeGenerator: 核心代码生成逻辑
- EfCoreContext: EntityFramework Core相关定义
- Entity: 实体定义
- Share: 共享的帮助类和生成服务等
- Modules/StudioMod: Studio业务逻辑实现模块。
- Services/AterStudio: AspNetCore应用,提供Studio WebUI管理界面和MCP服务.
命令行工具
基于Spectre.Console.Cli实现。在CommandLine项目中实现,通过调用CommandService来调用具体的逻辑。
Studio管理界面
AterStudio项目是基于Blazor Server实现的Web应用,在AterStudio/Components目录下包含了各个组件的实现。
组件中将通过调用Modules/StudioMod模块中的Manager来实现具体的业务逻辑。
内置代码生成
代码生成主要依赖Roslyn实现,核心代码在Definition/CodeGenerator目录下。
解析实体
目前有两种方式对实体进行解析,一是通过Roslyn对实体类进行静态解析。
另一种是通过EntityFrameworkCore.Design对数据库上下文进行建模,获取相关的信息。
通过EntityFrameworkCore.Design能够获取到更多的实体信息,包括实体的关系、属性等,这对于生成代码和前端请求非常有帮助。
关于注释,会通过XmlDocHelper来提取文档注释信息。
OpenApi解析
通过Microsoft.OpenApi对OpenApi规范进行解析,获取相关的API信息。
不同类型客户端的请求服务生成,通过继承ClientRequestBase抽象类来实现,各语言的类型解析通过继承LanguageFormatterBase来实现。
运行与测试
最简单和直观的方式,是直接运行AterStudio项目,它将启动Web应用,提供Studio的管理界面。
如果是CommandLine项目,直接使用dotnet run命令,携带参数即可。
TOC