From 09aaae6b500f7d915a8aec82f75e9f8356e47f85 Mon Sep 17 00:00:00 2001 From: gitee-bot Date: Mon, 30 Jun 2025 02:36:34 +0000 Subject: [PATCH] Update README.md --- README.md | 192 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 151 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index b6ec48d..454389a 100644 --- a/README.md +++ b/README.md @@ -1,70 +1,180 @@ - - # LingYan_ASPFramework +LingYan_ASPFramework 是一个基于 ASP.NET Core 的模块化开发框架,旨在简化企业级应用的开发流程。它提供了丰富的功能模块、统一的架构设计以及高效的开发工具,帮助开发者快速构建高性能、可维护的应用程序。 + ## 介绍 -LingYan_ASPFramework 是一个用于构建 ASP.NET Core 应用程序的框架,支持模块化架构、特性自动注册、动态路由、权限处理、全局过滤、仓储模式和工作单元模式。它旨在提高开发效率并简化常见的开发任务,如数据库操作、服务注册和请求处理。 + +本框架基于模块化设计理念,支持动态路由、多数据库分片、自动依赖注入、统一异常处理、JWT 认证授权、在线支付集成、Redis 缓存、文件处理、日志记录等功能。适用于需要快速搭建微服务架构或单体应用的企业级项目。 ## 使用说明 -### 模块化基类 -框架提供了多种模块化基类来支持应用程序的不同部分,包括: -- `BaseModule` -- `BaseModule` -- `BaseModule` - -这些基类允许开发者以统一和可扩展的方式注册服务和初始化模块。 - -### 特性自动注册 -框架支持通过特性自动注册服务和组件,这些特性包括: -- **`LYTServiceAttribute`**: 用于标记服务类,实现自动服务注册。 -- **`LYInstanceAttribute`**: 用于标记需要注册为实例的类。 -- **`LYDynamicRouteAttribute`**: 用于支持动态路由的控制器类。 -- **`LYAuthorizeHandlerAttribute`**: 用于权限处理类。 -- **`LYGlobalFilterAttribute`**: 用于标记全局过滤器。 -- **`LYManagerAttribute`**: 用于领域管理类。 -- **`LYMiddlewareAttribute`**: 用于中间件类。 -- **`LYDbContextAttribute`**: 用于数据库上下文类。 - -这些特性简化了服务、路由和过滤器的注册过程,使得代码更加整洁和易维护。 - -### 仓储与工作单元 -框架内置了仓储模式 (`IRepository`) 和工作单元模式 (`IUnitOfWork`) 来统一管理数据访问逻辑。这些接口支持同步和异步操作,包括: -- 查询操作 (`GetAll`, `GetPagedList`) -- 插入、更新和删除 (`Insert`, `Update`, `Delete`) -- 聚合操作 (`Count`, `Sum`, `Average`) -- 事务管理 (`SaveChanges`, `SaveChangesAsync`) - -仓储模式支持多种数据库操作,如 SQL Server、MySQL 和 PostgreSQL,并且可以通过特性 (`LYDbContextAttribute`) 进行自定义配置。 -## 安装与配置 -要使用此框架,请确保您的项目已安装 .NET Core SDK 并支持 C# 9.0 或更高版本。然后,将框架引用到您的项目中,并根据需求注册模块和数据库上下文。 +### 主要功能模块 + +- **动态路由**:通过特性自动注册控制器和路由。 +- **分库分表**:支持多数据库连接、动态分片配置。 +- **依赖注入**:自动扫描并注册模块、服务、仓储等。 +- **统一异常处理**:全局异常捕获与响应封装。 +- **认证授权**:JWT Token 生成与验证,支持角色权限控制。 +- **在线支付**:集成支付宝、微信支付接口。 +- **文件处理**:支持文件上传、下载、加密、解密、二维码生成等。 +- **日志记录**:集成 NLog,支持多种日志级别与输出方式。 +- **事件总线**:基于 Pub/Sub 模式实现模块间通信。 +- **单元测试**:提供基础测试类与 Mock 支持。 + +## 模块化基类 + +框架采用模块化设计,所有模块继承自 `BaseModule`,支持在 `ARegisterModule` 和 `BInitializationModule` 中分别进行服务注册与初始化逻辑。 + +```csharp +public class RestApiModule : BaseModule +{ + public override void ARegisterModule(WebApplicationBuilder services) + { + // 注册服务 + } + + public override void BInitializationModule(WebApplication provider) + { + // 初始化中间件 + } +} +``` + +## 特性自动注册 + +通过自定义特性(如 `[LYTService]`, `[LYInstance]`, `[LYDynamicRoute]` 等),框架可自动扫描并注册服务、实例、路由等。 -## 示例代码 ```csharp -// 示例:服务注册 [LYTService(typeof(ITestService))] public class TestService : ITestService { public ResponceBody TestBack() { - return new ResponceBody("Test successful", 200); + return new ResponceBody("Hello World"); } } +``` + +## 仓储与工作单元 + +框架内置通用仓储 `Repository` 和工作单元 `UnitOfWork`,支持分页查询、事务管理、批量操作等。 + +```csharp +var product = await _repository.GetFirstOrDefaultAsync(p => p.Id == 1); +var products = await _repository.GetPagedListAsync(pageIndex: 1, pageSize: 20); +``` + +## 安装与配置 + +### 1. 添加 NuGet 包(如适用) + +```bash +dotnet add package LingYanAspCoreFramework +``` + +### 2. 配置 `appsettings.json` + +```json +{ + "JwtModel": { + "Issuer": "your-issuer", + "Audience": "your-audience", + "SecretKey": "your-secret-key", + "Expres": 3600 + }, + "DbConnections": { + "MySql": "Server=localhost;Database=test;User=root;Password=123456;" + } +} +``` -// 示例:动态路由控制器 +### 3. 在 `Program.cs` 中注册模块 + +```csharp +var builder = WebApplication.CreateBuilder(args); + +// 注册模块 +builder.Services.AppRegisterProjectModule(); + +var app = builder.Build(); + +// 初始化模块 +app.AppInitializationProjectModule(); + +app.Run(); +``` + +## 示例代码 + +### 创建动态路由 + +```csharp [LYDynamicRoute] public class TestDynamicRoute : BaseDynamicRoute { [HttpGet] public IActionResult TestGet() { - return Ok("Dynamic route accessed via GET"); + return Ok("This is a dynamic route."); + } +} +``` + +### 使用仓储操作数据库 + +```csharp +public class ProductService +{ + private readonly IRepository _repository; + + public ProductService(IRepository repository) + { + _repository = repository; + } + + public async Task GetProductById(int id) + { + return await _repository.GetFirstOrDefaultAsync(p => p.Id == id); } } ``` +### 使用 JWT 认证 + +```csharp +services.AddAuthentication(options => +{ + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; +}) +.AddJwtBearer(options => +{ + options.TokenValidationParameters = new TokenValidationParameters + { + ValidateIssuer = true, + ValidateAudience = true, + ValidateLifetime = true, + ValidateIssuerSigningKey = true, + ValidIssuer = Configuration["JwtModel:Issuer"], + ValidAudience = Configuration["JwtModel:Audience"], + IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JwtModel:SecretKey"])) + }; +}); +``` + ## 许可证 -本项目采用 MIT 许可证。详情请查看 LICENSE 文件。 + +本项目使用 MIT 许可证。详情请查看 [LICENSE](LICENSE) 文件。 ## 贡献 -欢迎贡献!如果您有任何想法或改进,请提交 Pull Request 或创建 Issue。 \ No newline at end of file + +欢迎提交 Pull Request 或提出 Issue。请遵循以下贡献指南: + +- Fork 项目并创建新分支 +- 提交清晰、简洁的 Commit 信息 +- 确保新增代码通过单元测试 +- 更新相关文档(如 README、API 文档等) + +--- + +如有任何问题,请联系项目维护者或在 Gitee 上提交 Issue。 \ No newline at end of file -- Gitee