.NET6 EAF自动生成代码自动构建部署 简单快速上手开箱即用的角色模块权限控制系统

这是一套适合微服务的后台前后端分离系统 简单快速傻瓜式开发操作 本文是对此框架的配置和使用简单介绍

所有功能封装到一个包 已上传到nuget创建NetCore3.1以上版本包含控制器的Api项目 使用下命令安装或者搜索安装即可 具体配置运行按下面案例和Readme.md文档操作

dotnet add package FreeEaf.Core --version 1.0.3

自动生成代码操作演示视频:https://v.ixigua.com/iRaE8qS6/

后端项目地址: https://files-cdn.cnblogs.com/files/wangxun0918/EAF.AppName_发布版.rar

对接好的前端仓库地址: https://gitee.com/wangxun0918/app-admin.git

自动生成代码: https://files-cdn.cnblogs.com/files/wangxun0918/代码生成器_20230917.rar

自动构建: https://share.weiyun.com/pctAq7Sc

自动构建部署文档:https://www.cnblogs.com/wangxun0918/articles/15635772.html

转载请注明出处都是.net6运行环境 代码生成器就是根据占位符替换实现的自己研究下模板配置json文件和模板占位符一般都能摸索怎么用 后端生成修改配置文件可适用于n层架构的

QQ交流群:230287688

 

后端案例仓库介绍

微服务架构根据业务进行分子服务 每个服务对应一个数据库、grpc服务对外http访问 微服务之间grpc调用功能 简化的领域驱动设计每张表有字段 映射的model 仓储 服务 控制器接口层 对外数据传输的dto;配置方面有三种:数据表配置 上一层放个json配置文件所有微服务共享的统一配置 单独子服务配置 对于相同配置key读取的优先级是前面说明的从右到左;各种key的统一定义后期可防重名 功能点简介:

支持多平台(微服务子服务)、n级模块、登录鉴权、可灵活分配的接口级鉴权前端支持验证接口权限显示隐藏按钮 如下图左侧为模块权限右侧为接口权限 模块绑定一个控制器名同步接口是可自动关联到模块下面维护 每个平台有个接口/平台SysApi/SyncApi传入控制器名可将接口同步到sysApi表进行维护

 内置三种日志记录可在系统查看不用登录服务器 下图是常规调试日志

 请求日志 还支持填写开发环境地址点击测试直接调接口调试bug

 部署运行:创建一个库执行mysql脚本建表 然后修改GlobalSettings.json配置文件数据库连接 有redis rabbitMQ也配置上 还要部署个consul然后检查修改appsettings.json服务发现节点配置 检查网关ocelot.json配置端口没占用即可 同时启动AppName.Gateway.Api网关项目 AppName.Admin.Api系统管理平台 启动一般报错套接字什么的都是端口被占用 下图是我的一键部署系统进行部署的 都启动成功的话在网关项目wwwroot下的前端项目应该会弹出来登录进去即可

 

 

服务发现注册 支持获取当前服务局域网ip端口拼接健康检查url也支持手动配置url

 

在consul控制台看到服务节点注册成功 此时网关请求会根据配置服务名找到可用节点转发过来 服务停止几秒后控制台也会变红网关请求也将转到其他正常服务节点 使用服务发现可将服务的访问地址配置转到服务本身网关只要配置服务名通过consul注册的服务名匹配可用服务节点 

 

用到技术栈:

freesql一款免费开源orm框架 功能和使用习惯与EF很相似在连表查询比EF快捷很多 可以dbfirst也可以codefirst 可随时同步结构或创建表 还支持乐观锁表多个version字段 软硬删除

autofac及一些aop扩展 用特性标记实现数据库事务 并自己加了特性标记字段属性注入可指定多实现的服务id

CSRedisCore主要用作缓存数据 incr实现表自增id 发布订阅

RabbitMQ消息队列 所有微服务日志收集统一消费处理 业务中也可用到

Swashbuckle.AspNetCore结构dto文档 方便其他端对接

jwtBearer身份认证登录颁发包含登录信息的一串字符 优点很多缺点登录信息大token会越长 不能马上退出

Npoi导报表、Ocelot、邮件、二维码、雪花id等

前端使用的vueadmin框架对接的 主要调整:接口定义加了授权验证 页面按钮也加了根据接口权限支持隐藏显示

个人写的一些功能

