8 Star 33 Fork 11

深夜代码 / SmallNetCore

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 5.43 KB
一键复制 编辑 原始数据 按行查看 历史
深夜代码 提交于 2022-04-06 01:51 . 文档说明细化

SmallNetCore

介绍

SmallNetCore是采用NET6搭建的一套轻量级后端开发项目,对于中小型企业或者个人项目可以直接使用,项目主要使用的技术栈包括:NetCore、Autofac、Sqlsugar、AutoMapper、Log4、JWT、Swagger等,基础框架功能都已经封装好,对相关技术稍加了解就能开箱即用,项目基本没有冗余代码。

软件架构

以MVC三层架构为基础的架构体系,整体的架构是每张表对应一个实体类、一个数据访问层的类。业务逻辑层则按照具体的业务进行组装,摒弃了一张表一个业务类的设计。例如下单业务,就会涉及到订单表、用户表、支付表进行组合。

  • 表现层

    • SmallNetCore.UI
      • Controllers 控制器
      • appsettings.json 系统配置文件
      • log4net.config 日志配置文件
      • Program.cs 启动类
  • 业务逻辑层

    • SmallNetCore.IServices【用于IOC注入,面向接口编程】
    • SmallNetCore.Services
      • Base 当前层的公用方法,例如基类
  • 数据库访问层

    • SmallNetCore.IRepository【用于IOC注入,面向接口编程】
    • SmallNetCore.Repository
      • Base 当前层的公用方法,例如基类
  • 实体层

    • SmallNetCore.Models
      • Base 当前层的公用方法
      • Configs 配置集合
        • CenterConfigs.cs 动态配置读取
        • Consts.cs 常量的配置
      • DBModels 数据表实体
      • Entitys 公共的实体,例如用户的登录实体,配置链接的实体等
      • Enums 枚举集合
      • ViewModels Dto相关的实体
        • Base 公共的实体,例如一些基类定义
        • Request 所有请求的实体
        • Response 所有返回的实体
  • 其他

    • SmallNetCore.Common【公共方法层】

      • ApIInfo Http请求相关
      • Convets 各种数据转换
      • Encrypt 加密相关
      • Serialize 序列化相关
      • Utils 其他方法
    • SmallNetCore.Extensions【扩展层】,主要用于一些公用的非业务逻辑层,例如,autofac的注入、automapper的构造等,但是像一些订单类、商品类的业务逻辑还是要放在SmallNetCore.Services层,最好不用弄混了

      • AutoMapper AutoMapper相关的配置
      • Filter 过滤器配置
        • GlobalExceptionsFilter.cs 全局异常捕获
        • MyActionFilterAttribute.cs 请求管道跟踪
      • ServiceExtensions 服务注册相关扩展
    • SmallNetCore.Remotes【远程服务调用层】,主要用于一些第三方的服务封装,例如微信支付、阿里支付等第三方的服务

安装使用教程

  1. 当前项目使用的MySql数据库,会有个初始化的数据结构,脚本Sql如下:
  • 数据库库名称:FirstTestDb

       DROP TABLE IF EXISTS `role`;
        CREATE TABLE `role`  (
        `RoleId` int NOT NULL AUTO_INCREMENT COMMENT '角色ID',
        `RoleName` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '角色名称',
        PRIMARY KEY (`RoleId`) USING BTREE
        ) ENGINE = InnoDB AUTO_INCREMENT = 36 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色表' ROW_FORMAT = Dynamic;
    
        DROP TABLE IF EXISTS `user`;
        CREATE TABLE `user`  (
        `Id` int NOT NULL AUTO_INCREMENT COMMENT '用户主键',
        `UserName` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '用户姓名',
        `Sex` tinyint(1) NOT NULL DEFAULT 0,
        PRIMARY KEY (`Id`) USING BTREE
        ) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户表' ROW_FORMAT = Dynamic;
    
        SET FOREIGN_KEY_CHECKS = 1;
  • 数据库库名称:SerondTestDb

     DROP TABLE IF EXISTS `order`;
        CREATE TABLE `order`  (
        `OrderId` int NOT NULL AUTO_INCREMENT COMMENT '主键',
        `UserId` int NOT NULL COMMENT '用户ID',
        `ProductId` int NOT NULL COMMENT '商品ID',
        PRIMARY KEY (`OrderId`) USING BTREE
        ) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
    
       SET FOREIGN_KEY_CHECKS = 1;
  1. 数据库创建完成之后,进行更换项目的数据库链接,位置:SmallNetCore.UI -> appsettings.json -> MYSQL节点

  2. 当前数据库完全只是测试数据库,并非必要数据库,正式项目可以替换自己的数据库,甚至更换Mysql,使用其他类型的数据库

  3. 实体生成,可以使用sqlsugar官方推荐的链接,生成的实体需要包含Tenant特性,如下图,主要是解决当前项目存在多个数据库问题,如果单库可以通过设置默认链接不用设置Tenant特性

    [Tenant(MySqlConnEnum.FisrtTestDb)]
    public class Role
    {
        /// <summary>
        /// 角色Id
        /// </summary>
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public int RoleId { get; set; }
  4. 后期针对数据访问层也会集成到代码生成器里面,这个后期进行完善....

其他

C#
1
https://gitee.com/chengwenkang123/small-net-core.git
git@gitee.com:chengwenkang123/small-net-core.git
chengwenkang123
small-net-core
SmallNetCore
master

搜索帮助