极简实用的Asp.NetCore模块化框架决定免费开源了

0421517b8296c6d574a10b5b52c2b08d.gif

背景

在开发这个框架之前,前前后后看过好几款模块化的框架,最后在一段时间内对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”这个开源项目。

软件架构

  1. API框架:dotNetCore

  2. ORM:SqlSugarCore

  3. 缓存:MemoryCache(后期会上redis,看项目业务需求)

  4. 日志管理:Nlog

  5. 工具类:Aes加密、Md5加密、RSA加密、Des加密

  6. token:Json Web Token

  7. 实体验证:FluentValidation

  8. 实体映射:AutoMapper

使用说明

  1. ShenNius.ModuleCore是模块化的核心代码

  2. ShenNius.Swagger是封装的API Doc

  3. ShenNius.Share.Infrastructure 基础设施、里面包含常用的扩展方法、静态类

  4. ShenNius.Share.Models 实体层、里面包括Dto验证、配置类

  5. ShenNius.Share.Service 服务层、业务逻辑基本都在这个里面、里面包含了数据访问操作。

  6. ShenNius.Sys.API 基于RBAC的权限API。

  7. ShenNius.Cms.API 基于Cms的API (待完成)

  8. ShenNius.Shop.API 基于Shop的API (待完成)

  9. ShenNius.API.Hosting API的宿主,所有API目前都放在这个里面托管,这也是魅力所在,可以Sys和Cms API各自托管使用独立的宿主,主要看业务量。拆合很容易。

  10. ShenNius.Layui.Admin 基于layui的后台管理。

安装教程

  1. git clone https://gitee.com/shenniu_code_group/shen-nius.-modularity.git

  2. 多项启动ShenNius.API.Hosting 和ShenNius.Layui.Admin

  3. ShenNius.API.Hosting 可以配置你要启动的API项目

效果图

397799a4e41dffa4a5f4eb9714e54e04.png

c337c2b6de8af11941a466d4950c251b.png

25532a3d18f15f81e0db7818bc03b6e1.png

64f1f1b752e583968fc69c84f63ec161.png

b8267217323c9ea80c1ff52bd757cbf9.png

7e5c393ebd6c44a680b7c13b92fa21b7.png

47ed2b9443c408973f3d8d0c349cee08.png

这个框架,我一直会更新下去,不断的去调整架构,关于Asp.Net Core Api如何配置swagger,FluentValidation等技术文章我近期也会更新文章出来,只要业务需要,我会将一些技术点慢慢地融入到框架中来。尽量做到务实,尽量不在应用层封装自己大量的东西,增加学习成本。我本人真的不喜欢在应用层封装大量东西的框架,包了一层又一层,没任何意义。

另外,近期我会把一些权限管理的前端bug修复下,前端技术我是个半桶水,真的很发愁,如果有人愿意一起做开源,为社区贡献一份力量,那就尽情的联系我吧。以前自己也做了大量的个人项目,但都没有开源出来。这次基本也是从小白做起,一起学习如何做好一个开源项目。

对了,近期我也会把CMS模块尽快完善起来,后面做商城模块。

最后,如果有什么问题,我也自建了"dotnet根据地"这样一个微信群,可以识别下面的二维码加入,一起交流沟通,如果群二维码过期了也可以识别下面二维码加我微信,邀请你加入微信群。

源码地址

码云:https://gitee.com/shenniu_code_group/shen-nius.-modularity

github:https://github.com/realyrare/ShenNiusFramework

a9d4afb65ef21e8e4b5e4e7e0b610303.png

23476bed1066a9eb5b21200f109d427a.png

60ebdf0f33405bae8fd498e42224a8ab.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293914.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我做的OSC界面

2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/hotbain/blog/118542

Android之Timer和TimerTask的介绍

在开发中我们有时会有这样的需求,即在固定的每隔一段时间执行某一个任务。比如UI上的控件需要随着时间改变,我们可以使用Java为我们提供的计时器的工具类,即Timer和TimerTask。 Timer是一个普通的类,其中有几个重要的方法&#…

有计算机信号专业吗,计算机医学图像及信号处理

院校选择是考研成功关键的第一步。想考计算机医学图像及信号处理专业,选择哪个学校更好?聚创考研网小编为大家整理了相关内容,详细如下:工学类考研辅导班请咨询:juchuang911计算机医学图像及信号处理考研院校是对计算机…

Fragment生命周期

通过Android Studio创建包含两个Fragment的Activity:QuestListFragment、QuestInputFragment 调用的过程如下: 打开APPQuestListFragment﹕ onAttachQuestListFragment﹕ onCreateQuestListFragment﹕ onCreateViewQuestListFragment﹕ onViewCreatedQue…

.NET 6新特性试用 | 模式匹配之Extended Property Patterns