用redis实现的登录token将登录信息存到缓存优点就是可马上退出单点登录都可以 可以和jwtBearer切换用都是根据同一个interface实现的功能

用户角色模块接口权限控制 模块支持n级 接口数据维护到表与模块关联 可为接口分配访问权限 .net内置有身份认证和授权认证两个中间件配合特性标记使用 用户不能很灵活的分配权限

自动映射用于dto与表model直接字段自动赋值简化版的automapper 执行十万次测试性能比他快点;用反射生成字段赋值表达式编译再用静态泛型类缓存起来速度最快 之前用反射赋值也可以实现但效率低

特性标记事务可跨方法传播,可标记在业务方法(必须是virtual或者实现接口的方法)或者控制器方法上用的是IActionFilter可在控制器方法执行前后调用一次事务开关

仿重刷中间件 对于非get请求参数及token特征一样的必须等前一次访问返回接口否则就提示正在处理中

日志统一记录到数据库表方便在系统中查看调试bug 分为请求日志(请求地址参数body响应数据)、行为日志(针对表数据事务操作行为记录)、常规日志(info error warning等)

执行上下文数据存储 对接grpc时会有容器scope生命周期不统一等问题 做事务特性标记时也要用来存当前用的DbContext 用AsyncLocal可存放当前执行上下文中用到数据

数据字典 可在详情或者之前调用的查询接口一起返回给前端减少接口调用 在原JsonR上调AddEnumKeyValueList和AddCustomKeyValueList返回枚举或表数据字典

基于Ocelot实现的网关在用consul服务发现 写个获取本服务访问地址拼接出健康检查url实现每次启动自动注册服务 可通过配置实现负载均衡 流量控制等

 

代码生成器简介

 启动GenCodeApi.exe程序 输入1是后端生成 2是前端生成 后端配置:模板文件在:代码生成器\Template\Api\EAF 下图配置文件很关键配置字段类型转换、占位符号、生成几层文件名路径都在这里 对照模板中占位符和实际生成代码修改常用功能都可实现

 

选择好模板文件夹路径和项目路径开启连接生成代码即可 数据连接配置在appsettings.json文件下注意检查修改 不要指定库名字都可以 正常选择路径如下图

 

前端生成只要填写好swagger接口数据地址解析成功 检查修改前端代码模板地址 代码模板在前端项目里 点击生成api和生成视图即可 这个功能只对此项目用 其他项目难适配 表格字段表单字段是可以改模板的相对通用但swagger数据解析不通用

 

 

自动构建服务

介绍可在windows centos7下部署运行 新手建议用root用户

win系统需要IIS8以上版本 server2012的iis 安装好.net6 skd和iis模块添加站点把程序放进去 应用池要配置下本地系统级权限因为要操控iis 手动以管理员身份执行下SiteDeployService.exe看控制台输出全绿就都正常

配置好工作目录 git账号密码 访问站点登录进去创建站点 iis刷新也会看到新站点 然后构建就ok 前端vue项目在常规iis服务建添加发布和操作文件命令就可以

环境:
iis8及以上版本 需要开启websocket、系统级权限

git客户端用于获取code

netCore sdk用于编译发布项目和3.1运行环境

项目用到的编译发布环境 可用powershell执行即可

另注 本程序使用powershell执行命令 部分服务器存在程序调用ps卡死现象 可尝试更新ps版本 比如查看ps版本命令:$PSVersionTable  检查PSVersion >= 5.1一般都可以通过程序执行命令
server2012r2升级到5.1即可
https://blog.51cto.com/jameszhan/2706442
https://download.microsoft.com/download/6/F/5/6F5FF66C-6775-42B0-86C4-47D41F2DA187/Win8.1AndW2K12R2-KB3191564-x64.msu


以下常用资料

vue项目发布命令行demo_20220822
npm i
npm run build:prod
del ..\..\App\AppAdmin.Web\*
a
xcopy /e dist ..\..\App\AppAdmin.Web


vue项目发布 执行shell
ls
更新依赖
发布命令
del ..\..\App\AppAdmin.Web\*
a
xcopy /e dirName ..\..\App\AppAdmin.Web
列子 建议在服务器上拉去代码后执行安装依赖因为这一步耗时很久 注意删除时有个确认要输入a全部删除 命令行最后要按回车
npm i
npm run build:prod
del ..\..\App\AppAdmin.Web\*
a
xcopy /e dist ..\..\App\AppAdmin.Web

