首页 > 其他分享 >10月26日总结

10月26日总结

时间:2023-11-05 09:03:38浏览次数:30  
标签:总结 10 26 CancellationToken IApplicationBuilder host WebApplication IHost IHosted

​ WebApplication 是用于配置HTTP管道和路由的web应用程序,接来下我将一一拆解它的组成。

///


/// The web application used to configure the HTTP pipeline, and routes.
///

[DebuggerDisplay("{DebuggerToString(),nq}")]
[DebuggerTypeProxy(typeof (WebApplication.WebApplicationDebugView))]
public sealed class WebApplication : IHost,IDisposable,IApplicationBuilder,IEndpointRouteBuilder,IAsyncDisposable

IHost

​ 首先Web应用是一个程序,而 IHost 就是程序的抽象

public interface IHost : IDisposable
{
IServiceProvider Services { get; }
Task StartAsync(CancellationToken cancellationToken = default (CancellationToken));
Task StopAsync(CancellationToken cancellationToken = default (CancellationToken));
}

​ 一个程序具备启动、停止生命周期,这很好理解。我要说的是 IServiceProvider ,他非常关键,后面会在依赖注入章节来详细解释。目前你只需要知道他是一个服务供应商就可以了,就可以通过他获取想要的服务,但前提是你在IOC容器中注册过。

​ Host StartAsync 代码流如下:

await host._hostLifetime.WaitForStartAsync(token1).ConfigureAwait(false); // 注册start程序
host.Services.GetService()?.Validate(); // 校验
IHostedLifecycleService.StartingAsync
IHostedService.StartAsync
IHostedLifecycleService.StartedAsync
host._applicationLifetime.NotifyStarted();

​ StopAsync 类似,代码流如下:

IHostedLifecycleService.StoppingAsync
IHostedService.StopAsync
IHostedLifecycleService.StoppedAsync
this._logger.StoppedWithException((Exception) ex);

​ 值得注意的是 IStartupValidator、IHostedService、IHostedLifecycleService 分别为我们提供不同的钩子,只需要向容器注册即可加入我们自定义的业务逻辑。
IApplicationBuilder

​ WebApplication 实现 IApplicationBuilder 具有pipeline机制。

IApplicationBuilder Use(Func<RequestDelegate, RequestDelegate> middleware);
RequestDelegate Build();

​ 这里要解释一下pipeline,管道是.NET中非常普及的一个概念,内核是切面编程,同样的在后续我们会有专门的章节来例举它。现在你只需要知道,他是一个洋葱模型。

​ 同时,IApplicationBuilder 从命名上就表达了这是一个构建者模

标签:总结,10,26,CancellationToken,IApplicationBuilder,host,WebApplication,IHost,IHosted
From: https://www.cnblogs.com/lmyy/p/17810204.html

相关文章

  • 10月30日《需求分析与系统设计》阅读笔记三
    信息系统从定义上就是多用户系统。多个用户和应用程序可以通过数据库管理系统并发访问同一个数据库。应用程序依赖与数据库的不仅仅是数据,还有数据库提供的解决并发冲突、保证数据的安全访问、保证数据一致性、事务错误恢复等功能。类模型和PCBMER子系统中只包含应用类,而不包含数据库结......
  • 10月27日总结
    好,经过上一篇的介绍,实现了Vuex当中的actions方法,接下来我们来实现Vuex当中的模块化共享数据(modules)。modules方法用于模块化共享数据,那么什么叫模块化共享数据呢?其实非常简单。过去我们将所有模块的数据都放到state中共享,例如:我们有三个模块首页/个人中心/登录,那......
  • 10月31日总结
    学习元素之间空白的产生之前,我们需要知道块级元素与行内元素的区别块级元素是会独占一行的,按垂直方向排列。行内元素不会占据整行,在一条直线上排列,都是同一行,按水平方向排列除了块级元素和行内元素,还有一种行内块元素,其实质上也是行内元素,所以多个行内块元素之间也会出现空白间......
  • 10月30日总结
    1.2.2创建APIExtensionsServer创建完通用APIServer后继续创建APIExtensionsServer。func(ccompletedConfig)New(delegationTargetgenericapiserver.DelegationTarget)(*CustomResourceDefinitions,error){genericServer,err:=c.GenericConfig.New("apiextensi......
  • 11月2日总结
    聊聊Transform模型从之前的RNN系列到现在的Transformer模型,是一个演进的过程,技术的实现与迭代并不是一蹴而就,而是一个持续演进的历程。如果一开始就从Tranformer的模型机制来学习,知识的不全面以及欠缺就会导致懵逼甚至看不懂又不理解。RNN系列:聊聊RNN&LSTM聊聊RNN与seq2seq聊......
  • 11月1日总结
    本文从BERT的基本概念和架构开始,详细讲解了其预训练和微调机制,并通过Python和PyTorch代码示例展示了如何在实际应用中使用这一模型。我们探讨了BERT的核心特点,包括其强大的注意力机制和与其他Transformer架构的差异。关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构......
  • 11月3日总结
    你好,我是猫哥。这里每周分享优质的Python、AI及通用技术内容,大部分为英文。标题取自其中一则分享,不代表全部内容都是该主题,特此声明。本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿......
  • win10安装WSL2
    什么是WSL2首先我们理解一下什么是WSLWindowsSubsystemforLinux(简称WSL)是一个在Windows10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工......
  • ABC327 总结
    A傻逼题,降智吃了一发罚时。B依旧是傻逼题,std::pow炸精度又吃了一发罚时。C傻逼题,切了D发现就是个判断二分图,切了。E一眼丁真,感觉最后一个一定是最大的,然后就是求以最大的结尾的LIS。交上去,喜提WA29。转变思路,考虑dp。设\(f_{i,j}\)表示当前选了\(i\)个(从后往......
  • 10月杂题记
    CF1875D我们经过思考,容易得出以下结论:如果当前$mex=x$,则下一个删的数一定小于$x$。如果$mex=0$,那么我们就可以不往下算了,因为它们对答案的贡献为$0$。我们设$f[i]$表示当$mex=i$时,$m$的值。则有:$$f[i]=\min(f[j]+(c[i]-1)\timesj+i,f[i])$$其......