.NET开源快速开发框架Colder(NET452+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,支持响应式布局,移动端能够轻松访问
其它各种帮助类库及插件 其它各种帮助类库及插件

后台展示如下:

源码地址:https://github.com/Coldairarrow/Colder.Fx.Net.AdminLTE

各版本请看下表:

.NET版本 前端UI 地址
.NET4.52 AdminLTE https://github.com/Coldairarrow/Colder.Fx.Net.AdminLTE
.NET4.52 Easyui https://github.com/Coldairarrow/Coldairarrow.Fx.Net.Easyui.GitHub
.NET Core2.1 Easyui https://github.com/Coldairarrow/Coldairarrow.Fx.Core.Easyui.GitHub
.NET4.0 Easyui https://github.com/Coldairarrow/Coldairarrow.Fx.Net40.Easyui.GitHub

基础准备

开发环境要求

操作系统: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/p/10486184.html

---------------------学习永无止境,技术永无上限,代码就是艺术-----------------------

【转载】.NET开源快速开发框架Colder(NET452+AdminLTE版)的更多相关文章

  1. .NET开源快速开发框架Colder发布 (NET452+AdminLTE版)

    .NET开源快速开发框架Colder(NET452+AdminLTE版) 引言 半年前将基于Easyui的快速开发框架开源,三个版本(NET4.52,NETCore和NET4.0)总共荣获200+星, ...

  2. .NET Core开源快速开发框架Colder发布 (NET Core2.1+AdminLTE版)

    引言 上星期发布的.NET452+AdminLTE版框架得到了大家的大力支持,目前GitHub已获近100星,鄙人十分高兴能够帮助大家.其中有不少关心.NET Core的支持情况,因为未来的.NET平 ...

  3. 程序员的快速开发框架:Github上 10 大优秀的开源后台控制面板

    程序员的快速开发框架:Github上 10 大优秀的开源后台控制面板 Web 开发中几乎的平台都需要一个后台管理,但是从零开发一套后台控制面板并不容易,幸运的是有很多开源免费的后台控制面板可以给开发者 ...

  4. CRL快速开发框架开源完全转到Github

    CRL简介 CRL是一款面向对象的轻量级ORM框架,本着快速开发,使用简便的原则,设计为 无需关心数据库结构,CRL自动维护创建,即写即用(CRL内部有表结构检查机制,保证表结构一致性) 无需第三方工 ...

  5. [开源]OSharpNS - .net core 快速开发框架 - 快速开始

    什么是OSharp OSharpNS全称OSharp Framework with .NetStandard2.0,是一个基于.NetStandard2.0开发的一个.NetCore快速开发框架.这个 ...

  6. [开源]OSharpNS - .net core 快速开发框架 - 简介

    什么是OSharp OSharpNS全称OSharp Framework with .NetStandard2.0,是一个基于.NetStandard2.0开发的一个.NetCore快速开发框架.这个 ...

  7. [PHP] 一个免费、开源的基于tp5+layui2.1.5开发的快速开发框架

    推荐 一个免费.开源的基于tp5+layui2.1.5开发的快速开发框架,既可以用来学习,也可以用来实际项目的快速开发: 码云下载:https://gitee.com/eduaskcms/eduask ...

  8. 项目开源-基于ASP.NET Core和EF Core的快速开发框架

    前言:作为一名95后的程序猿,已经写了一年多的代码了,为了提升自己的技术水平,所以决定尝试编写一个快速开发框架开源出来,一来提升自己的技术水平,二来助力.NET Core生态发展 写这个框架主要是为了 ...

  9. [原] Android快速开发框架-AndroidFine,GitHub开源

    Android快速开发框架 UI组件,不止是简单整合,更易用 沉浸式状态栏,界面更漂亮 左滑返回,非常流畅 简单.可复用.易扩展的底部导航 PagerSlidingTabStrip,导航标签文字颜色和 ...

随机推荐

  1. ServiceStack.Redis记录

    一.事务 (一)AcquireLock方法 1.说明:申请对一个Key加锁(期间其他对象不能访问). 2.带using的使用,或带过期时间参数,否则锁不会自动释放. using (RedisCache ...

  2. day_10初级函数

    今天讲了函数初级 函数:完成特定功能的代码块,作为一个整体对其进行特定的命名,该名字就是代表函数 --现实中很多问题要通过一些工具进行处理 ,,可以将工具提前准备好并命名 通过名字就可以找到这个工具 ...

  3. Android Studio升级3.2.1后的合并XML出错的解决方案

    升级到3.2.1版本之后,遇到了合并XML出错的问题.错误内容大概如下: 当大家看到这个问题的时候,可能会有一行是可以点击的文件目录,点击到报错的地方. 如果没有可以点击的地方,也可以根据目录和 “行 ...

  4. Javascript高级编程学习笔记(43)—— 动态脚本

    动态脚本 大多数情况下,DOM操作都很简洁明了 因为DOM主要就是用来操作页面中的可视节点的 但有些时候我们又希望可以动态的来进行DOM操作 其中的一部分也就是今天我们的内容动态脚本 动态脚本是什么意 ...

  5. 吴恩达机器学习笔记24-神经网络的模型表示1(Model Representation of Neural Network I)

    神经网络模型建立在很多神经元之上,每一个神经元又是一个个学习模型.这些神经元(也叫激活单元,activation unit)采纳一些特征作为输出,并且根据本身的模型提供一个输出.下图是一个以逻辑回归模 ...

  6. 微信小程序支付接入实战

    1. 微信小程序支付接入实战 1.1. 需求   最近接到一个小程序微信支付的需求,需要我写后台支持,本着能不自己写就不自己写的cv原则,在网上找到了些第三方程序,经过尝试后,最后决定了这不要脸作者的 ...

  7. Easyui学习整理笔记

    目录 (1) 表格双击事件 (2) treegrid传参更新 (3) 设置列表checkbox单选 (4) Easyui实现单行选择和取消选择 @ 对工作中遇到的easyui做一下笔记,不定时更新 ( ...

  8. 深入分析Java I/O的工作机制 (三)网络I/O的工作机制 很详细

    3.网络I/O的工作机制 前言:数据从一台主机(服务端)发送到网络中的另一台主机(客户端)需要经过很多步骤:首先需要有相互沟通的意向.其次要有能够沟通的物理渠道(物理链路):是通过电话,还是直接面对面 ...

  9. poj 1177 --- Picture(线段树+扫描线 求矩形并的周长)

    题目链接 Description A number of rectangular posters, photographs and other pictures of the same shape a ...

  10. hibernate框架(2)---Hibernate的核心API

    Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...