【从零开始搭建自己的.NET Core Api框架】(二)搭建项目的整体架构

本来打算将搭建项目架构和集成SqlSugar放在一起讲的,但是感觉东西有点多,还是分成两章吧~

这一章讲搭建项目的整体架构,这里先把搭建完成后的最终效果放出来,然后再逐个解释每层的作用。

可以看到这里一共有七层,源码在最下面,需要的可以参考源码进行对比(下面我按照自顶层向底层的顺序介绍,所以列出的顺序和图片有点区别)

(一)RayPI主项目层

我在控制器文件夹下添加了两个文件夹,Admin和Client,分别用来存放后台和前端的接口。

这么做主要有两个理由,一个是我觉得这样可以把后台和前台的功能、权限分的清楚些;第二个是,后面我们要试着让我们的框架可以自动生成一些必备的代码,以减少重复的工作量。这些代码主要就是增删改查的功能,我会将它们自动生成到admin里(毕竟对后台来说,每个实体都会涉及到增删改查,这是跑不了的)。

控制器层除了偶尔会做一些参数是否为空的验证外(有人连验证也不在控制器层做),其他不做任何操作,只是将参数传给业务逻辑层处理(下面一个讲)。

所以除了接口的注释信息、接口路径、方法和权限设置外,这一层就不应该有其他任何乱糟糟的代码了~

(二)RayPI.Bussiness业务逻辑层

我在业务逻辑层也就分成了Admin和Client两块,分别用来处理前后台的业务逻辑。该层只做业务逻辑的相关运算,不会对数据库进行任何直接的操作。

业务逻辑层接收到控制器层传递的参数后,将这些参数做相应的处理,然后将加工后的参数床给下一层:数据接口层。(按照比较的三层架构思想,其实应该传给数据层,但是这里利用数据接口层做了一个分隔,好处后面慢慢就会发现了)

(三)数据接口层

该层为数据接口层,里面只罗列了相应的接口函数,但是具体的函数功能实现则交给集成该数据接口的数据层来实现。

这样做的好处是可以将数据库操作与代码逻辑操作分离的更加清晰。不论是编写代码还是阅读代码,我们在操作业务逻辑层时只需要知道我们调用的数据接口的功能即可,但是这个功能的具体实现则暂时不需要考虑;当我们编写或阅读数据层时,只需要考虑是否实现了继承的接口的功能,而不需要再往上去看业务逻辑层。

(四)RayPI.Service数据层

该层负责直接或者间接对数据库数据进行操作,如果你是用原生的或者类似Dapper的数据库数据库中间件,那么在这一层就会看到相应的sql语句(当然,这里我们选择了集成SqlSugar作为数据库操作中间件)。

该层继承了相应的数据接口,所以必须实现接口内的所有函数。

图片上可以看到还继承了一个类,叫BaseDB,这个类是我自己添加的帮助类,在下面会讲的Model层里,里面只有一个函数GetClient,用来返回SqlSugarClient类(这个是SqlSugar集成的类,下一章具体讲)。

(五)RayPI.Entity实体层

该层为实体类层,存储了数据库对应的所有实体,实体一般和数据库表是一一对应的。

(六)RayPI.Model模型层

该层存放了一些系统帮助类,或是实体辅助类。

BaseDB用于返回返回SqlSugar的SqlSugarClient类,数据层可以直接继承该类。

BaseDBConfig用户存放数据的配置信息,比如书库连接字符串(这些配置信息还可以分离出来,存放到主项目的json文件中,以供读取,这个后面专门提出来一章讲)。

MessageModel是一个泛型的返回类,用于格式化的向接口返回数据。

TableModel也是一个返回类,用于格式化的向接口返回列表格式的数据。

(七)SqlSugar层

这一层并不是搭建出来的,而是从github引用的源码。SqlSugar是一个开源的ORM框架,可以实现度数据库灵活方便的操作。如果你是选择不引用源码,而是利用Nuget导包的方式向项目引入,那么项目里就没有这一层。

关于引入并配置SqlSugar下一章再讲~

具体的代码实现可以参考下面的源码

源码下载地址:

到目前为止,项目架构相比第一章已经有点模样了,但是还有很多需求没有涉及到。

比如后面我们会加入的用于存放我们自己常用静态函数的RayPI.Helper层、用于设置接口权限的RayPI.Token层、用于集成支付宝微信等第三方支付SDK的RayPI.Pay层等等。

还有比较重要的功能就是,我会尝试着让框架实现部分的自动化。比如从后台自动生成数据库表(或是在已经有表的情况下自动生成entity实体代码),按模块自动生成增删改查的基础代码,自动生成基础的页面等等。

今天先这样吧~

原文地址:https://www.cnblogs.com/RayWang/p/9221484.html

时间: 2024-08-24 18:08:49

【从零开始搭建自己的.NET Core Api框架】(二)搭建项目的整体架构的相关文章

【从零开始搭建自己的.NET Core Api框架】(一)创建项目并集成swagger:1.1 创建

既然说了是从零开始,那就从最基本的新建项目开始吧~ 新建一个ASP.NET Core Web应用程序,取名为RayPI. 这里选择API模板 生成项目之后,控制器默认生成了一个ValuesController,里面只有几个简单的RESTful风格的接口,分别对应增删改查的功能,没有涉及到数据库数据,只是给我们作为参考而已. 我们可以直接F5进入调试运行状态,结果是这样的: 到这,一个最基础.最原生的"光秃秃"的.NET Core API环境已经搭建好了,但是离我们想要的API框架还很远

