Giter VIP home page Giter VIP logo

admboots's Introduction

详情-> https://www.cnblogs.com/xuke/p/13573837.html

序言

AdmBoots 基于.NET Core生态系统最成熟技术体系,借鉴众多开源项目的优点,旨在打造前后端分离快速开发框架,让你开发Web管理系统和移动端Api更简单。

框架对依赖注入、日志、缓存、模型映射、认证/授权、仓储、健康检测、ORM,任务调度等模块进行更高一级的自动化封装。

📌项目特点:代码简洁、易上手、学习成本低、开箱即用

📌适用人群:.NetCore入门同学,正在寻找具有以上特点框架的同学

系列教程

01.NetCore(.Net5)快速开发框架一:前言

02.NetCore(.Net5)快速开发框架二:快速开发

03.NetCore(.Net5)快速开发框架三:WebAPI性能监控-MiniProfiler与Swagger集成

04.NetCore(.Net5)快速开发框架四:实现审计日志

...

架构设计

正在整理中...

功能与技术

采用前后端分离模式,后端基于.Net5平台后端

前端使用基于React的开源脚手架adv-boot-admin

未来要实现的功能:

  • 上两图中未完成的功能(图中未打对号的)
  • 持续部署集成
  • 重构完善
  • 消息队列
  • ...

工程结构

采用DDD领域驱动设计,经典分层结构,系统层次少,分层清晰,对常翻代码的开发人员十分友好。

如果我们我们的业务是单领域的,那么只需要在Domain层创建model,在Data层写上一句DbSet<实体名>,在Application层写上我们的逻辑,在API层公开出去,一个简单的功能开发就完成了。配上代码生成器,我们的编码就更少了,只注重业务本身的开发就可以了。

关系布局图

.
├── AdmBoots.Api                # API接口层
|   ├── Authorization           # 策略授权认证相关
|   ├── Controllers             # 控制器,对外提供(Restful)接口
|   ├── Extensions              # ConfigureServices扩展
|   ├── Filters                 # 过滤器
├── AdmBoots.Application        # 应用层
|   ├── AutoMapProfile.cs       # AutoMapper 映射文件
|   ├── AppServiceBase.cs       # service基类,提供一些常用属性
|   ├── ITransientDependency.cs # 依赖注入继承接口,继承此接口可将Application层注入到容器
├── AdmBoots.Data               # 基础设施层-持久化层
|   ├── EntityFrameworkCore     # EF Core相关
│   │   ├── Repositories        # 自定义仓储写在这里  
│   │   │   ├── SqlExecuterRepository.cs# 通用sql执行器
│   │   ├── Seed                # 种子数据
│   │   └── Uow                 # 工作单元(事务处理)
│   │   └── AdmDbContext.cs     # 数据库上下文 
│   │   └── AdmRepositoryBase.cs# 仓储基类,在大多数的时候,这些方法已足够应付一般实体的需要      
├── AdmBoots.Domain             # 领域层
|   ├── IRepositories           # 仓储接口
|   ├── Models                  # 模型
├── AdmBoots.Infrastructure     # 基础设施层-通用技术支持
├── AdmBoots.Quartz             # 基于Quartz.NET的任务调度

项目初始化

