极简实用的Asp.NetCore模块化框架决定免费开源了
背景
在开发这个框架之前,前前后后看过好几款模块化的框架,最后在一段时间内对ABP VNext痛下狠心,研究一段时间后,不得不说 ABP VNext的代码层面很规范,也都是一些最佳实践,开发出一个模块效率也很高。但不得不说,于我而言太重了。还看过一些其他模块化的框架,就不说了,学习成本于我而言太高了,主要是自己懒。
于是,我在想有没有一款上手简单,比较经济实用的模块化框架,只要会.net core 基本就可以上手呢,于是,将ABP VNext的模块化核心代码抽出来(在这里要特别感谢土牛了),结合asp.net core很完美,我本身的需求就是做到业务逻辑代码能够复用,不用经常一些已经写过好几遍的简直难受到要吐的重复代码,这于我而言就足够了。
框架简介
一款基于Asp.net core3.1的模块化开发框架,提取了ABP VNext的模块核心,适合中小型项目快速开发,取名为神牛(ShenNius),意为大神大牛多提意见,一起参与,神牛云集,为dotnet社区贡献一份自己的力量。追求“简单”,“高效”,“实用”,总之秉承大道至简的原则开发,坚持业务模块最低复杂度复用,只要会C#,再会点Asp.NetCore基础知识,极易上手。适合小白入门进阶,更适用(实用)老手上路干活。
所有的业务代码可以按照类库划分,使用宿主托管。所有的代码坚持" Don't repeat yourself "。坚决反对" 简单的事情复杂干 "," 大量代码在应用层过度层层封装 ",反对" 过度设计 "的原则下进行开发。如果你有这个习惯,并且也想找一款迷你型、上手快,不用学习太多东西的框架,那么它就适合你,只要你会dotnet core,几乎没有学习成本,除了ABP VNext的模块化核心代码。另外、顺手做了个简单的后台权限管理做为入门例子。采用LayuiMini+Asp.Net Core Razor Page,本来是想用Blazor,我前后看了几款UI框架,目前都不是很成熟,需要踩坑。而我由于时间比较紧迫关系,只有自己一个人,先使用Layui,后期有时间我还是想上Blazor的,目前整个前后端交互基本都是分离的,后面想要切换到Blazor,也很好对接。
注:权限后台管理有部分样式之类的有借鉴“ FytSoaCms”这个开源项目。
软件架构
- API框架:dotNetCore
- ORM:SqlSugarCore
- 缓存:MemoryCache(后期会上redis,看项目业务需求)
- 日志管理:Nlog
- 工具类:Aes加密、Md5加密、RSA加密、Des加密
- token:Json Web Token
- 实体验证:FluentValidation
- 实体映射:AutoMapper
使用说明
- ShenNius.ModuleCore是模块化的核心代码
- ShenNius.Swagger是封装的API Doc
- ShenNius.Share.Infrastructure 基础设施、里面包含常用的扩展方法、静态类
- ShenNius.Share.Models 实体层、里面包括Dto验证、配置类
- ShenNius.Share.Service 服务层、业务逻辑基本都在这个里面、里面包含了数据访问操作。
- ShenNius.Sys.API 基于RBAC的权限API。
- ShenNius.Cms.API 基于Cms的API (待完成)
- ShenNius.Shop.API 基于Cms的API (待完成)
- ShenNius.API.Hosting API的宿主,所有API目前都放在这个里面托管,这也是魅力所在,可以Sys和Cms API各自托管使用独立的宿主,主要看业务量。拆合很容易。
- ShenNius.Layui.Admin 基于layui的后台管理。
安装教程
- git clone https://gitee.com/shenniu_code_group/shen-nius.-modularity.git
- 多项启动ShenNius.API.Hosting 和ShenNius.Layui.Admin
- ShenNius.API.Hosting 可以配置你要启动的API项目
效果图
最后说明
这个框架,我一直会更新下去,不断的去调整架构,关于Asp.Net Core Api如何配置swagger,FluentValidation等技术文章我近期也会更新文章出来,只要业务需要,我会将一些技术点慢慢地融入到框架中来。尽量做到务实,尽量不在应用层封装自己大量的东西,增加学习成本。我本人真的不喜欢在应用层封装大量东西的框架,包了一层又一层,没任何意义。
另外,近期我会把一些权限管理的前端bug修复下,前端技术我是个半桶水,真的很发愁,如果有人愿意一起做开源,为社区贡献一份力量,那就尽情的联系我吧。以前自己也做了大量的个人项目,但都没有开源出来。这次基本也是从小白做起,一起学习如何做好一个开源项目。
对了,近期我也会把CMS模块尽快完善起来,商城模块后面逐渐排期更新。
最后,如果有什么问题,我也自建了"dotnet根据地"这样一个微信群,可以识别下面的二维码加入,一起交流沟通,如果群二维码过期了也可以识别下面二维码加我微信,邀请你加入微信群。
源码地址
码云:https://gitee.com/shenniu_code_group/shen-nius.-modularity
github:https://github.com/realyrare/ShenNiusFramework
极简实用的Asp.NetCore模块化框架决定免费开源了的更多相关文章
- 极简实用的Asp.NetCore模块化框架新增CMS模块
简介 关于这个框架的背景,在前面我已经交代过了.不清楚的可以查看这个链接 极简实用的Asp.NetCore模块化框架决定免费开源了 在最近一段时间内,对这个框架新增了以下功能: 1.新增了CMS模块, ...
- 极简实用的Asp.NetCore框架再新增商城模块
概述 关于这个框架的背景,在前面我已经交代过了.不清楚的可以查看这个链接 1.极简实用的Asp.NetCore模块化框架决定免费开源了 2.极简实用的Asp.NetCore模块化框架新增CMS模块 算 ...
- Resty 一款极简的restful轻量级的web框架
https://github.com/Dreampie/Resty Resty 一款极简的restful轻量级的web框架 开发文档 如果你还不是很了解restful,或者认为restful只是一种规 ...
- RELabel : 一个极简的正则表达式匹配和展示框架
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- 极简代理IP爬取代码——Python爬取免费代理IP
这两日又捡起了许久不碰的爬虫知识,原因是亲友在朋友圈拉人投票,点进去一看发现不用登陆或注册,觉得并不复杂,就一时技痒搞一搞,看看自己的知识都忘到啥样了. 分析一看,其实就是个post请求,需要的信息都 ...
- 极简SpringBoot指南-Chapter01-如何用Spring框架声明Bean
仓库地址 w4ngzhen/springboot-simple-guide: This is a project that guides SpringBoot users to get started ...
- ASP.NETCore学习记录(一)
ASP.NETCore学习记录(一) asp.net core介绍 Startup.cs ConfigureServices Configure 0. ASP.NETCore 介绍 ASP.N ...
- Asp.net MVC5 框架揭秘 S412 实例解析 – 绝妙的扩展 模式的胜利
Asp.net MVC5 框架是个 开源的,处处可扩展的框架. 蒋先生 在他的这本书里 对如何理解框架,如何扩展框架, 给出了大量的说明和实例. 先上效果图 大部分做传统BS 的同学看到这个页面,脑海 ...
- 通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[上篇]
<200行代码,7个对象--让你了解ASP.NET Core框架的本质>让很多读者对ASP.NET Core管道有了真实的了解.在过去很长一段时间中,有很多人私信给我:能否按照相同的方式分 ...
随机推荐
- 如何用 js 实现一个类似微信红包的随机算法
如何用 js 实现一个类似微信红包的随机算法 js, 微信红包, 随机算法 "use strict"; /** * * @author xgqfrms * @license MIT ...
- 如何在 macOS 上进行滚动截屏
如何在 macOS 上进行滚动截屏 Shift-Command-5 https://support.apple.com/zh-cn/guide/mac-help/mh26782/mac demo Xn ...
- how to create a ring progress bar in web skills
how to create a ring progress bar in web skills ring progress bar & circle progress bar canvas j ...
- js 反应&行动
反应 class Reaction { _page = 1; get page() { return this._page; } set page(newValue) { this._page = n ...
- 聚焦 2021 NGK 新加坡区块链技术峰会,探讨DeFi未来新生态!
2021年1月31日14时,备受行业关注的"2021 NGK 新加坡区块链技术峰会"如期举行.本次峰会由NGK官方主办,以"DeFi"为主题,探讨了区块链技术革 ...
- 不可不知的 JVM 预热
一.JVM 架构基础 JVM 进程启动时,ClassLoader 会将需要的所有类加载到内存,主要分为以下三步: Bootstrap Class: 核心类库,由 "Bootstrap Cla ...
- 如何在Pycharm中自动添加时间日期、作者等信息
参考下面的内容 #_author_='Lucky';#date: ${DATE}
- mui调用本地相册调用相机上传照片
调用mui的常用库和jquery html部分: <header class="mui-bar mui-bar-nav"> <a class="mui- ...
- SpringBoot自定义注解
1.注解的概念 注解是一种能被添加到java代码中的元数据,类.方法.变量.参数和包都可以用注解来修饰.注解对于它所修饰的代码并没有直接的影响. 2.注解的使用范围 1)为编译器提供信息:注解能被编译 ...
- Gradle 差异化构建
Compile 默认的依赖方式,任何情况下都会依赖. Provided 只提供编译时依赖,打包时不会添加进去. Apk 只在打包Apk包时依赖,这个应该是比较少用到的. TestCompile 只在测 ...