该项目已通过阿里云仓库、GithubAction持续集成与部署(Fantasy-Ke -Z.SunBlog.Blog)
- 🛺.Net8
- EF Core 7 适配SqlServer和Mysql🎏
- 仓储
- 简单工作单元
- 模块化处理😇
- 简单EventBus 基于Channels
- 中间件接口请求日志使用
队列事件发布订阅和工作单元写入数据库
- 中间件接口请求日志使用
- Autofac依赖注入,AOP注册处理
- 横向处理
Application
- 横向处理
- AutoMapper模块化注入 (想改成
Mapster对象映射 )🍔 - ⛑️
Serilogjson配置化- Seq日志中心面板
- 控制台日志
- 文件日志插入
- 数据库日志写入
- 👒简单Minio存储桶
- 🎪简单Redis缓存
- 使用FreeRedis组件包了一层而已,直接使用
- 动态api
- HangFire 后台任务使用🎢
- job类继承
BackgroundJob和AsyncBackgroundJob实现接口Execute和ExecuteAsync(模仿abp vNext 实现的BackgroundJob,简化版👽) - 注入
IBackgroundJobManager调用接口。实现传参队列和延迟队列 任务
- job类继承
- SignalR实时通信🚋
- 前端的实时通知推送
- Redis 无序列表缓存
- RabbitMQ封装事件发布订阅🪇
- 负载均衡
- 存储链接,队列配置使用内存存储
- Polly(指数退避策略 重试)
- 授权管理(部分)
- ShardingCore 分库分表、读写分离(待实现)🫥
- Ocelot Gateway、Polly(熔断降级) (待实现)⛑️
- MongoDb(待实现) ( ̄︶ ̄*))
| Build | NuGet |
|---|---|
| |
|
| |
|
| |
|
| |
|
-
abp vnext 模块依赖(已完成)
-
namespace Z.SunBlog.Host; [DependOn(typeof(SunBlogApplicationModule), typeof(SunBlogEntityFrameworkCoreModule))] public class SunBlogHostModule : ZModule { /// <summary> /// 服务配置 /// </summary> /// <param name="context"></param> public override void ConfigureServices(ServiceConfigerContext context) { configuration = context.GetConfiguration(); //.... } /// <summary> /// 初始化应用 /// </summary> /// <param name="context"></param> public override void OnInitApplication(InitApplicationContext context) { var app = context.GetApplicationBuilder(); } }
-
-
自动注册(已完成)
-
ITransientDependency(瞬时)
-
public class JwtTokenProvider : IJwtTokenProvider , ITransientDependency { public interface IJwtTokenProvider { }
-
-
ISingletonDependency(单例)
-
public class JwtTokenProvider : IJwtTokenProvider , ISingletonDependency { public interface IJwtTokenProvider { }
-
-
IScopedDependency(作用域)
-
public class JwtTokenProvider : IJwtTokenProvider , IScopedDependency { public interface IJwtTokenProvider { }
-
-
-
实现了对
sqlserver以及Mysql的支持-
使用SqlServer
-
依赖模块
ZSqlServerEntityFrameworkCoreModule -
namespace Z.SunBlog.EntityFrameworkCore { [DependOn(typeof(ZSqlServerEntityFrameworkCoreModule))] public class SunBlogEntityFrameworkCoreModule : ZModule { public override void ConfigureServices(ServiceConfigerContext context) { context.AddSqlServerEfCoreEntityFrameworkCore<SunBlogDbContext>(connectionString); } } }
-
使用Mysql
-
依赖模块
ZMysqlEntityFrameworkCoreModule -
namespace Z.SunBlog.EntityFrameworkCore { [DependOn(typeof(ZMysqlEntityFrameworkCoreModule))] public class SunBlogEntityFrameworkCoreModule : ZModule { public override void ConfigureServices(ServiceConfigerContext context) { context.AddMysqlEfCoreEntityFrameworkCore<SunBlogDbContext>(new Version(8, 0,21), connectionString); } } }
-
-
引入
Z.Fantasy.Core.Serilog命名空间 -
在
Program中使用-
builder.Host.AddSerilogSetup(); //注册Serilog
-
-
在管道中使用
UseSerilogRequestLogging处理拦截请求信息-
SerilogRequestUtility.HttpMessageTemplate模板信息 -
SerilogRequestUtility.GetRequestLevel请求拦截等级 -
SerilogRequestUtility.EnrichFromRequest信息获取方法
-
-
app.UseSerilogRequestLogging(options => { options.MessageTemplate = SerilogRequestUtility.HttpMessageTemplate; options.GetLevel = SerilogRequestUtility.GetRequestLevel; options.EnrichDiagnosticContext = SerilogRequestUtility.EnrichFromRequest; });
-
SunBlog.BlogVue.Nuxt
-
项目用 Nuxt3 + TypeScript + Vuetify + Pinia!
-
- node 18+
- pwsh core
- yarn
所有技术都是当前最新的。
- vue: ^3.3.4
- typescript : ^5.2.2
- nuxt: ^3.8.2
- highlight.js: ^10.7.2
- marked:^9.1.0
-
-
SunBlog.BlogVue
-
项目用 Vue3 + TypeScript + Vite4 + Vuetify + Pinia!
- node 16+
- pwsh core
- yarn
所有技术都是当前最新的。
- vue: ^3.3.4
- typescript : ^5.2.2
- vue-router : ^4.2.5
- vite: ^4.4.11
- vuex: ^4.0.0
- axios: ^1.5.1
- highlight.js: ^10.7.2
- marked:^9.1.0
-
项目用 Vue3 + TypeScript + Vite4 + Vuex4 + Vue-Router4 + element-plus !
- node 16+
- pwsh core
- yarn
所有技术都是当前最新的。
- vue: ^3.3.4
- typescript : ^5.2.2
- element-plus: ^2.3.14
- vue-router : ^4.2.5
- vite: ^4.4.11
- vuex: ^4.0.0
- axios: ^1.5.1
- highlight.js: ^10.7.2
- marked:^9.1.0
后端路径.\src\SunBlog.AspNetCore
配置json在
Z.SunBlog.Host中最好打开连接 redis
- 可根据需求修改
appsettings.json中的配置文件中的配置,默认使用的mysql数据库 - 配置好数据库链接字符串使用
Z.SunBlog.EntityFrameworkCore目录控制台执行dotnet ef database update迁移生成数据库 - 附件默认上传至站点目录中,可以修改
appsettings.json中SSOConfig节点,支持上传至站点目录以及常用的对象云存储(Minio、腾讯云、阿里云);如果需要使用对象云存储,需将SSOConfig节点中的Enable设置为true
运行后台管理端或者博客前请先检查本地的
node版本;node版本 >= 18博客普通版与服务端渲染版UI界面基本一致,渲染模式有所区别
后端管理平台默认账号密码:
admin/123456;所在目录:/src/SunBlog.AdminVue
# 安装依赖
yarn
# 运行项目
yarn run dev
# 打包发布
yarn run build
项目所在目录:
/src/SunBlog.BlogVue
# 安装依赖
yarn
# 运行项目
yarn run dev
# 打包发布
yarn run build
服务渲染
1、项目所在目录:
/src/SunBlog.BlogVue.Nuxt,基于nuxtjs实现,官方文档:Nuxt
# 安装依赖
yarn
# 运行项目
yarn run dev
# 打包发布
yarn run build
-
本地安装docker
-
修改
build_sunblog_imgs.ps1和push_sunblog_imgs.ps1文件中的$sunblog_register为自己的私有镜像地址-
$sunblog_register = 'registry.cn-hangzhou.aliyuncs.com/learn-zhou/zhou-learn/'.TrimEnd('/') function WriteNewLine ($msg) { Write-Host "\r\n$msg\r\n" } # 获取标签 # 应用镜像集合 $apptags = [System.Collections.ArrayList]::new() $count = $apptags.Add("hostblog") $count = $apptags.Add("blognuxt") # $count = $apptags.Add("vueblog") $count = $apptags.Add("adminvue") ....
-
-
编译sunblog镜像,执行主目录下的
编译sunblog镜像.bat文件 -
使用
推送sunblog镜像到registry.bat镜像到我们的镜像仓库 -
copy主目录下的
docker目录到服务器执行 docker-compose文件(run.sh中有命令)- 修改 docker-compose文件 使用自己的镜像
- 不使用frp 把frp注释掉 直接就可以ip:端口访问
qq交流群,大家能互相学习😇
号:831181779
- Nuxt
- Nuxt是一个 开源框架 ,使得Web开发变得直观且强大。可以自信地创建高性能和生产级别的全栈Web应用和网站。
- Easy.Admin
- SunBlog网站前后台基于该开源项目编写,在线网址:https://www.okay123.top/
- Vue
- 网站前后台前端使用Vue搭建
- element-plus
- Vue组件库
- vue-next-admin
- 后台前端框架
- vue-toastification
- 一个弹窗组件
- OnceMi.AspNetCore.OSS
- ASP.NET Core对象储存扩展包,支持Minio自建对象储存、阿里云OSS、腾讯云COS、七牛云Kodo、华为云OBS、百度云BOS、天翼云OOS经典版
- Z.OSSCore就是这个扩展包的,自己改了一下
- abp
- Open Source Web Application Framework for ASP.NET Core
- MASA framework
- .NET下一代微服务开发框架
还有太多框架未一一列举,感谢开源给予的力量。