做品牌设计网站,一个网站如何做cdn加速器,宁波网站推广方式定制公司,深夜小网站#x1f680;前言 本文是《.Net Core进阶编程课程》教程专栏的导航站#xff08;点击链接#xff0c;跳转到专栏主页#xff0c;欢迎订阅#xff0c;持续更新…#xff09;
专栏介绍#xff1a;通过源码实例来讲解Asp.Net Core进阶知识点#xff0c;让大家完全掌握每一…前言 本文是《.Net Core进阶编程课程》教程专栏的导航站点击链接跳转到专栏主页欢迎订阅持续更新…
专栏介绍通过源码实例来讲解Asp.Net Core进阶知识点让大家完全掌握每一个知识点。
专栏适用于人群Web后端开发人员 ————————————————
本课程内容
1、动态Web API背景
2、动态Web API实现原理
3、识别自定义控制器 一、动态Web API背景
一说到动态Web API很多人都是因为使用ABP框架了解的。在讲解如何实现之前我们了解下动态Web API的好处
在DDD框架中领域层和应用层是核心、所有业务处理与逻辑全部放在这两个层而API层是只是薄薄的一层。
比如DDD教程里的API代码都是只有2行代码。 这样就存在2个问题
1、每一个对外提供的API接口我们都需要编写这些都很机械化的代码。
2、EletricAuthorize权限验证其实是属于应用层的但这边被放在API层。
而通过动态Web API可以减少代码量、提升工作效率等诸多好处。
二、动态Web API实现原理
2.1 应用程序部件
我们之所以可以实现动态Web API要归功于Asp.net Core为我们提供的应用程序部件。
在Asp.Net Core架构里MVC控制器、视图组件、Razor Pages、Razor 视图、标记帮助程序Tag Helpers等都是一个独立的功能组件它允许我们通过发现并加载应用程序中的特定功能组件。
比如Web API只需加载MVC控制器、MVC架构的程序需要加载MVC控制器、视图组件。
比如官方文档里示例里就是通过加载外部的DLL库来加载控制器。 官方文档地址https://learn.microsoft.com/zh-cn/aspnet/core/mvc/advanced/app-parts?viewaspnetcore-8.0 2.2 独立控制器项目示例
下面用一个示例来演示下如何使用。
2.2.1 新建Web API项目 项目名称Electric.DynamicWebAPI 为了后续方便调试勾选启用OpenAPI框架版本这里选择.Net 7.0这里可以根据需求自行选择。 添加后的目录 2.2.2 新建控制器项目
选择类库项目 项目名称Electric.Controller 框架.Net 7.0 添加后的目录 2.2.3 新增控制器
在项目Electric.Controller新增控制器TestController。 TestController代码
using Microsoft.AspNetCore.Mvc;namespace Electric.Controller
{[ApiController][Route([controller])]public class TestController : ControllerBase{[HttpGet]public string GetName(){return GetName;}}
}
2.2.4 编译项目Electric.Controller
编译后把dll拷贝至 Electric.DynamicWebAPI项目bin目录下。 2.2.5 Electric.DynamicWebAPI加载控制器
在Program.cs加载程序集dll。 当然了如果Electric.DynamicWebAPI如果引用了项目TestControllerAsp.Net Core框架会默认扫描所有控制器就不需要添加上面的代码。 //加载控制器var assembly Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory Electric.Controller.dll);builder.Services.AddControllers().AddApplicationPart(assembly);
2.2.6 运行项目
运行项目后我们就可以看到控制器TestController已经被加载了。 2.3 ApplicationPartManager
通过官方文档和上面的演示知道Asp.Net Core为我们提供了ApplicationPartManager来方便我们根据需求来加载各种组件比如控制器组件、视图组件等。
官方文档也告诉我们通过AddApplicationPart和ConfigureApplicationPartManager都可以实现加载组件。 3、识别自定义控制器
3.1 问题
看完上面的例子可能会有很多人会产生一个问题你定义的控制器是继承了ControllerBaseAsp.Net Core可以自动识别但是我们在DDD框架中编写的可是应用服务不会去继承ControllerBase。 3.2 检查应用程序部件
针对上面的问题我们就需要用到检查应用程序部件。 Asp.net Core也为我们提供了检查应用程序部件的方法通过这些功能提供程序我们就可以告诉
Asp.net Core哪一个是控制器。 3.3 ApplicationPartManager 定义
我们通过ApplicationPartManager的源码定义看我们就可以很清楚的知道。
我们要实现动态API只需两个步骤
1、为ApplicationParts加载程序集资源
2、为FeatureProviders添加检查应用程序部件的方法告诉Asp.net Core哪一个是控制器。 四、最后
【.Net动态Web API】背景与实现原理就介绍到这边啦
下一个课程讲解如何实现动态控制器
这个系列预计一天一篇文章想要学习的可以关注起来
文章会持续更新大家有想要了解的功能点或者话题可以在评论区告诉我
【本课程源码下载链接】加我xgbbwj