校园一体化管理系统 3、项目搭建

📅 2026/7/17 21:40:11
校园一体化管理系统 3、项目搭建
一、开发启动第一阶段环境标准化准备1. 统一开发环境安装与版本锁定后端开发环境所有人统一版本IDEVisual Studio 2022 最新版安装.NET8 SDK组件、ASP.NET、Blazor WebAssembly开发负载数据库MySQL 8.0 本地开发库 Navicat管理工具缓存Redis 7.0 本地部署开发调试缓存、分布式锁、Token存储版本控制Git Gitee私有仓库工具Nuget私有包管理工具、Postman/Swagger调试接口前端配套环境VS Code辅助Blazor页面快速编辑MudBlazor组件库配套依赖、Wasm调试工具环境统一约束全项目统一.NET 8ORM固定SqlSugar前端固定非托管Blazor WebAssembly不使用托管模式2. 代码仓库初始化开发第一件事优先操作创建私有Git仓库仓库名SchoolSaas新建分支规范全员遵守master生产稳定分支禁止直接提交代码dev开发主干所有功能合并到此feature/xxx单人功能开发分支编写全局.gitignore文件强制忽略.NET编译产物bin、obj、.vs、publish前端产物node_modules、wwwroot静态打包文件敏感配置appsettings.Development.json、本地数据库连接配置、密钥文件工具缓存、日志、备份文件、IDE本地配置仓库创建完成后本地克隆后续所有项目都在该仓库根目录创建解决方案二、解决方案与分层项目创建1. 创建顶层解决方案VS新建空白解决方案命名SchoolSaas2. 按依赖顺序依次创建6个项目顺序1SchoolSaas.Shared公共类库所有项目底层依赖第一个创建项目类型类库(.NET8)作用前后端共享模型、统一返回体、枚举、分页DTO、全局常量后续打包私有Nuget供前端引用初始创建文件ResultModel.cs 统一接口返回模型GlobalConsts.cs 系统常量、正则、分页参数基类CommonEnums 基础枚举占位后续同步Domain枚举顺序2SchoolSaas.Domain领域层仅依赖Shared项目类型类库(.NET8)核心内容占位创建Entities文件夹BaseEntity.cs、ITenantEntity.cs租户接口Enums文件夹DeployMode.cs私有化/SaaS模式枚举TenantContext 租户上下文基础类AuthContract JWT、权限、授权模型DomainEvents 事件总线基础接口顺序3SchoolSaas.Infrastructure基础设施层依赖DomainShared项目类型类库(.NET8)初始化文件夹RepositoryIBaseRepository、BaseRepository、UnitOfWork、DbSetupSqlSugar初始化CacheRedisHelper基础封装CommonTools文件、Excel、加密、备份工具占位类提前引入Nuget包SqlSugar、StackExchange.Redis、Serilog、EPPlus顺序4SchoolSaas.Application应用业务层依赖DomainInfrastructureShared项目类型类库(.NET8)初始化文件夹ServicesIBaseService基础业务接口、业务模块文件夹占位(System/Edu/Teaching/Moral)DtosInputDtos入参、OutputDtos出参后续同步至Shared生成Nuget顺序5SchoolSaas.Api后端API入口ASP.NET Core WebAPI依赖前面四层项目类型ASP.NET Core Web API .NET8初始化文件夹Controllers空控制器文件夹仅做请求转发无业务Filters全局异常过滤器、权限过滤器、审计过滤器、参数校验过滤器Extensions服务批量注册扩展类、部署模式配置扩展MiddlewareYarp代理中间件、租户解析中间件提前配置Swagger、CORS跨域、JWT配置占位、appsettings多环境配置顺序6Client.Blazor外网前端最后创建仅Nuget引用Shared无项目引用项目类型Blazor WebAssembly非托管模式不勾选ASP.NET Core托管初始化目录Pages分模块页面文件夹占位(SystemManage/EduPage/TeacherPage等)SharedComponents通用表格、上传、权限按钮、弹窗组件HttpServicesHttpClient拦截器、各模块API请求封装wwwroot/appsettings.json仅配置外网API域名无密钥3. 配置项目单向依赖禁止循环引用严格遵守文档约束SchoolSaas.Api → Application、Infrastructure、Domain、SharedSchoolSaas.Application → Domain、Infrastructure、SharedSchoolSaas.Infrastructure → Domain、SharedSchoolSaas.Domain → SharedClient.Blazor不添加任何后端项目引用后续打包Shared为私有Nuget后通过Nuget安装三、底层基础框架封装项目创建完成后立刻开发业务模块延后1. 先完成Shared公共层核心代码统一返回泛型ResultModelCode、Msg、Data、Success快捷方法分页基础PageDto、分页返回PageResult全局常量权限标识、缓存key前缀、文件大小限制、Token过期时间2. Domain领域层基础实体搭建BaseEntity主键、创建人、创建时间、修改人、修改时间、IsDeleted软删除标识ITenantEntityTenantId租户接口私有化模式自动屏蔽过滤DeployMode枚举PrivateSingleSchool私有化单校、SaaSMultiTenant多租户SaaS3. Infrastructure底层核心封装系统地基优先级最高SqlSugar BaseRepository通用仓储封装新增、修改、删除、分页、批量操作UnitOfWork工作单元统一事务提交回滚SqlSugar全局过滤器配置软删除过滤、租户过滤根据DeployMode自动开关RedisHelper基础缓存、分布式锁封装通用工具类密码加密、数据脱敏、Excel导入导出基础方法4. Application基础业务基类IBaseService、BaseService封装通用业务方法所有业务Service继承统一分页查询入参、返回组装逻辑5. Api项目全局基础能力搭建全局异常过滤器区分内网/外网异常返回内网输出堆栈外网屏蔽敏感信息JWT身份认证注册、跨域CORS配置仅放行前端外网域名Swagger接口文档配置开发环境启用生产关闭权限校验过滤器、请求审计日志过滤器注册Yarp反向代理、租户解析中间件注册入口Program.cs统一封装服务注册扩展方法代码整洁解耦6. Client.Blazor前端基础封装HttpClient全局请求拦截器自动携带Bearer Token、Token过期跳转登录、统一解析后端Result返回体全局路由守卫未登录拦截跳转登录页通用基础UI组件通用分页表格、文件上传、权限控制按钮、弹窗PermissionButton优先完成