VerEasy.Core

介绍

这是一个基于 .NET Core 的易开发的框架,附 vue3前端框架。提供了一个高效可扩展的API程序。

支持 JWT 认证、数据库操作、日志记录、异步处理等特性,能够满足大多数业务需求。

该项目可以与前端应用、移动应用和其他服务进行无缝集成,为开发者提供灵活、高效的解决方案。


功能与进度

框架模块

  • 框架整体采用 仓储+服务+接口
  • 接口主要采用异步形式 async/await
  • 采用国产开源ORM框架 SqlSugar
  • 支持多库使用,可支持多种数据库(sqlsugar官网)
  • 项目内置数据种子文件,项目启动初始化基础表和数据
  • Serilog日志记录功能 LogAop 全局自动记录,支持输出到 本地文件,数据库,控制台
  • 支持代码生成

    1.实体生成表

    2.表生成实体

    3.表生成业务文件(仓储、服务、控制器)

    4.由数据库生成种子数据

    ……
  • 使用 SwaggerAPI 文档
  • 使用 Automapper 做实体间映射
  • 使用 AutoFac 做依赖注入容器,并支持批量注入(如多个AOP)
  • 支持 Cors 跨域处理
  • 支持 JWT 授权鉴权处理
  • 封装 GlobalException 全局异常过滤器
  • 封装 Quartz 支持定时任务处理
  • 整体采用 SnowflakeId 雪花ID
  • 实现了用户角色菜单权限分配

框架结构

整个框架追求的是易于扩展和使用,附有Vue3的前端项目,但整体不会牵连太深,方便和已有的前端项目进行集成。

若是要删除其中代码,也需要调整对应的引用等,无法避免。

├── VerEasy.Common/                 公共方法类(用于全局的通用方法)
│ ├── FastCode/ 代码生成相关文件夹
│ ├── Helper/ 辅助方法文件夹
│ ├── LogHelper/ 用于输出控制台日志的拓展方法
│ ├── Utils/ 工具类(类似配置文件读取,雪花Id生成等)
├── VerEasy.Core.Api/ 接口层
│ ├── Controllers/ 控制器文件夹
│ ├── Filter/ 过滤器文件夹
│ ├── wwwroot/ 静态文件夹
├── VerEasy.Core.IRepository/ 仓储接口层
│ ├── Base/ 基础增删改接口
│ ├── IRepository/ 基础方法满足不了,可扩展的仓储接口层
│ │ ├── IDepartmentRepository.cs
├── VerEasy.Core.IService/ 服务接口层(同上)
│ ├── Base/
│ │ ├── IBaseService.cs
│ ├── IService/
│ │ ├── IDepartmentService.cs
├── VerEasy.Core.Models/ Model层
│ ├── Base/ 统一的字段基础类(如Id,修改人,修改时间等)
│ │ ├── BaseModel.cs
│ ├── Dtos/ Dto层,用于封装返回统一的返回格式等
│ ├── Enums/ 枚举类文件夹(业务需要定义枚举,或者全局都会使用到的枚举)
│ ├── ViewModels/ 实体文件夹(表结构对应的实体文件夹)
├── VerEasy.Core.Repository/ 仓储实现层(继承仓储接口层,并实现定义的接口,结构同上)
│ ├── Base/
│ ├── Repository/
├── VerEasy.Core.Service/ 服务实现层(继承服务接口层,并实现定义的接口,结构同上)
│ ├── Base/
│ ├── Service/
├── VerEasy.Core.Tasks/ Task定时任务类(封装了Quartz)
│ ├── Quartz.Net/ Quartz相关文件夹(闲了扩展其他的)
│ │ ├── IScheduleCenter.cs 调度器接口(启用调度器相关,例如执行job停止job)
│ │ ├── JobFactory.cs Job工厂,继承官方的IJobFactory
│ │ ├── JobListener Quartz监听器,监听定时任务的执行情况
│ │ ├── ScheduleCenter 调度器接口的实现
│ │ ├── Jobs/ 具体的定时任务文件夹
├── VerEasy.Extensions/ 扩展类库(主要注入其他的服务)
│ ├── Aop/ AOP文件夹
│ ├── Authorization/ 身份认证相关(Jwt)
│ ├── HostedService/ 管理需要项目启动就执行的服务(如持久化Quartz)
│ ├── ServiceExtensions/ 服务扩展文件夹(各种服务的注入配置)
│ │ ├── HttpContext/ 防止开发不更新修改人修改时间等信息引入的自动获取登录信息
│ │ ├── Module/ 其他服务(如:mapper的映射关系配置)
│ │ │ ├── MappingProfileModule.cs
│ ├── ServiceMiddlewares/ 中间件管道文件夹
├── VerEasy.Serilog/ 日志类库
│ ├── LoggerConfigurationExtensions.cs 日志的输出配置(输出到数据库或本地等,整体规范化一些)

持续开发中

本项目仍在积极开发和维护中,未来会持续添加新功能和优化现有模块。

欢迎关注项目,了解最新动态!你的支持是我们前进的动力!

如果你喜欢这个项目

如果你喜欢这个项目,请不要忘记为它点亮 Star!

你的支持是我们持续改进的最大动力!


参与贡献

如果你对这个项目有建议或改进的想法,欢迎提交 IssuePull Request

我们非常期待你的加入,共同让这个项目更加强大!

