.NET 开源快速开发框架 Colder(NET452+AdminLTE 版)
半年前将基于 Easyui 的快速开发框架开源, 三个版本 (NET4.52,NETCore 和 NET4.0) 总共荣获 200 + 星, 得到了大家的认可, 也很高兴能够帮助到大家. 但不可否认的是 Easyui 在现在各大主流 UI 框架 (Bootstrap,iview,Layui,element-ui 等) 面前的确有些过时, 爱美之心人皆有之, 咱猿类的衣食父母 (甲方) 也不列外. 因此, 为了吃 (房) 香(贷)喝 (车) 辣(贷), 选择一套漂亮而简洁的 UI 来取悦甲方就是现阶段的主要矛盾 (人民日益增长的美好生活需要和不平衡不充分的发展之间的矛盾). 为了解决这个主要矛盾鄙人进行了很长时间的调研, 在各大主流 UI 框架(Bootstrap,iview,Layui,element-ui 等) 中进行各种对比, 最后选择了基于 Bootstrap 的 AdminLTE, 这是因为本框架的面向对象主要是. NET 后端开发者, Bootstrap 相比于其它而言更加容易上手, 而且插件丰富(Easyui 更丰富而且简单), 并且拥有不俗的颜值, 最终选择它. 最后, 在鄙人的两星期搬砖后, 焕然一新的. NET 快速开发框架 Colder.Fx.NET.AdminLTE 诞生, 希望大家能够喜欢并支持.
简介
本框架旨在为. NET 开发人员提供一个 web 后台快速开发框架, 采用本框架, 能够极大的提高项目开发效率.
本版本框架采后端采用基于. NET4.52 的 ASP.NETMVC, 前端从原来的 Easyui 升级为基于 Bootstrap 的 AdminLTE, 支持响应式布局, 提高用户体验(提高逼格).
框架主要功能如下表:
功能 | 详细描述 | 支持情况 |
---|---|---|
用户登录、密码修改 | 用户登录、密码修改 | ✔ |
系统用户管理 | 系统用户管理 | ✔ |
角色管理 | 角色管理 | ✔ |
权限管理 | 基于用户的权限、基于角色的权限、菜单权限、操作权限(按钮权限)、接口权限、数据权限 | ✔ |
系统日志 | 支持使用 ElasticSearch 记录日志 | ✔ |
快速开发 | 通过数据库直接生成实体层、业务逻辑层、视图层代码,无需编码即可实现 CURD | ✔ |
数据库操作封装 | 使用基于 EF 的仓储模式、封装常用的 CURD,支持单库事物和分布式事物 | ✔ |
多数据库支持 | 使用基于 EF 的仓储模式,支持各大主流关系型数据库(SQLServer、MySQL、Oracle、PostgreSQL) | ✔ |
缓存支持 | 支持系统自带缓存和 Redis 缓存、封装操作接口、简单易用 | ✔ |
分布式 Session 支持 | 禁用自带 Session,使用自定义 Session,一键开启分布式 Session | ✔ |
页面响应式 | 基于 Bootstrap,支持响应式布局,移动端能够轻松访问 | ✔ |
其它各种帮助类库及插件 | 其它各种帮助类库及插件 | ✔ |
后台展示如下:
源码地址:
各版本请看下表:
.NET 版本 | 前端 UI | 地址 |
---|---|---|
.NET4.52 | AdminLTE | |
.NET4.52 | Easyui | |
.NET Core2.1 | Easyui | |
.NET4.0 | Easyui |
基础准备
开发环境要求
操作系统: Windows 10
开发工具: Visual Studio 2017
SDK: 安装. NET4.52 及以上
数据库: SQLServer2008 R2 及以上
基础数据库构建
使用本框架需要构建基础数据库, 具体步骤如下:
创建基础数据库的 Sql 脚本文件在:/docs / 初始化文件 / db.sql, 在数据库中运行 db.sql 脚本即可创建数据库:
Colder.Fx.NET.AdminLTE
若 Sql 运行出错, 请直接使用同目录下的 db.bak 还原数据库
打开 src 目录下 Colder.Fx.NET.AdminLTE 的解决方案, 如下图
如下图所示依次展开 05.Coldairarrow.Web=>Config=>database.config, 配置数据库连接字符串, name 不用修改, connectionString 改为上述创建的数据库(若不清楚数据库连接字符串请自行百度搜索教程)
自此基础数据库配置完成.
数据库设计规范
由于本框架支持自动生成代码的核心功能, 此功能是根据数据库的表结构来生成代码的
因此规定每张表都有一个主键, 列名为 Id, 类型为字符串, 实际添加数据时默认使用 GUID 的字符串形式, 表中的每个列都需要有描述信息(建议这样操作, 若不按照这个标准则需要一些额外的改动才能够成功运行).
运行
请先还原 Nuget 包
然后将 05.Coldairarrow.Web 设为启动项目, 成功运行即可进入以下页面
详细教程
代码架构
项目代码分层, 详情见源码中的说明书, 博客园放会被判为重复文章, 敬请谅解.
功能架构
全局配置
在 01.Coldairarrow.Util 中的 GlobalSwitch 类中, 设置了各个参数, 其中 RunModel 需要重点关注一下, 若 RunModel==RunModel.LocalTest, 则系统会直接跳过登录, 默认使用 Admin 超级管理员登录, 其它参数请看注释.
快速开发
使用此功能请确保 GlobalSwitch.RunModel= RunModel.LocalTest
此功能为本框架的核心功能, 能够自动生产完整的可运行代码, 具体使用如下:
首选需要有数据库源, 因为代码生成是根据数据库表来生成的.
菜单: 开发 =>数据库连接管理
若列表中没有目标数据源, 则添加数据库连接
数据连接名, 连接字符串, 数据库类型即可. 添加完成后即可看到连接字符串信息.
有了数据库连接之后, 即可进行代码生成.
菜单: 开发 =>代码生成
选择数据库, 然后勾选需要生成代码的数据库表, 点击生成代码会弹出生成选项(这里暂时只能勾选 Dev_Project, 其余表全是系统基础表, 不要勾选, 否则会被覆盖, 导致异常, 请勾选自己的业务表进行生成):
生成选项中可以选择需要生成的类型, 可以默认生成实体层, 业务逻辑层, 控制器和视图.
生成区域对应 MVC 中的 Areas, 请按需填入(必填)
这里示例填写 ProjectManage, 点击生成按钮, 即可完成代码生成. 生成后的代码在项目解决方案中, 将代码文件包括进入项目
默认生成后的文件是隐藏的, 需要点击显示所有文件按钮, 即可看到生成后的新文件
右键新的文件夹, 包括在项目中
由于是新生成的代码, 所以才配置新的菜单
如上图, 在 Web 项目中的 Config/SystemMenu.config 中配置菜单, 模仿原有菜单即可, 其中 url 是指页面的路径, Permission 是指若需要访问此菜单需要的权限(对应权限配置), 若没有此权限, 则菜单也中不会显示此菜单, 修改完成后重新编译生成(权限相关模块进行了缓存, 重新生成会清缓存), 重新运行即可看到新的项目菜单如下:
整个代码生成过程, 无需编写代码即可完成一张表的 CRUD, 当然需要根据具体业务中进行相应的修改, 本次示例中字段比较少, 但是当一张表的字段很多时, 那么此功能能够将开发效率提高几个档次.
管理员登录
若要使用登录功能, 请将 GlobalSwitch 中的 RunModel 改为 RunModel.Publish
默认超级管理员账号为: Admin
密码为: 123456
系统用户管理
管理系统登录的用户
菜单: 系统 =>用户管理, 如下页面
点击右侧设置权限, 可以设置用户权限, 详情见 <权限管理> 模块
具体权限相关配置见权限管理模块
系统角色管理
管理系统角色, 角色是权限的载体, 合理分配角色有利于权限管理
菜单: 系统 =>角色管理
操作中可以设置角色的权限, 详情见 <权限管理> 模块
权限管理
一般情况下, 后台管理系统多少会涉及权限管理, 因此本框架提供了一个灵活, 高效, 简洁的权限管理系统.
首先, 权限分为两种, 即操作权限和数据权限, 其中操作权限报货系统用户权限和 AppId 权限, 系统用户权限就是指操作用户具备哪些权限, 而当对外提供 API 接口时, 为了保证接口的安全性(若不在意可忽略), 通常会提供接口签名算法, 其中 AppId 和 AppSecret 是必备的, 通过对 AppId 设置权限, 即可控制接口的权限. 数据权限比较复杂, 若采用纯 SQL 方式, 那么会更加复杂, 本框架全程采用 EF 作为 ORM 框架, 通过对 IQueryable<T > 进行过滤, 即可完成数据权限控制.
用户权限: 若对每个用户都设置对应的权限, 那么工作量无疑是十分巨大的, 因此引入了角色的概念, 角色是权限的集合载体, 那么属于此角色的用户就继承了角色的权限, 当然某些特殊用户需要拥有自己的不属于角色的特殊权限, 因此最终用户拥有的权限就是自己的权限和所属角色权限的并集.
权限使用:
权限定义:
如上图, 在 Permission.config 中定义了各个权限
权限配置:
在系统用户管理和系统角色管理中可以设置用户和角色的权限, 把需要的权限勾选即可.
权限使用:
如上图所示, 在需要控制权限的页面中, 调用方法: PermissionManage.OperatorHasPermissionValue("sysuser.manage")
这个方法是判断操作者用户是否含有 sysuser.manage 权限值, 其中 sysuser 是指 Permission.config 中定义的 module 的 value 属性, manage 是指 permission 中的 value 属性, 用. 连接即是最终权限值.
更详细的使用方式, 请参考源代码.
接口秘钥管理
菜单: 系统 =>接口秘钥管理
系统日志
菜单: 系统 =>系统日志
常见疑问
如何进行联表查询?
框架使用 EF+LINQ 进行联表操作, 核心在于对 IQueryable<T > 的使用, 另可网上搜 EF+LINQ 的相关教程.
示例如下图:
如何切换数据库?
在 01.Coldairarrow.Util 项目中的 GlobalSwitch, 将 DatabaseType 改为需要的即可, 对应的数据库连接字符串当然也要改为对应数据库的
如何使用别的数据库(即非默认的系统数据库)
在具体的 Business 类中重写父类 BaseBusiness 的构造函数即可, 按照自己的需求重写对应的构造函数, 同时需要确保数据库连接字符串已添加
结语
欢迎使用本框架, 若觉得不错, 请比心
GitHub: https://github.com/Coldairarrow , 请 Statrt
博客园: https://www.cnblogs.com/coldairarrow/
QQ 群: 373144077
本人将会对这个快速开发框架不断完善与维护, 希望能够帮助到各位
若遇到任何问题或需要技术支持, 请联系我.
--------------------- 学习永无止境, 技术永无上限, 代码就是艺术 -----------------------
来源: https://www.cnblogs.com/coldairarrow/p/10486184.html