ASP.NET Core搭建多层网站架构【1-项目结构分层创建】

2020/01/26, ASP.NET Core 3.1, VS2019html

摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构【1-项目结构分层创建】git

文章目录github

此分支项目代码算法

本章节介绍了本项目的分层结构,创建了各层级的类库,修改网站项目的启动配置数据库

新建解决方案

  1. 新建空白解决方案MSDemo
  2. 创建如下解决方案文件夹:

一个解决方案文件夹至关于一个层级,解决方案下是srctests。而src下分了七个层级,而且每一个层级向上依赖,不会出现2.WebCore中的内容依赖5.Model中的内容。json

下面在每一个层级中新建类库或应用程序,简单介绍每一个层级的做用。后端

层级介绍

1.Common中主要放置一些公共的基础库(例如雪花算法、扩展方法等)跨域

2.WebCore中是网站数据库实体类、网站核心配置(例如跨域配置、多语言配置等)浏览器

3.DbAccess中是数据库实体类映射配置、封装工做单元仓储设计类库服务器

4.Component中放置一些Web组件,例如Aop动态代理、Jwt受权验证等

5.Model中放置Automapper的映射配置、ViewModel、DTO等内容

6.Business主要是业务内容

7.WebHost就是WebApi所在层级

说明:

  1. 六、7之间也能够多加一层Middleware中间件层级(若有须要的话)
  2. WebHost不单单能够放WebApi,同样能够放置WebMVC网站
  3. 主要思路是想遵循严格的下级依赖上级,分层层次清晰易于理解,各层级职责明确
  4. 为何有Component这一层?这一层里的内容其实和中间件很相似,可是按个人设计是可替换的,例如Jwt组件,若是不用Jwt,能够不加上去。而中间件内的东西是与网站强相关的

src项目创建

在解决方案所在文件夹下,创建src文件夹,src下全部项目都放在这个路径下。

类库配置以下图,后面几个类库除了名字不一样,都是同样的路径:

1.Common中新建.NET Core类库,取名为MS.Common,一些公用的基础方法就封装在这里面。

2.WebCore中新建.NET Core类库,取名为MS.Entities,里面存放数据库实体类

2.WebCore中新建.NET Core类库,取名为MS.WebCore,里面存放网站核心的一些配置,依赖MS.Common项目

3.DbAccess中新建.NET Core类库,取名为MS.UnitOfWork,里面是工做单元与仓储设计

3.DbAccess中新建.NET Core类库,取名为MS.DbContexts,里面存放实体类映射配置和数据库上下文,依赖MS.Entities、MS.UnitOfWork项目

4.Component中新建.NET Core类库,取名为MS.Component.Aop,实现Aop动态代理,依赖MS.WebCore项目

4.Component中新建.NET Core类库,取名为MS.Component.Jwt,实现Jwt验证受权,依赖MS.WebCore、MS.Entities两个项目

5.Model中新建.NET Core类库,取名为MS.Models,实现存放AutoMapper映射配置、ViewModel和DTO,依赖MS.Component.Jwt、MS.DbContexts两个项目

6.Business中新建.NET Core类库,取名为MS.Services,是主要的业务实现,依赖MS.Models项目

7.WebHost中新建ASP.NET Core Web应用程序,取名为MS.WebApi,取消HTTPS配置,依赖MS.Services、MS.Component.Aop两个项目

将MS.WebApi网站设为项目启动项

创建完成后,解决方案以下图:

十个项目都是.NET Core 3.1目标框架,而且十个项目都在src文件夹中:

编辑网站启动配置

打开MS.WebApi-Properties-launchSettings.json文件,编辑网站启动配置:

删除IIS Express节点配置,并将MS.WebApi节点中,launchBrowser值改成false,此时,网站项目将使用Kestrel内核启动,不使用IIS Express,不启动浏览器,仅有个控制台程序:

打开Postman,New Collection-输入名称MSDemo

MSDemoCollection中Add Requst,名称填写weatherforecast,添加完成后,输入URL:http://localhost:5000/weatherforecast后回车:

能够看到请求成功。

总结

使用Kestrel内核启动Web服务器,而不是使用IIS Express,关于这两种托管模式,能够看老张的哲学出品的ASP.NET Core 学习视频教程,P4-两种托管模式(注意是第四P)

在使用Postman过程当中,创建了Collection,再在Collection中Add Requst请求,为的是:

  1. 方便一个项目的请求都在一个集合中
  2. 后期会添加受权验证,用户登陆后,会获得一个Token,以后的请求中,都要附带上Token,使用Collection后,用户登陆完成,把Token加入到Collection,则Collection中每一个请求都会自动附带上该Token
相关文章
相关标签/搜索