搭建一套开发框架读书笔记整理

举报
花溪 发表于 2021/06/19 02:57:01 2021/06/19
【摘要】 今天主要学习内容知识点回顾:Asp. NET Core 从入门到学会如何做一个安全可复用的框架5.1 为什么 Restful API如此流行ASP.NET Core框架不规定用于创建服务的任何特定的体系结构样。首先了解一下什么是REST。REST指的是一组架构约束条件和原则,满足这些约東条件和原则的应用程序或设计就是 RESTful。REST首次出现在 Roy Fielding于2000年发...

今天主要学习内容知识点回顾:Asp. NET Core 从入门到学会如何做一个安全可复用的框架

5.1 为什么 Restful API如此流行

ASP.NET Core框架不规定用于创建服务的任何特定的体系结构样。
首先了解一下什么是REST。REST指的是一组架构约束条件和原则,满足这些约東条件和原则的应用程序或设计就是 RESTful。REST首次出现在 Roy Fielding于2000年发表的博士论文中。它是一种架构模式,用于创建使用HTTP作为其基础通信方式的AP。REST体系结构模式指定了系统应遵守的一组约束,即REST约束。

RESTful约束用于限制服务器端只能遵循这些约束来处理和响应客户端请求,而遵循这些约束服务也可以获取理想的非函数化的属性,比如性能、可伸缩性、简单程度、可变能力、可见度灵活性和可信度。

如果任何一个服务违背了其中一个原则,则不能被称作 RESTful系统

  • 客户端服务器约束:这是第一个约束。客户端发送请求,服务器发送响应。服务器架构背后的原则一一关注点分离。通过分离用户界面和数据存储这两个关注点,提高了用户界面跨平台的可能性,通过简化服务器组件提高了其可伸缩性
  • 无状态约束:客户端和服务器之间的通信在请求之间必须是无状态的。这意味着我们不应该在与客户端相关的服务器上存储任何内容。来自客户端的请求应包含服务器处理该请求的所有必要信息。这样可以确保服务器独立处理每个请求
  • 可缓存约束:服务器提供的某些数据(如产品列表或公司的部门列表)不会经常更改。此约束表明,应让客户端知道该数据的有效期为多长时间,这样客户端就不必一次又一次地通过服务器获取该数据了,比如网页缓存
  • 统一接口约束:定义了客户端和服务器之间的接口。要了解统一的接口约束,我们需要了解什么是资源以及HTTP谓词(GETPUT、PoST和 DELETE)。在 RESTful AP的数据库上下文中,资源通常代表数据实体,产品、员工、客户等都是资源。每个请求发送的HTP谓词(GET、PUT、PoST和 DELETE)告诉AP如何处理资源。每个资源都由特定的UR(统一资源标识符)标识,具体如表

5.2 ASP.NET Core中的 WEB API

Swashbuckle. AspNetCore有如下3个主要组件

  • Swashbuckle. AspNet core. Swagger:将 Swagger对象模型和中间件转换为SwaggerDocument对象,然后作为公开JSON
  • Swashbuckle. AspNetCore Swagger Gen:是一个 Swagger生成器,可以将SwaggerDocument从路由、控制器和模型中直接生成对象。它通常与 Swagger中间件结合,以生成自动公开的 Swagger JSON
  • Swashbuckle. AspNetcore. Swagger:它是一个嵌入式的多版本 Swagger UI工具。它可以解析 Swagger JSON来构建丰富的、可定制的界面,以呈现 Web ap功能它还包含一些内置的公共方法测试工具。
  • Swashbuckle.AspNetCore会去解析OpenAPI的规范和协议,所以无需手动维护他们了。
  • 要配置多版本API隔离配置SwaggerUI即可。

5.3 图形可视化的 WEBAPI帮助页

在代码中,映射用于生成与 Web Apl项目相匹配的XML文件名。 App Context. Base Directory属性用于生成XML文件的路径。请注意,注释的XML文件只会在 Debug模式下生成,因此需要通过环境判断,否则发布到生产环境的时候会触发异常。
运行项目,导航到http://localhost:13380/ swagger/ index. html,页面如图所示。
Swashbuckle. AspNetcore组件还提供了很多强大的功能,主要包括以下几种。

  • 自定义皮肤。
  • 多版本切换。
  • 如何集成授权验证。

5.4 实践多层架构体系

按照领域驱动设计的基本理念,现在我们需要添加多个类库,分别对应领域驱动设计中的展现层、应用层、领域层、基础设施层,结构说明如下。

  • MockSchoolManagement Mvc即领域驱动中的展现层
  • MockSchoolManagement. Application即领域驱动中的应用层
  • MockSchoolManagement Core即领域驱动中的领域层
  • MockSchoolManagement. Entity Framework Core即领域驱动中的基础设施层
实体类仅负责数据库表结构的呈现与持久化。
领域层业务对象和业务规则,这是应用程序的核心层,用于存放领域实体及重要逻辑的实现。
基础设施层,仓储可通过ORM来实现数据库交互,或者提供发送邮件的支持,即当前DataRepositories文件夹中的仓储服务


配套源码:yoyomooc / MockSchool · GitLab  https://code.52abp.com/yoyomooc/MockSchool

学习任重而道远,加油!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。