环境要求

  • Visual Studio 2019 16.8 +
  • .NET 5 SDK +
  • MySQL (支持其他库,详见EFCore
  • Redise (非必须)

运行系统

初始化服务端

  1. 首先在GitHub上将代码Clone下来后,用VS2019打开,第一次打开项目工具会自动安装系统依赖的Nuget包,静静等待即可。如果Nuget包还原失败,可以在解决方案上右键【还原Nuget包】
  2. 打开API层的 appsetting.json 文件,设置系统启动的必要配置

a.数据库配置 -必须

//数据库连接字符串
 "ConnectionStrings": {
   "Default": "Server=localhost; Port=3306;Stmt=; Database=admboot; Uid=root; Pwd=root;"
 },
 //数据库类型
 "Database": {
   "Dialect": "mysql",
   "Version": "8.0.22" //.Net5 MySQL连接驱动要求提供版本号 https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql
 },

b.缓存配置 -非必须,如需使用Redis,请配置Redis连接。默认MemoryCache

//Redis配置 Configuration=""时,系统使用MemoryCache
"Redis": {
   "Configuration": "", //127.0.0.1:6379
   "InstanceName": "AdmBoots"
 },

c.日志配置 -非必须,如果需要将日志输出到数据库,在Serilog节点需配置对应数据库连接。默认输出到文件

 //Serilog配置
 "Serilog":
   "WriteTo": [
     {
       "Name": "MySQL",
       "Args": {
         "connectionString": "Server=localhost; Port=3306;Stmt=; Database=admboot; Uid=root; Pwd=root;",
         "tableName": "Logs",
        "restrictedToMinimumLevel": "Warning"
       }
     }     
   ]
 }
  1. 初始化种子数据 初始化种子数据分为三种方式 a.第一次运行程序会自动初始化种子数据。

      public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IApiVersionDescriptionProvider provider) {
                ...
                //程序第一次运行时初始化数据库及种子数据, 初始化完毕后,可注销此处避免每次都做数据库检查
                app.InitializeDatabase();
    			...
                }

    b. 使用Code First迁移命令,这里已为大家生成好迁移文件,打开程序包管理控制台,大家只需要做执行以下命令即可

     PM> update-database -Context AdmDbContext
    

    c. sql脚本插入 SQL 文件夹,打开项目根目录下的,将里面的 AdmBoots_mysql.sql

    使用Quartz.Net定时任务功能需手动执行sql文件quartz_mysql.sql (其他数据库建表脚本https://github.com/quartznet/quartznet/tree/master/database/tables)

  2. 验证

    启动项目,出现Swagger页面,项目初始化成功!

    Swagger页面上,如果Controller上有小锁的标志,表示需要先登录后才能进行测试验证。点击authorize按钮,输入admin,a123456登陆。

    初始化前端

    $ git clone https://github.com/xuke353/AdmBoots-Client.git
    $ cd AdmBoots-Client
    // 安装依赖
    $ yarn
    // 启动
    $ yarn start
    

    启动成功后(先保证服务端开启),浏览器输入http://localhost:3000/

最后

asp.net core的默认(csproj里面没有设置的情况下),是进程外启动,所以这里推荐使用项目启动方式,项目启动本质上就是执行了 dotnet run AdmBoots.Api.dll。不建议大家更改进程内启动(InProcess),因为InProcess方式在我们发布项目后,可能会出现一些路径上的问题(相对了托管服务器的路径)

<!--AdmBoots.Api.csproj 使用进程内启动(不建议)-->
<PropertyGroup>
     <TargetFramework>netcoreapp2.2</TargetFramework>
     <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>

当配置了OutOfProcess或者不配置的时候,无论使用iis启动还是dotnet run启动都是外进程,使用iis启动可以理解为iis作为了反向代理,用dotnet run启动可以视为自己作为内部服务器和反向代理结合使用

下一篇我们讲如何 使用该框架进行业务开发,以及权限配置使用,平时比较忙,更新可能不及时,有问题的小伙伴可以先入群

源码地址

后端:https://github.com/xuke353/AdmBoots

前端:https://github.com/xuke353/AdmBoots-Client

admboots's People

Contributors

bigfacecat5233 avatar xuke353 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

admboots's Issues

关于审计影响ef提交的问题

大大你好,最近在一个小功能上用了这个框架,很喜欢!!但是遇到个问题,不知道是不是我姿势不对:当一个controller不加审计的属性时,如果在同一个service的一个方法中,查询、更新和插入数据库逻辑同时存在,就会出错。估计是ef没有savechange导致的,请问一下这怎么解决呢?我自己删减了一些功能,是不是我哪里删错了?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.