【从零开始搭建自己的.NET Core Api框架】(六)泛型仓储的作用

系列目录 一.  创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架--SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSugar快速实现CRUD 3.3 生成实体类 四. 集成JWT授权验证 五. 实现CORS跨域 六. 集成泛型仓储 源码下载:https://github.com/WangRui321/RayPI_V2.0 1. 根 之前在集成SqlSugar的时候,我们用Student类作为例子,写了5个基础的接口:获

【从零开始搭建自己的.NET Core Api框架】(三)集成轻量级ORM——SqlSugar:3.1 搭建环境

首先,需要向项目引入SqlSugar,方法有两种: 1)直接使用Nuget导包 2)Github下载源码,然后项目引用 这里选择了第二种. 引入成功后,我们需要先按照自己的习惯配置一下环境,比如数据库连接字符串怎么放,怎么方便的利用SqlSugar进行CRUD. 先看数据库连接字符串,我将它放到了BaseDBConfig.cs,如图: (有人习惯把它放到系统配置文件里,.NET Core环境下取消了web.config机制,配置统一采用json文件进行存储,关于利用json读写配置信息后面拿出一

go微服务框架go-micro深度学习(一) 整体架构介绍

产品嘴里的一个小项目,从立项到开发上线,随着时间和需求的不断激增,会越来越复杂,变成一个大项目,如果前期项目架构没设计的不好,代码会越来越臃肿,难以维护,后期的每次产品迭代上线都会牵一发而动全身.项目微服务化,松耦合模块间的关系,是一个很好的选择,随然增加了维护成本,但是还是很值得的. 微服务化项目除了稳定性我个人还比较关心的几个问题: 一: 服务间数据传输的效率和安全性. 二: 服务的动态扩充,也就是服务的注册和发现,服务集群化. 三: 微服务功能的可订制化,因为并不是所有的功能都会很符合你的

基于OpenGL编写一个简易的2D渲染框架-08 重构渲染器-整体架构

事实上,前面编写的渲染器 Renderer 非常简陋,虽然能够进行一些简单的渲染,但是它并不能满足我们的要求. 当渲染粒子系统时,需要开启混合模式,但渲染其他顶点时却不需要开启混合模式.所以同时渲染粒子系统和其他纹理时会得不到想要的结果,渲染器还存在许多的不足: 1.当渲染许多透明图形时,没有对其进行排序,使得本应透明的图形没有透明. 2.不能对不同的顶点使用不同的状态进行渲染. 渲染器要做的东西很简单,就是 1.传递数据到 GPU 2.设置 OpenGL 状态信息(Alpha测试.模板测试.深

从零开始搭建自己的前后端分离【 .NET Core2.0 Api + Vue 2.0 】框架之二 || 后端项目搭建

WHY 至于为什么要搭建.Net Core 平台,这个网上的解释以及铺天盖地,想了想,还是感觉重要的一点,跨平台,嗯!没错,而且比.Net 更容易搭建,速度也更快,所有的包均有Nuget提供,不再像以前的单纯引入组件,比如是这样的: 已经没有了之前的Assemblies和COM的引入,初次使用感觉会很别扭,不过使用多了,发现还是很方便的,所以你一定要会使用Nuget,真的很强大,这点儿设计思路感觉更像Linux了. HOW 说了从零开始,就得从零开始,老生常谈,开始. 当然,前提是你得安装.Ne

.NET Core API后台架构搭建

ASP.NET Core API后台架构搭建 项目文件:https://files.cnblogs.com/files/ZM191018/WebAPI.zip 本篇可以了解到: 依赖注入 Dapper ORM框架 第一步:目录文件构建 新建两个类库: 添加好之后,文件构建如下: 第二步:下载Oracle.ManagerDataAccess.Core.Dapper程序包. 第三步:开发DB connection l  新建接口IConnectionProvider.IDbContext.IDbCo

《从零开始学Swift》学习笔记(Day 61)——Core Foundation框架之内存管理

原创文章,欢迎转载.转载请注明:关东升的博客 在Swift原生数据类型.Foundation框架数据类型和Core Foundation框架数据类型之间转换过程中,虽然是大部分是可以零开销桥接,零开销并不意味着内存什么都不用管.Swift类型内存管理是采用ARC,Foundation类型和Core Foundation类型内存管理都是采用MRC或ARC,CoreFoundation类型内存管理是基于C语言风格的,它有一个对象所有权的概念. Objective-C的MRC内存管理 Core Fou

asp.net core系列 36 WebAPI 搭建详细示例

原文:asp.net core系列 36 WebAPI 搭建详细示例 一.概述 HTTP不仅仅用于提供网页.HTTP也是构建公开服务和数据的API强大平台.HTTP简单灵活且无处不在.几乎任何你能想到的平台都有一个HTTP库,因此HTTP服务可以覆盖广泛的客户端,包括浏览器,移动设备和传统的桌面应用程序. ASP.NET Web API 是一个框架,基于.NET Framework 或.NET Core 之上构建 Web API. 从本章开始学习Web API系列时,先从一个示例开始,下面使用A