Web后台快速开发框架 Coldairarrow

 

  1. 目录

    目录

    如下图所示依次展开05.Coldairarrow.Web=>Config=>database.config,配置数据库连接字符串,name不用修改,connectionString改为上述创建的数据库(若不清楚数据库连接字符串请自行百度搜索教程)

    自此基础数据库配置完成。

  2. 运行

    将05.Coldairarrow.Web设为启动项目,成功运行即可进入以下页面

     

     

  3. 详细教程

  4. 代码架构

  5. 总体架构

    框架组成结构一共分为5层,如上图所示,分别如下:

    基础设施层:此层为最底层,可以为其余所有层服务。主要提供了项目开发所需的各种帮助类:数据库访问帮助类、文件操作帮助类、二维码生成帮助类、分拣压缩帮助类等等其余帮助类;拓展类:字符串拓展类、集合操作拓展类、表达式树拓展类等等其余拓展类;还集成了个人编写的Socket通讯框架,WCF拓展使用框架,Windows服务容器。这些丰富的类库都是为开发人员提供了开发中常用的功能,为快速开发提供强有力的保障。

    数据仓储层:这层主要为对数据库操作CRUD的简单封装,以EntityFramework为核心,采用简单工厂、抽象工厂、工厂方法、三个工厂设计模式,使开发人员进行CRUD只需要极为简单的代码即可完成。本层还提供了数据库事务的支持,更是提供了分布式事务支持,为数据库操作提供必备的保障。使用本层提供的接口,无需关心具体的数据库类型,比如是采用SQLServer数据库或者MySQL数据库,开发人员只需要关心具体的业务逻辑实现,哪怕更换数据库,也无需更改业务逻辑代码,只需要更改简单的数据库配置即可。总之,本层为开发人员对数据库的操作提供了简单高效的操作接口,可以极大的提高开发效率。

    实体层:这层主要为ORM框架数据库表对应的实体类,为业务逻辑层和应用层服务。

    业务逻辑层:本层是开发人员主要编写层,通过调用数据仓储层操作数据库,并为应用层提供所需的接口,处理具体操作的业务逻辑,可以说是最为复杂的一层。

    应用层:本层在本框架中表现形式为ASP.NET MVC网站,其实也可以泛指其余的表现形式:控制台程序、Windows服务程序、WinForm程序、WPF程序等等。本层为具体的应用,负责系统功能的实现。

  6. 基础设施层

    此层为最底层,可以为其余所有层服务。主要提供了项目开发所需的各种类库,主要为以下几种类库:

    1. 拓展帮助类

    利用C#的语法糖(是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用),可以在类上拓展自定义方法,这样开发人员在使用的时候就可以十分的方便,既能减少重复的代码又能加快开发效率。具体包含但不限于以下类:

    Object拓展:Object是所有类的基类。现在前后端数据交互中,采用JSON是选择,因此对象JSON序列化与反序列化的使用就十分的频繁,通过给Object拓展ToJson方法,就可以将数据对象直接转为对应的JSON字符串,能够极大的简化JSON序列化所需要的代码。

    Byte拓展:Byte,即字节,一个字节是8个比特位,十进制数值范围在0-255。由于Byte与二进制是直接对应的,而计算机中一切数据都是二进制,所以关于Byte与其他数据类型之间的转换就显得尤为重要,编写Byte相关的拓展方法能够方便Byte的使用。例如,拓展将Byte数组转为16进制字符串的方法,能够将字节数组直接转为对应的16进制字符串,现在物联网的发展也十分的迅速,在物联网开发中,关键是建立与硬件之间的通信,但是由于硬件的配置一般都不高,因此与硬件之间的通信大多以字节为单位,这种情况下,使用该拓展方法就可以提高开发效率。

    Expression拓展:Expression,即表达式树,在LINQ查询中经常使用。在日常使用中,Where筛选估计是用得最多的,但是大多数开发人员都是使用最原始的Where筛选,当筛选条件增多,筛选条件变复杂的时候,原始的Where虽然也可以胜任,但是就会导致代码重复,不够简洁雅观,此时可以为Expression<Func<T, bool>>类拓展And与Or方法,其中And是"与"操作,Or是"或"操作,这样就可以将多个筛选条件拼接在一起,十分的实用。

    IQueryable<T>拓展:IQueryable<T>是提供针对特定数据源(其中数据类型未未知)评估查询的功能接口,其在EntityFramework中发挥着重要的作用。例如,在后台管理系统中,数据表格的使用最为普遍,前端向后台请求表格数据时,不外乎需要以下几个参数:当前请求页码、每页记录数、排序列与排序类型,这些参数在每个请求表格数据请求中都需要处理,这时,通过给IQueryable<T>拓展GetPagination<T>方法,只需要传入分页参数,就可以获取所需的数据表格数据,十分的方便高效。

    1. 工具帮助类

    主要提供了常用的一些帮助类,包含但不限于:

    Office办公文档导入导出帮助类:当今,随着人们环保意识的增强,以及各行业对办公模式需求的不断升级,现代化、信息化建设步伐的加快,无纸化办公已经由概念逐渐应用到多个行业领域中,办公中,各种办公文件,尤其是Excel文件与Word文件经常需要导入与导出,但是C#操作Excel与Word文件并不简单,经常困扰着开发者,由此,本框架提供了Office文档操作帮助类,封装简化了对办公文档的常用操作,能够降低开发难度,提高开发效率。

    HTTP请求模拟帮助类:在传统网站开发中,一般都是前端浏览器向后台发起请求,但是,现在的系统与系统之间的合作越来越紧密,经常需要后端向后端发起请求,即需要后端模拟HTTP请求,但编写一个完整的HTTP请求并不是那么容易,因此本框架提供HTTP请求帮助类,开发人员只需要传入需要请求的URL地址与参数即可完成HTTP请求操作,使用起来简单高效,能够极大的提高开发效率。

    1. 缓存操作帮助类

    在现代化系统开发中,随着业务量的增大,系统性能就难以满足要求,要达到性能要求,一方面可以采用更好的硬件,但是成本较高,而另一方面就是使用缓存,有效使用缓存能够提高吞吐量与并发量,所需成本较低,是绝大多数用户的首选。

    .NET Framework框架提供了系统缓存,虽然使用简单方便,但是不支持分布式,因此大多选择诸如Redis和Memcached缓存,但是不同的缓存为开发者提供的接口不一样,当使用不同的缓存时开发人员又需要去学习别的缓存操作接口,十分的麻烦,为解决这个问题,本框架提供了缓存操作帮助类。缓存操作帮助类将缓存核心操作抽象定义成操作接口:添加缓存、删除缓存、设置缓存过期时间,然后再用Redis与系统缓存实现抽象接口,当使用缓存时可以使用同样的操作接口操作不同的缓存,能够降低开发人员学习成本,提高开发效率。

    1. 数据库操作帮助类

    无论什么网站,只要需要对数据进行操作,那么大多离不开数据库。数据库目前使用最多的就是三大关系型数据库:SQLServer、MySQL与Oracle,访问数据库需要一系列的程序:首先需要创建数据库连接对象,紧接着打开数据库,其次传入数据库操作命令,然后执行命令,最后得到数据结果,若每次访问数据库都要写一遍这些流程,那么将会极大的阻碍开发效率,因此,本框架提供了数据库操作帮助类,将数据库操作所需要的流程封装,开发人员只需要关心具体的SQL语句的编写即可,并且支持三大关系型数据库,适合不同的开发人员使用。

  7. 数据仓储层

    在后端开发中,数据库操作是最频繁的,每一个后端开发人员或多或少都会接触,甚至不少开发人员每天的工作就是与数据库打交道,所以可见数据库操作是多么的重要。在现在开发的过程中,绝大多数开发人员只是以编写SQL语句的方式操作数据库,这种方式是操作数据库最基本最原始的方式,简单高效,但是在编写SQL语句的过程中,极容易因马虎大意而编写错误,就会出现一个现象:开发人员面对着一堆SQL语句在DEBUG,而且每次都需要开发人员自己去手写SQL语句,其开发效率极低。哪怕开发人员足够出色,能够保证编写的SQL语句较低的出错率,但是,不同的数据库所需要的SQL语句还是有差异的,这就需要开发人员学习不同的数据库SQL语法,添加学习成本。而且在项目开发中难免会遇到更换数据库的情况,这时还需要花费大量的精力去进行修改SQL语句。

    在本框架的数据仓储层中,上述问题即可迎刃而解。数据仓储层,不同于传统三层架构中的数据层,其核心继承关系图如下图所示(图6-1):

    图6-1 数据仓储类图

    如上图所示,首先定义了数据操作接口IRepository,该接口包含了增、删、改、查、事物控制等数据库常用核心操作,能够满足对数据库的常用操作,DbRepository类实现了IRepository接口,主要以ORM框架Entity Framework为基础,封装实现了大部分IRepository所需的操作,SqlServerRepository、MySqlRepository和PostgreSqlRepository分别实现具体数据库对应的数据仓储,而且继承自同一个数据操作接口IRepository,因此在具体的使用上,可以实现以同一个操作方法访问不同的数据库,当遇到需要更换数据库的情况时,采用本框架开发的系统能够不改代码而正常运行,这一点能够极大的降低软件开发成本。并且以Entity Framework为核心,不需要编写SQL语句就能够完成绝大部分的数据库操作,再加上简洁的LINQ配合,彻底将开发人员从SQL语句中解放出来,让开发人员能够更加专注于业务逻辑的实现,能够极大的提高软件开发效率。

    IRepository代码如下:

    using System;

    using System.Collections.Generic;

    using System.Data;

    using System.Data.Common;

    using System.Data.Entity;

    using System.Linq;

    using System.Linq.Expressions;

     

    namespace Coldairarrow.DataRepository

    {

    public interface IRepository

    {

    关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信