前言模式匹配是一种测试表达式以确定其是否具有某些特征的技术。例如, 下面的Employee类和Manager类:public class Employee {public int Id { get; set; }public string Name { get; set; }public Manager? Manager { get; set; } }public class Manager : Employ…

使用Nagios监控esx、esxi、vcenter

系统环境:Centos6.3 最小化安装环境准备yum install –y libxml2-devel make gcc1、安装前准备 (1)创建nagios用户和用户组 [rootlocalhost ~]#useradd -s /sbin/nologin nagios [rootlocalhost ~]#mkdir /usr/local/nagios [rootlocalhost ~…

Android之在window下面开发常用的adb命令(不断更新)

window下面开发常用的adb命令 1、查看设备 adb devices 2、安装APK adb install -r 安卓apk的路径 3、查看日志E等级以上 adb logcat *:E; 4、过滤"result" tag日志 adb logcat | findStr "result" 5、过滤"result"tag日志…

计算机广告制作未来发展还行吗,计算机多媒体设计专业和广告设计制作那个好...

技校网专门为您推荐的类似问题答案问题1:计算机多媒体技术和广告设计与制作哪个专业好计算机多媒体涵盖范围广。广告与制作就业前景好。如果想学更多东西的话选择计算机多媒体。包含广告设计。问题2:计算机应用,广告设计与制作,网络技术,多媒体技术哪个好…

Composer快速入门

什么是Composer Composer 是PHP的一个依赖管理工具。你可以在你的项目里声明你依赖的库,然后Composer会帮你解决以下问题:找到这些库以及这些库所依赖的库可以安装的版本,然后进行安装。所以Composer是一个依赖管理工具,而不是一个…

龙芯上市是自主路线被广泛认可的风向标

日前,龙芯通过科创板上市委员会审核,此次计划募资35.12亿元。其中,12.58亿元用于先进制程芯片研发及产业化项目,10.54亿元用于高性能通用图形处理器芯片及系统研发项目;12亿元用于补充流动资金。公开材料还披露了很多细…

“批判”按劳取酬

“批判”按劳取酬<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />Jack zhai按劳取酬的意思就是付出多少劳动&#xff0c;就获得多少报酬&#xff1b;这曾经是我认为最为合理的老板与员工之间的合约关系。然而近几年&#xff0c;…

携程编程大赛 (预赛第二场)第一题【剪刀石头布】

Problem Description现有M个人一起玩剪刀石头布&#xff0c;以1&#xff0d;M编号&#xff0c;每人出一种&#xff0c;出过不再改变&#xff0c;但是我们并不知道它到底是哪一种。 &#xff08;其中石头赢剪刀&#xff0c;剪刀赢布&#xff0c;布赢石头&#xff0c;一样则平&am…

AndroidStudio自定义属性xmlns无法识别问题解决in Gradle projects,always use http://schemas.android.com/apk/res-auto

正如in Gradle projects,always usehttp://schemas.Android.com/apk/res-auto for custom attributes所说的 将eclipse中 http://schemas.android.com/apk/res/com.xxx.xxx 换成 http://schemas.android.com/apk/res-auto 这样Gradle就会自动查找自定属性的

量子计算机是程序员的未来,研究者:量子计算机一旦成功问世,时间也许会失去存在的意义...

贝尔实验室的科学家索尔&#xff0c;自从在1994年35界计算科学基础年会上提出量子算法后&#xff0c;立刻引起全世界科学界的轰动&#xff0c;量子计算机的研究热潮自此到来。量子计算机的运行方式以及存储计算方式&#xff0c;都与经典计算机存在着很大不同。经典计算机的存储…

.NET 现代化动态 LINQ 库 Gridify

动态 LINQ大家好&#xff0c;我是等天黑, 这次继续介绍开源项目&#xff0c;Gridify 是一个现代化动态 LINQ 库&#xff0c;它以最简单的方式将您的字符串转换为 LINQ 查询&#xff0c;并且有出色的性能。它还提供了一种使用基于文本的数据应用过滤、排序和分页的简单方法&…

Android之Toolbar的三个问题:修改左边箭头颜色、怎样修改右边以及子activity中的toolbar添加返回箭头

1&#xff09;怎样修改左边这个小箭头的颜色&#xff1f;2&#xff09;怎样修改右边这三个点的颜色、怎样把这三个点替换成我自己的图标&#xff1f;3&#xff09;怎样让“交易清单”这4个字居中显示&#xff1f; 首先设置Theme为AppCompat.NoActionBar。 (1)toolbar可以通过设…

brew mysql 添加修改mysql配置

为什么80%的码农都做不了架构师&#xff1f;>>> brew安装的MySQL是没有默认配置文件的&#xff0c;因此Mysql使用默认配置启动。我们需要手动创建my.cnf去覆盖默认配置。在/usr/local/opt/mysql 下确实有 my.cnf 但是并没有在启用中&#xff0c;应该是作为一个示例…