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

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

文章目录

此分支项目代码

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

新建解决方案

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

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

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

层级介绍

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

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

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

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

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

6.Business主要是业务内容

7.WebHost就是WebApi所在层级

说明:

  1. 6、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

ASP.NET Core搭建多层网站架构【1-项目结构分层建立】的更多相关文章

  1. ASP.NET Core搭建多层网站架构【0-前言】

    2020/01/26, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构 目录 0-前言 1-项目结构分层建立 2-公共基 ...

  2. ASP.NET Core搭建多层网站架构【2-公共基础库】

    2020/01/28, ASP.NET Core 3.1, VS2019,Newtonsoft.Json 12.0.3, Microsoft.AspNetCore.Cryptography.KeyDe ...

  3. ASP.NET Core搭建多层网站架构【3-xUnit单元测试之简单方法测试】

    2020/01/28, ASP.NET Core 3.1, VS2019, xUnit 2.4.0 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[3-xUnit单元测试 ...

  4. ASP.NET Core搭建多层网站架构【4-工作单元和仓储设计】

    2020/01/28, ASP.NET Core 3.1, VS2019, Microsoft.EntityFrameworkCore.Relational 3.1.1 摘要:基于ASP.NET Co ...

  5. ASP.NET Core搭建多层网站架构【5-网站数据库实体设计及映射配置】

    2020/01/29, ASP.NET Core 3.1, VS2019, EntityFrameworkCore 3.1.1, Microsoft.Extensions.Logging.Consol ...

  6. ASP.NET Core搭建多层网站架构【6-注册跨域、网站核心配置】

    2020/01/29, ASP.NET Core 3.1, VS2019, NLog.Web.AspNetCore 4.9.0 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站 ...

  7. ASP.NET Core搭建多层网站架构【7-使用NLog日志记录器】

    2020/01/29, ASP.NET Core 3.1, VS2019, NLog.Web.AspNetCore 4.9.0 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站 ...

  8. ASP.NET Core搭建多层网站架构【8.1-使用ViewModel注解验证】

    2020/01/29, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[8.1-使用ViewModel注解验证] 使用V ...

  9. ASP.NET Core搭建多层网站架构【8.2-使用AutoMapper映射实体对象】

    2020/01/29, ASP.NET Core 3.1, VS2019, AutoMapper.Extensions.Microsoft.DependencyInjection 7.0.0 摘要:基 ...

随机推荐

  1. HTTP请求消息的数据格式

    servletRequest获取请求消息 Request 分为4部分1.请求行 格式:请求方式 请求url 请求协议/版本GET /login.html HTTP/1.1 特点:行和头之间没有任何分隔 ...

  2. 查看war包编译时使用的jdk版本

    第一种方式:找到war包的其中一个class文件,用UE打开,看第一行 34(对应十进制的50):JDK1.8 33(对应十进制的50):JDK1.7 32(对应十进制的50):JDK1.6 31(对 ...

  3. 初识eclipse-java

    开始时会有工程的地址需要设置,最好将程序放在一个单独的文件夹中 有时候会用到外部的驱动程序,如excel等,就需要导入jar包 具体的请看下篇博客.

  4. THINKCMF5 部署到 Windows服务器

    问题一 [public/index.php是项目的入口文件,请配置服务器时把 public 目录做为 web 目录]这是官方文档的一句话.如何将public 目录做为 web 目录? 解答:在IIS或 ...

  5. Explainable ML

    定义: 不仅可以(分类),还要输出分类的理由是什么(局部),以及某一个分类的判断标准(全局) 局部: silence map. 把{x1.....xn}中每一个像素加一个偏移量之后,得到的y偏移量与x ...

  6. python多进程编程学习笔记

    摘自[https://www.cnblogs.com/chenhuabin/p/10070996.html] by 奥辰 赞

  7. HDU 3530

    新手理解(可能有理解错误的地方,请指教,嘿嘿) #include<stdio.h> #include<string.h> #include<math.h> #inc ...

  8. Tex 一些命令

    1. [!htp] 可以使这个内容跟随在前面的内容后面 假如前面是一段文字,后面是一幅图像,不知什么原因跑到其他地方去了.这时加个[!htp]可以使他紧紧跟在后面 ergdsgagdfgdfgfgaf ...

  9. 30分钟编写一个抓取 Unsplash 图片的 Python爬虫

       我一直想用 Python and Selenium 创建一个网页爬虫,但从来没有实现它. 几天前, 我决定尝试一下,这听起来可能是挺复杂的, 然而编写代码从 Unsplash 抓取一些美丽的图片 ...

  10. 安装mongo以及相关扩展

    背景:看到了一个nodejs的对mongo操作的课程,于是想学一下. * 1.于是打算先在自己的vps上安装一个mongodb:[ https://docs.mongodb.org/manual/tu ...