搭建一套开发框架读书笔记整理
今天主要学习内容知识点回顾: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即领域驱动中的基础设施层
配套源码:yoyomooc / MockSchool · GitLab https://code.52abp.com/yoyomooc/MockSchool
学习任重而道远,加油!
- 点赞
- 收藏
- 关注作者
评论(0)