NetCore开源项目,适合新手学习的更多相关文章

  1. JavaSwing仿QQ登录界面,注释完善,适合新手学习

    使用说明: 这是一个java做的仿制QQ登录界面,界面仅使用一个类, JDK版本为jdk-11 素材包的名字为:素材(下载)请在项目中新建一个名字为“素材”的文件夹. 素材: https://pan. ...

  2. Android开源项目SlidingMenu本学习笔记(两)

    我们已经出台SlidingMenu使用:Android开源项目SlidingMenu本学习笔记(一个),接下来再深入学习下.依据滑出项的Menu切换到相应的页面 文件夹结构: watermark/2/ ...

  3. Android开源项目分包方式学习(eoe、oschina、github)

    总感觉Android中关于分包的文章很少,或者几乎可以说没有.但是合理地分包,又可以使整个项目模块化,减少包与包之间的依赖,让整个项目的框架更加清晰,更利于后续功能的拓展. 因为没有相关的文章,所以这 ...

  4. hadoop data 相关开源项目(近期学习计划)

    计划学习几个hadoop相关的开源项目: 1.spring hadoop 2.spring batch 3.spring redis 4.spring mongo 相关项目样例:https://git ...

  5. 开源项目SuperSocket的学习笔记

    近几日想在一个项目中引进一个Socket Server,用来接收客户端发送的命令消息并根据具体的业务逻辑对消息进行处理,然后转发给其它在线的客户端.因为以前在博客园关注过江大渔开源的SuperSock ...

  6. java开源项目之IQQ学习记录之单例模式与log4j日志记录

    作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/18992741 打开IQQ项目,打开包iqq.app中的 ...

  7. java开源项目之IQQ学习记录之项目环境搭建与启动

    本文链接地址:http://blog.csdn.net/sushengmiyan/article/details/18779727 作者:sushengmiyan 现在就码字说说今天晚上搞定的一个项目 ...

  8. 【整站源码分享】分享一个JFinal3.4开发的整站源码,适合新手学习

    分享这个源码是14年开发上线的<威海创业者>站点的全套整站源码,前后端都在一个包里.当时开发使用的是JFinal1.4,最近改成了JFinal3.4.使用的JSP做的页面.有一定的参考价值 ...

  9. Android开源项目SlidingMenu的学习笔记(一)

    SlidingMenu是眼下在应用程序上非常流行的一种UI技术.能够实现一种比較炫的滑动效果,SlidingMenu是Git上托管的一个项目,开源免费的.SlidingMenu作为一个Library的 ...

  10. 使用laravel开发微信公众的一个大坑,适合新手学习的laravel接入微信接口

    最近使用laravel做微信公众号二次开发,发现网上能够参考的资料基本上很少,很多地方都讲的不够详细,致使许多新手采坑无数,所以这篇文章讲一下如何使用laravel接入微信接口,实现微信公众号二次开发 ...

随机推荐

  1. AOT漫谈专题(第三篇): 如何获取C#程序的CPU利用率

    一:背景 1. 讲故事 上篇聊到了如何对AOT程序进行轻量级的APM监控,有朋友问我如何获取AOT程序的CPU利用率,本来我觉得这是一个挺简单的问题,但一研究不是这么一回事,这篇我们简单的聊一聊. 二 ...

  2. KubeSphere 3.1.1 发布,可以接入集群已有的 Prometheus

    KubeSphere 作为一款面向应用的开源容器平台,经过 3 年的发展和 10 个版本的迭代,收获了两百多位开源贡献者,超过十万次下载,并有数千名社区用户用 KubeSphere 作为企业容器平台. ...

  3. PHP实现csv导出(多种方法对比及原理解析)

    前言 导出文件时,如果不需要任何复杂的Excel功能,请使用CSV 工作中最初遇到导出Excel的需求,都是使用的PHPExcel,它的功能非常强大,可以覆盖到绝大多数的定制化导出需求.也就一直用着了 ...

  4. ToDesk云电脑开启公测!支持AIGC、高性能渲染等场景,价格低至0.98元

    在云计算和人工智能技术飞速发展的今天,云电脑作为一种新型的计算模式,正逐渐改变着传统电脑的使用方式.近日,ToDesk云电脑宣布开启公测,以其支持AIGC(人工智能.大数据.云计算等技术的融合应用). ...

  5. 『玩转Streamlit』--页面布局

    一个优秀的数据应用不仅仅是功能的强大,更在于其用户体验的打造. 而良好的页面布局,作为用户体验的重要组成部分,不仅能够提升信息的可读性,还能引导用户高效地完成操作. 反之,混乱的布局会让人感到困惑和挫 ...

  6. Mellanox hp 544+FLR QSFP 40G 网卡升级固件及性能测试

    烧录命令参考视频: 相关视频: https://www.youtube.com/watch?v=_2-qPV1giEc flint -allow_psid_change -d /dev/mst/mt4 ...

  7. python argparse变量到class变量的转换代码

    github上的项目总喜欢使用argparse + bash来运行,这对于快速运行一个项目来说可能有好处,但在debug的时候是很难受的.因为我们需要在.sh文件中修改传入参数,并且不能使用jupyt ...

  8. 【昌哥IT课堂】MySQL8.0新特性之不可见主键

    一.概述作为 MySQL DBA ,相信大家都经历过在复制模式下,如果没有主键,遇到 load data ,大事务,ddl 等有大量表数据行扫描的行为时,会带来严重的主从延迟,给数据库稳定性和数据一致 ...

  9. (Python基础教程之十六)Python multidict示例–将单个键映射到字典中的多个值

    1.什么是multidict词典> 在python中," multidict "一词用于指代字典,在字典中可以将单个键映射到多个值.例如 多重结构 multidictWith ...

  10. 基于Github gist的代码片段管理工具Lepton

    Lepton主要功能 无限制的公共/私人片段 无限制的标签 语言组 Markdown支持 Jupyter Notebook查看器支持 macOS / Win / Linux客户端 GitHub Ent ...