C# Winform通用开发框架,支持多语言,多数据库,自动更新,模块化,可用其开发任意CS端系统

张开发
2026/4/5 18:07:45 15 分钟阅读

分享文章

C# Winform通用开发框架,支持多语言,多数据库,自动更新,模块化,可用其开发任意CS端系统
C# Winform通用开发框架支持多语言多数据库自动更新模块化可用其开发任意CS端系统非常适合需要快速搭建项目的团队或个人使用。框架概述LCIT.CPS 是一个基于 C# Winform 的通用开发框架支持多语言、多数据库、自动更新和模块化架构。该框架采用分层架构设计业务逻辑层(BLL)作为系统的核心处理层负责业务规则的实现和数据处理流程的编排。业务逻辑层架构设计1. 基础接口设计框架定义了统一的业务逻辑基础接口IBaseBLL为所有业务逻辑类提供标准化操作public interface IBaseBLLTEntity, TPrimaryKey where TEntity : class, IBaseEntityTPrimaryKey, new() { // 基础CRUD操作 TEntity GetEntity(TPrimaryKey id); TaskTEntity GetEntityAsync(TPrimaryKey id); ListTEntity GetEntityList(string whereSQL); // 分页查询 PagedTable GetTableOnPage(string whereSQL, int pageIndex, int pageSize, string orderBy null, string orderType null); PagedListTEntity GetListOnPage(string whereSQL, int pageIndex, int pageSize, string orderBy null, string orderType null); // 数据操作 bool CreateEntity(TEntity entity); bool UpdateEntity(TEntity entity); bool DeleteEntity(TPrimaryKey id); }2. 仓储工厂模式框架采用仓储工厂模式RepositoryFactory实现数据访问的统一管理public class LabelParameterBLL : RepositoryFactoryLabelParameter, long, ILabelParameterBLL { // 继承基础CRUD功能可扩展特定业务逻辑 }核心功能模块详解1. 系统管理模块1.1 用户管理 (UserBLL)功能描述用户身份认证和授权管理用户角色关联管理权限控制核心方法public async TaskEntity.System.Users LoginAsync(string userCode, string password) { var user await this.Repository.GetEntityAsync(UserCode, userCode); var appUserManager new AppUserManager(new AppUserStore()); var verificationResult appUserManager.PasswordHasher.VerifyHashedPassword(user.Password, password); return verificationResult PasswordVerificationResult.Success ? user : null; } public async Task CreateUser2RoleAsync(long userId, Liststring list_RoleIds) { using (var dbTransaction Db.BeginTrans()) { // 删除原有角色关联 Db.DeleteUser2Role(UserId, userId.ToString(), dbTransaction); // 创建新的角色关联 foreach (var roleId in list_RoleIds) { var user2Role new User2Role { UserId userId, RoleId roleId.ToInt64() }; await Db.InsertAsync(user2Role, dbTransaction); } Db.Commit(); } }1.2 权限管理 (PermissionBLL)功能描述菜单权限和操作权限管理基于角色的权限控制(RBAC)用户个性化权限设置核心实现public async TaskDataTable GetPermissionsAsync() { var strSQL SELECT sm.Id, sm.ParentId, sm.MenuCode PermissionCode, sm.MenuName PermissionName, 0 PermissionType FROM SYS_Menu sm UNION ALL SELECT smo.Id, smo.MenuId ParentId, smo.OperationCode PermissionCode, smo.OperationName PermissionName, 1 PermissionType FROM SYS_Menu2Operation smo; return await this.Db.GetTableBySqlAsync(strSQL); }1.3 菜单管理 (MenuBLL)功能描述动态菜单配置菜单操作权限绑定菜单层级管理特色功能public PagedTable GetMenusOnPage(string menuCode, string menuName, int pageIndex, int pageSize) { var strSQL SELECT m1.Id, m1.MenuName, m1.MenuCode, m1.AssemblyName, m1.NameSpace, m1.ClassName, m1.ParentId, m2.MenuName AS ParentName, m1.Seq, m1.CreatorFullName, m1.CreationTime FROM SYS_MENU m1 LEFT JOIN SYS_MENU m2 ON m1.ParentId m2.Id WHERE 11; // 动态条件拼接 if (!menuCode.IsNullOrEmpty()) strSQL $ AND m1.MenuCode{menuCode}; if (!menuName.IsNullOrEmpty()) strSQL $ AND m1.MenuName{menuName}; return this.Db.GetTableOnPageBySql(strSQL, Seq, , pageIndex, pageSize); }2. 配置管理模块2.1 标签模板管理 (LabelTemplateBLL)功能描述标签模板配置和管理模板与参数关联管理支持条形码类型配置核心业务逻辑public async Task CreateLabelTemp2ParamAsync(long tempId, Liststring list_ParamIds) { try { using (var dbTransaction Db.BeginTrans()) { // 事务处理先删除后插入 Db.DeleteLabelTemplate2Param(TemplateId, tempId.ToString(), dbTransaction); var labelTemplate2Param new LabelTemplate2Param(); foreach (var paramId in list_ParamIds) { labelTemplate2Param.TemplateId tempId; labelTemplate2Param.ParameterId paramId.ToInt64(); if (!await Db.InsertAsync(labelTemplate2Param, dbTransaction)) { throw new Exception(保存失败!); } } Db.Commit(); } } catch (Exception ex) { Db.Rollback(); throw new Exception(ex.Message Environment.NewLine ex.StackTrace); } }2.2 数据字典管理 (ValueSetBLL)功能描述系统数据字典统一管理支持多级分类启用/禁用控制数据操作public async TaskListValueSetCodeDto GetValueSetCodeListAsync(string typeCode) { var valueSetCodes await this.Db.GetListAsyncValueSetCode(TypeCode, typeCode); return valueSetCodes.MapToListValueSetCode, ValueSetCodeDto().ToList(); }3. 版本管理模块 (VersionBLL)功能描述系统版本控制自动更新支持版本发布管理核心方法public async TaskVersionsDto GetMaxVersionAsync() { var sql SELECT TOP 1 * FROM [dbo].[SYS_Version] ORDER BY VersionNo DESC; var version await this.Db.GetEntityBySqlAsyncVersions(sql); return version.MapTo(new VersionsDto()); }技术特色与设计模式1. 异步编程支持框架全面支持异步操作提高系统响应能力public async Taskbool UpdateLoginTimeAsync(long userId) { var user await this.Repository.GetEntityAsync(userId); user.LastLoginTime DateTime.Now; return await this.Repository.UpdateAsync(user); }2. 事务管理采用统一的事务管理机制确保数据一致性using (var dbTransaction Db.BeginTrans()) { // 多个数据库操作 Db.Delete...(...); await Db.InsertAsync(...); // ... Db.Commit(); }3. DTO模式应用使用DTO(Data Transfer Object)进行数据传输public class LabelParameterDto : BaseEntitylong, IMayHaveTenant { public int? TenantId { get; set; } public string ParameterCode { get; set; } public string ParameterName { get; set; } public string Remark { get; set; } }4. 多租户支持通过IMayHaveTenant接口实现多租户数据隔离public interface IMayHaveTenant { int? TenantId { get; set; } }数据处理流程1. 标准CRUD流程用户请求 → 业务逻辑层 → 数据验证 → 事务管理 → 数据访问层 → 数据库操作 → 返回结果2. 复杂业务处理流程开始事务 ├── 数据验证 ├── 业务规则检查 ├── 主数据操作 ├── 关联数据操作 └── 提交/回滚事务扩展性与维护性1. 模块化设计各功能模块独立封装清晰的接口定义松耦合的组件关系2. 配置灵活性支持多数据库(SQL Server、Oracle、SQLite)可配置的连接管理动态SQL支持3. 错误处理机制统一的异常处理事务回滚保障详细的错误日志总结LCIT.CPS 业务逻辑层通过精心设计的架构模式和规范的业务流程为企业级应用开发提供了稳定、高效、可扩展的基础框架。其模块化设计、多租户支持、完善的权限管理和灵活的配置能力使其能够适应各种复杂的业务场景需求为快速开发高质量的CS端系统提供了强有力的技术支撑。C# Winform通用开发框架支持多语言多数据库自动更新模块化可用其开发任意CS端系统非常适合需要快速搭建项目的团队或个人使用。

更多文章