执行cmd 注意下面的删除方法只能清空所有文件不能删除文件夹
dir
更新依赖
发布命令
del ..\..\App\AppAdmin.Web\*.* /s /f /q
xcopy /e dist ..\..\App\AppAdmin.Web

 

 

centos先安装好net6运行sdk 不可部署在docker里 喜欢用啥随意 这里我贴出一些常用命令

环境:
建议使用centos7版本 需要安装supervisor进程守护、nginx代理以及发布各种对应项目需要的sdk
启动本服务前请安装配置好以下程序 将nginx、supervisor配置目录,json配置里的工作空间目录设置允许其他用户读写 chmod 666 /path 如果使用root用户部署则不会有读写权限问题
如果不使用root用户部署 你需要新建账户然后给该账户配置sudo命令不需要输入密码 验证方式在终端执行 sudo ls 不需要输入密码即可

查看系统环境
cat /etc/redhat-release

安装端口检查 介绍https://blog.csdn.net/weixin_37335761/article/details/123066542
yum install lsof -y

CentOS 普通用户提升root权限
https://www.cnblogs.com/asker009/p/10264340.html
https://www.cnblogs.com/shuhaitao/p/5127532.html
验证方式终端执行 sudo ls 不需要密码

修改文件/夹权限、所属
https://www.cnblogs.com/fefjay/p/6047820.html
chmod -R 777 my/ #修改命令(-R包含子目录,777可读可写可执行),注意中间是大写的R,不是小写
chown jay:fefjay my #修改文件所属用户为jay,所属用户组为fefjay

yum加速
参考自:https://www.jianshu.com/p/b7cd2f9fb8b7
首先备份一下原先的yum源,避免出错无法恢复
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
然后修改base.reop源
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
安装epel.repo源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
刷新缓存
yum clean all
yum makecache

防火墙设置
开放端口
firewall-cmd --zone=public --add-port=9001/tcp --permanent
重启防火墙
firewall-cmd --reload
查看已开放的端口
firewall-cmd --list-ports

安装git
https://www.cnblogs.com/jhxxb/p/10571227.html
yum install -y git
检查安装 git version

安装配置supervisor 安装完成在/etc/supervisord.d创建log文件夹否则加载配置时可能报错 如果是内网不建议设密码方便访问
https://www.cnblogs.com/hellocjr/p/11459126.html
yum install supervisor -y
编辑/etc/supervisord.conf时注意ip改成*其他机器可访问
检查安装 supervisord -v

安装配置nginx
https://blog.csdn.net/u010351855/article/details/80692104
yum install -y nginx 注意yum加速步骤没做可能无法执行此步骤
service nginx start
-y解释
https://blog.csdn.net/OUCFSB/article/details/80106993
systemctl enable nginx
设置自启动
https://www.cnblogs.com/jepson6669/p/9131217.html
问题检查 查看端口占用
https://blog.csdn.net/zzddada/article/details/120455223
详细配置
https://www.cnblogs.com/sherlock1059/p/15167409.html
常用命令
https://blog.csdn.net/youxiyic/article/details/124053511
关闭防火墙 systemctl stop firewalld.service
检查安装 nginx -v


netCore sdk用于编译发布项目和3.1运行环境
https://www.cnblogs.com/fjzhang/p/14276182.html
检查安装 dotnet --version
版本列表 dotnet --list-sdks
添加仓库
rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
1、如果不需要在linux上编译源码
yum install dotnet-runtime-6.0
2、如果需要在linux上编译源码
yum install dotnet-sdk-6.0
3、如果是有webapi接⼝或者⽹页
yum install aspnetcore-runtime-6.0
安装完成后输⼊指令
dotnet --info 查看是否安装正确

 

 

以下常用资料

vue项目发布 执行shell
ls
更新依赖
发布命令
del ..\..\App\AppAdmin.Web\*
a
xcopy /e src ..\..\App\AppAdmin.Web

执行cmd
dir
更新依赖
发布命令
del ..\..\App\AppAdmin.Web\*.* /s /f /q
xcopy /e src ..\..\App\AppAdmin.Web

 

posted @ 2023-09-16 01:59  隔壁小王0918(新哥)  阅读(134)  评论(0)    收藏  举报