欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

第一章 搭建一个通用的.net core项目框架

程序员文章站 2022-05-05 16:01:59
项目目标部署环境:CentOS 7+ 项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx 开源地址:https://github.com/wmowm/nh.core 作为.net开发人员,我们最熟悉的肯定是经典 ......

项目目标部署环境:CentOS 7+

项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx

 开源地址:https://github.com/wmowm/nh.core

作为.net开发人员,我们最熟悉的肯定是经典的三层架构了

第一章 搭建一个通用的.net core项目框架

这里插入一个题外话,很多人喜欢拿三层跟mvc,mvvm 做一些比较,它们共通的只有一点,就是解耦,三层架构指的是项目结构,一个项目可以搭建三层,加个IDAL 那就是四层了,也可以是N层,MVC只是 UI层里的一个设计模式,mvvm只是前端的一种设计模式,例如vue

我们这里就基于经典的三层,进行拓展,并说明彼此之间关系

先说DAL数据访问层,很多小伙伴喜欢用ADO.net来操作数据库,简单方便,手写sql简洁又高效,这方面进行封装的栗子也很多,先创建一个DAL层,然后Nuget找.net core里操作SQL SERVER的驱动,测试链接,再测试CRUD,测试通过,完美!

刚高兴了一秒,反过来想想,好像有点不对劲,我们部署的目标环境是Linux,Linux上面好像没听说谁用SQL SERVER,用MySQL的最多,难道再去找MySQL的驱动......如果项目需求变了,随便往表里删除几个字段,加几个字段,那估计要崩溃

如何兼容多种数据库?

ORM粉末登场,呸,闪亮登场................................

这里我选用NHibernate5.1,它支持.net core2.0,这里对ORM不做多的介绍,想学习这个ORM的可以去园子里找找资料,挺多的,这里推荐丹妮大叔的博客

 不能因为我会NHibernate就选用这款ORM,还有很多优秀的ORM 例如Dapper,国产SqlSugar,微软亲儿子EF ........我们要做到求同存异

这里我再加一层,IDAL 抽象出CRUD操作,由DAL去实现它,我不用管它是具体是哪款ORM,能实现CRUD即可

IDAL与DAL都属于数据仓储,对数据的一些操作,这里我给它们换个名字

第一章 搭建一个通用的.net core项目框架

数据访问层做好,我们就开始做数据模型,没有模型我们也无法实现CRUD,因为我这边是NHibernate,里面会多一个mapp文件,结构如下

第一章 搭建一个通用的.net core项目框架

 

接下来我们继续搭建业务层,很多人会忽略这一层,把一些业务逻辑写到控制器,或者DAL里面,这种是不可取的,前面我们已经抽象出了CRUD,无法满足复杂业务的需要,此时就需要在业务层做一些处理

第一章 搭建一个通用的.net core项目框架

我把它分为两个部分,Method是CRUD,自定义是一些复杂的业务逻辑

做到这里,是不是业务层就完成了呢?

我们是搭建.net core项目,在.net core无处不在的依赖注入,我们怎么通过依赖注入实现UI 与 BLL的解耦?

依赖倒置:高层模块不应该依赖底层模块,他们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。

我们可以抽象一个IBLL,嗯,很对,先抽象出来,后续文章会在讲解Autofac里详细说明,名字也改个高达上的

第一章 搭建一个通用的.net core项目框架

做完了业务逻辑,我们就开始做UI层

先创建一个mvc项目,考虑到可能要支持多终端,再创建一个webapi,对外提供统一的服务接口

第一章 搭建一个通用的.net core项目框架

 做到这里,框架基本搭建的差不多了,那么问题来了,那么那个模块该添加Autofac的引用呢?

想做到解耦,第一点就是功能职责单一,所以我新增了一个配置中心,它由两块组成,结构如下

第一章 搭建一个通用的.net core项目框架

Tibos.Config 引用Autofac,实现AOP与模块注入,在DefaultModule里我们将业务层注入到Autofac 的IOC容器里面,所有关于Autofac的注入操作,都在这个程序集内实现

Tibos.ConfingModel 用于全局的配置文件读取,.net core里的配置文件格式为json,我们先将json序列化成model对象,然后注册.net core的中间件,这里的配置文件都是自定义的一些配置文件,根据格式放在指定的文件夹

最后还差个常用类库,与测试了,这里就不做过多介绍

第一章 搭建一个通用的.net core项目框架

到这里,整个项目结构介绍完毕,欢迎各位大佬拍砖,觉得有点用的可以去github给我点星,后续介绍里面的一些实现案例

最终结构图

第一章 搭建一个通用的.net core项目框架

 

开源地址:https://github.com/wmowm/nh.core

 转载请标明原文出处:http://www.cnblogs.com/tibos/p/8881337.html