Dev Build::
从零开始搭建自己的前后端分离【 .NET Core3.1 Api + Vue 2.x 】框架。
- 采用仓储+服务+接口的形式封装框架;
- 使用Swagger做api文档;
- 使用MiniProfiler做接口性能分析;
- 使用Automapper做Dto处理;
- 接入SqlSugar ORM,封装数据库操作;
- 项目启动,自动生成seed种子数据;
- 支持自由切换多种数据库,Sqlite/SqlServer/MySql/PostgreSQL/Oracle;
- 异步async/await开发;
- 支持事务;
- AutoFac接入做依赖注入;
- 支持AOP切面编程;
- 支持CORS跨域;
- 支持T4代码模板,自动生成每层代码;
- 支持一键创建自己项目;
- 封装 JWT 自定义策略授权;
- 使用Log4Net日志框架+自定义日志输出;
- 使用SingleR推送日志信息到管理后台;
- 搭配前端Blog项目,vue开发;
- 搭配一个Admin管理后台,用vue+ele开发;
- IdentityServer4 认证(更新中...);
- 等等其他功能,未完待续;
其他接口压测内存占用在:220~350 m 之间,具体的,自行压测即可。
如果你感觉看着这整个项目比较费劲,我单抽出来了几个子Demo,方便学习,项目地址 :https://github.com/anjoy8/BlogArti
这只是 .netCore 后端部分,前端部分请看我的另三个Vue工程项目
个人博客Vue版本 | tBug项目Nuxt版本 | VueAdmin管理后台(更新中) |
---|---|---|
https://github.com/anjoy8/Blog.Vue | https://github.com/anjoy8/Nuxt.tBug | https://github.com/anjoy8/Blog.Admin |
http://vueblog.neters.club | http://tibug.neters.club | http://vueadmin.neters.club |
数据查看:Blog.Core.Data.json
文章讲解:支持多种数据库 & 快速数据库生成
Package | NuGet Stable | Downloads |
---|---|---|
Blog.Core.Webapi.Template |
关于如何使用,点击这里:https://www.cnblogs.com/laozhang-is-phi/p/10205495.html
目前一共开源四个框架项目,感兴趣的可以看看
单层项目 | 简单仓储框架 | 仓储+服务+接口 | DDD框架 |
---|---|---|---|
CURD+Seed | CURD+Seed+DI | CURD+Seed+DI+AOP等 | DDD+EFCore+DI+EventBus等 |
NetCore-Sugar-Demo | Blog.SplRepository.Demo | Blog.Core | ChristDDD |
- | Blog-EFCore-Sqlite | - | - |
如果你喜欢这个项目或者它帮助你, 请给 Star~(辛苦星咯)
1【重要】、Blog.Core.FrameWork 项目是用T4模板生成文件的简单实现。如果有错误,可以联系我,
QQ群:867095512
如果你不想处理这个错误,你可以先把项目卸载,不影响整体运行。
2【重要】、项目中,有四个AOP的操作类,分别是Redis缓存切面,memory缓存切面、Log日志切面、Tran事务切面
你可以在自定义开关,对其进行是否启用,在 appsettings.json 中的:
"RedisCachingAOP": {
"Enabled": false,
"ConnectionString": "127.0.0.1:6319"
},
"MemoryCachingAOP": {
"Enabled": true
},
"LogAOP": {
"Enabled": false
},
"TranAOP": {
"Enabled": false
},
3【重要】、如何你使用Redis,需要安装Redis服务端,安装和使用说明地址:
https://www.cnblogs.com/laozhang-is-phi/p/9554210.html#autoid-3-4-0
端口是 6319 ,注意!
4【重要+】、系统新增自动化生成数据库,和生成种子数据的功能,
在Blog.Core层中的 appsettings.json 中开启 SeedDBEnabled:true 即可。
具体文章请看:《[支持多种数据库 & 快速数据库生成](https://www.cnblogs.com/laozhang-is-phi/p/10718755.html)》。
5、不支持sql文件了,只支持CodeFirst方式,具体上的Seed Data动图已经说明。
6、想要各个知识点的,可以查看:
a、直播教学的配套代码:https://github.com/anjoy8/Blog.Live
b、博客园文章的拆分代码:https://github.com/anjoy8/BlogArti
7、项目后期发布的时候可以有两个办法,一种是dotnet的kestrel部署,另一种是 IIS 发布部署,但是在发布的时候,
因为解耦了,所以会导致无法把 service.dll & repository.dll 拷贝到生成目录下,大家可以采用:
Blog.Core -> 属性 -> Build Events -> Post-build event command ->>>>
Copy "$(ProjectDir)bin\Debug\netcoreapp2.2\" "$(SolutionDir)Blog.Core\bin\Debug\"
注意:修改完数据库连接字符串以后,一定要F6重新编译项目或者重启项目。
1、在Blog.Core层 appsettings.json 中,配置自己的字符串,注意优先级是从上往下的,只能设置一个true
"Sqlite": {
"Enabled": true,
"SqliteConnection": "Data Source=WMBlog.db"
},
"SqlServer": {
"Enabled": false,
"SqlServerConnection": "Server=.;Database=WMBlogDB;User ID=sa;Password=123;",
"ProviderName": "System.Data.SqlClient"
},
"MySql": {
"Enabled": false,
"MySqlConnection": "Server=localhost; Port=3306;Stmt=; Database=wmblogdb; Uid=root; Pwd=456;"
},
"Oracle": {
"Enabled": false,
"OracleConnection": "Provider=OraOLEDB.Oracle; Data Source=WMBlogDB; User Id=sss; Password=789;",
"OracleConnection_other1": "User ID=sss;Password=789;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.8.65)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME = orcl)))"
},
2、文章中有2个地方用到了数据库连接字符串
A、Blog.Core 层 appsettings.json 中配置
B、T4 模板 Blog.Core.FrameWork -> DbHelper.ttinclude
3、如果想使用T4模板,在Blog.Core.FrameWork层的DbHelper.ttinclude 中,配置自己的字符串
public static readonly string ConnectionString = File.Exists(@"D:\my-file\dbCountPsw2.txt") ?
File.ReadAllText(@"D:\my-file\dbCountPsw2.txt").Trim(): "server=.;uid=sa;pwd=sa;database=BlogDB";
简 书:https://www.jianshu.com/notebooks/28621653
博客园:https://www.cnblogs.com/laozhang-is-phi/
CSDN:https://blog.csdn.net/baidu_35726140
码云:https://gitee.com/laozhangIsPhi/Blog.Core
-
- 框架之二 || 后端项目搭建
- Swagger的使用 3.1
- Swagger的使用 3.2
- Swagger的使用 3.3 JWT权限验证【修改】
- 36 ║解决JWT权限验证过期问题
- API项目整体搭建 6.1 仓储模式
- API项目整体搭建 6.2 轻量级ORM
- API项目整体搭建 6.3 异步泛型仓储+依赖注入初探
- 依赖注入IoC学习 + AOP切面编程初探
- AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存
- AOP自定义筛选,Redis入门 11.1
- 三种跨域方式比较,DTOs(数据传输对象)初探
- DTOs 对象映射使用,项目部署Windows+Linux完整版
- 三十二║ 四种方法快速实现项目的半自动化搭建
- 三十三║ ⅖ 种方法实现完美跨域
- 三十四║ Swagger 处理多版本控制,所带来的思考
- 三十五║ 完美实现全局异常日志记录
- 37 ║JWT完美实现权限与接口的动态分配
- 38 ║自动初始化数据库
- 39 || 想创建自己的dotnet模板么?看这里
- 40 || 完美基于AOP的接口性能分析
- 41 || Nginx+Github+PM2 快速部署项目(一)
- 42 ║ 完美实现 JWT 滑动授权刷新
- 43 ║ 支持多种数据库 & 快速数据库生成
- 43 ║最全的部署方案 & 最丰富的错误分析【再会】
- 45 ║ 终于解决了事务问题
- 46 ║ 授权认证:自定义返回格式
- 框架之二 || 后端项目搭建
-
- 十四 ║ VUE 计划书 & 我的前后端开发简史
- 十五 ║Vue基础:JS面向对象&字面量& this字
- 十六 ║Vue基础:ES6初体验 & 模块化编程
- 十七 ║Vue基础:使用Vue.js 来画博客首页+指令(一)
- 十八║Vue基础: 指令(下)+计算属性+watch
- 十九║Vue基础: 样式动态绑定+生命周期
- 二十║Vue基础终篇:组件详解+项目说明
- 👆 上边的这些基础,可以不用看,如果你只想快速入门 Vue 的话
- 二十一║Vue实战:开发环境搭建【详细版】
- 二十二║Vue实战:个人博客第一版(axios+router)
- 二十三║Vue实战:Vuex 其实很简单
- 二十四║ Vuex + JWT 实现授权验证登陆
- 二十五║初探SSR服务端渲染(个人博客二)
- 二十六║Client渲染、Server渲染知多少{补充}
- 二七║ Nuxt 基础:框架初探
- 二八║ Nuxt 基础:面向源码研究Nuxt.js
- 二九║ Nuxt实战:异步实现数据双端渲染
- 三十║ Nuxt实战:动态路由+同构
- 三十一║ Nuxt终篇:基于Vuex的权限验证探究
系统环境
windows 10、SQL Server 08+、Visual Studio 2019、Windows Server 2008 R2
后端技术:
* .Net Core 3.1 API(因为想单纯搭建前后端分离,因此就选用的API,如果想了解.Net Core MVC,也可以交流)
* Swagger 前后端文档说明,基于RESTful风格编写接口
* Repository + Service 仓储模式编程
* Async和Await 异步编程
* Cors 简单的跨域解决方案
* AOP基于切面编程技术
* Autofac 轻量级IoC和DI依赖注入
* Vue 本地代理跨域方案,Nginx跨域代理
* JWT权限验证
数据库技术
* SqlSugar 轻量级ORM框架,CodeFirst
* T4 模板生成
* AutoMapper 自动对象映射
分布式缓存技术
* Redis 轻量级分布式缓存
前端技术
* Vue 2.0 框架全家桶 Vue2 + VueRouter2 + Webpack + Axios + vue-cli + vuex
* ElementUI 基于Vue 2.0的组件库
* Nuxt.js服务端渲染SSR