广汉市建设局网站赣榆区城乡建设局网站

diannao/2026/1/17 22:58:32/文章来源:
广汉市建设局网站,赣榆区城乡建设局网站,微信 网站模板,比较好的做简历的网站1. 引言 对于ASP.NET Core应用程序来说#xff0c;我们要记住非常重要的一点是#xff1a;其本质上是一个独立的控制台应用#xff0c;它并不是必需在IIS内部托管且并不需要IIS来启动运行#xff08;而这正是ASP.NET Core跨平台的基石#xff09;。ASP.NET Core应用程序拥… 1. 引言 对于ASP.NET Core应用程序来说我们要记住非常重要的一点是其本质上是一个独立的控制台应用它并不是必需在IIS内部托管且并不需要IIS来启动运行而这正是ASP.NET Core跨平台的基石。ASP.NET Core应用程序拥有一个内置的Self-Hosted自托管的Web ServerWeb服务器用来处理外部请求。 不管是托管还是自托管都离不开Host宿主。在ASP.NET Core应用中通过配置并启动一个Host来完成应用程序的启动和其生命周期的管理如下图所示。而Host的主要的职责就是Web Server的配置和Pilpeline请求处理管道的构建。 这张图描述了一个总体的启动流程从上图中我们知道ASP.NET Core应用程序的启动主要包含三个步骤 CreateDefaultBuilder()创建IWebHostBuilder Build()IWebHostBuilder负责创建IWebHost Run()启动IWebHost 所以ASP.NET Core应用的启动本质上是启动作为宿主的WebHost对象。 其主要涉及到两个关键对象IWebHostBuilder和IWebHost它们的内部实现是ASP.NET Core应用的核心所在。下面我们就结合源码并梳理调用堆栈来一探究竟 2. 宿主构造器IWebHostBuilder 在启动IWebHost宿主之前我们需要完成对IWebHost的创建和配置。而这一项工作需要借助IWebHostBuilder对象来完成的ASP.NET Core中提供了默认实现WebHostBuilder。而WebHostBuilder是由WebHost的同名工具类Microsoft.AspNetCore命名空间下中的CreateDefaultBuilder方法创建的。 从上图中我们可以看出CreateDefaultBuilder()方法主要干了六件大事 UseKestrel使用Kestrel作为Web server。 UseContentRoot指定Web host使用的content root内容根目录比如Views。默认为当前应用程序根目录。 ConfigureAppConfiguration设置当前应用程序配置。主要是读取 appsettinggs.json 配置文件、开发环境中配置的UserSecrets、添加环境变量和命令行参数 。 ConfigureLogging读取配置文件中的Logging节点配置日志系统。 UseIISIntegration使用IISIntegration 中间件。 UseDefaultServiceProvider设置默认的依赖注入容器。 创建完毕WebHostBuilder后通过调用UseStartup()来指定启动类来为后续服务的注册及中间件的注册提供入口。 3. 宿主IWebHost 在ASP.Net Core中定义了IWebHost用来表示Web应用的宿主并提供了一个默认实现WebHost。宿主的创建是通过调用IWebHostBuilder的Build()方法来完成的。那该方法主要做了哪些事情呢我们来看下面这张【ASP.NET Core启动流程调用堆栈】中的黄色边框部分 其核心主要在于WebHost的创建又可以划分为三个部分 构建依赖注入容器初始通用服务的注册BuildCommonService(); 实例化WebHostvar host new WebHost(...); 初始化WebHost也就是构建由中间件组成的请求处理管道host.Initialize(); 3.1. 注册初始通用服务 BuildBuildCommonService方法主要做了两件事 查找HostingStartupAttribute特性以应用其他程序集中的启动配置 注册通用服务 若配置了启动程序集则发现并以IStartup类型注入到IOC容器中 3.2. 创建IWebHost public IWebHost Build(){ //省略部分代码var host new WebHost(applicationServices,hostingServiceProvider,_options,_config,hostingStartupErrors);}host.Initialize(); return host; } 3.3. 构建请求处理管道 请求管道的构建主要是中间件之间的衔接处理。 而请求处理管道的构建又包含三个主要部分 注册Startup中绑定的服务 配置IServer 构建管道 请求管道的构建主要是借助于IApplicationBuilder相关类图如下 4. 启动WebHost WebHost的启动主要分为两步 再次确认请求管道正确创建 启动Server以监听请求 启动 HostedService 4.1. 确认请求管道的创建 从图中可以看出第一步调用Initialize()方法主要是取保请求管道的正确创建。其内部主要是对BuildApplication()方法的调用与我们上面所讲WebHost的构建环节具有相同的调用堆栈。而最终返回的正是由中间件衔接而成的RequestDelegate类型代表的请求管道。 4.2. 启动Server 我们先来看下类图 从类图中我们可以看出IServer接口主要定义了一个只读的特性集合属性、一个启动和停止的方法声明。在创建宿主构造器IWebHostBuilder时我们通过调用UseKestrel()方法指定了使用KestrelServer作为默认的IServer实现。其方法申明中接收了一个IHttpApplicationTContext application的参数从命名来看它代表一个Http应用程序我们来看下具体的接口定义 其主要定义了三个方法第一个方法用来创建请求上下文第二个方法用来处理请求第三个方法用来释放上下文。而至于请求上下文是用来携带请求和返回响应的核心参数其贯穿与整个请求处理管道之中。ASP.NET Core中提供了默认的实现HostingApplication其构造函数接收一个RequestDelegate _application也就是链接中间件形成的处理管道用来处理请求。 var httpContextFactory _applicationServices.GetRequiredServiceIHttpContextFactory();var hostingApp new HostingApplication(_application, _logger, diagnosticSource, httpContextFactory); 4.3. 启动IHostedService IHostedService接口用来定义后台任务通过实现该接口并注册到Ioc容器中它会随着ASP.NET Core 程序启动而启动终止而终止。 5. 总结 结合源码通过对ASP.NET Core运行调用堆栈的梳理其启动流程的总体脉络一目了然并且了解到主要的几个关键对象 负责创建IWebHost的宿主构造器IWebHostBuilder 代表宿主的IWebHost接口 用于构建请求管道的IApplicationBuilder 中间件衔接而成的RequestDelegate 代表Web Server的IServer接口 贯穿请求处理管道的请求上下文HttpContext 可以用来注册后台服务的IHostedService接口 这一节就先从总体上对ASP.NET Core的运行原理有个基本的认识后续我们再一一讲解这几个核心对象来加深理解。 原文地址 http://www.cnblogs.com/sheng-jie/p/7640163.html  .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/90912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

唐山网站托管四川网站建设贴吧

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务,并且需要GPU资源,可以考虑使用Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时,并附带200G…

特价做网站wordpress快速加载

每日推荐一篇专注于解决实际问题的外文,精准翻译并深入解读其要点,助力读者培养实际问题解决和代码动手的能力。 欢迎关注公众号(NLP Research),及时查看最新内容 原文标题:Building an Open Source Multi-Modal RAG System 原文地址:https://medium.com/nadsoft/buil…

网站开发遇到什么问题电商网站建设实训报告

还有不到十天,除夕就要到了。近几年春节假期中,有人第一次带着孩子直击海面冰风,坐船回老家;也有人选择“漫游”国内外,在旅行中迎接新春的朝气。合合信息旗下扫描全能王APP通过AI扫描技术,提供了一种全新的…

机器人网站建设如何对网站的文件和资源进行优化?

差分和前缀和都是算法里边比较重要的知识点,不过学习的难度并不高,这篇文章会讲解相关的内容。 1. 前缀和怎么玩 1)一维前缀和 在该数之前,包括该数的所有数之和,有点类似高中学的数列的前n项和Sn。 2)二维…

网站后台系统淘宝放单网站怎么做的

监控系统的多协议直播(RTSP RTMP HTTP Live Streaming) 转载于:https://www.cnblogs.com/cl1024cl/p/6204791.html

电子商务网站建设的工具建网站需要有啥能力

前言: 在上篇文章中,用Java语言创建的Spring Boot项目中,如何传递数组呢??-CSDN博客,我们了解到Spring Boot项目中如何传递数组,但是,对于同类型的List集合,我们又该如何…

海淀教育互动平台网站建设网站制作 南京

正整数的十进制转换二进制将一个十进制数除以二,得到的商再除以二,依此类推直到商等于一或零时为止,倒取除得的余数,即换算为二进制数的结果。只需记住要点:除二取余,倒序排列。由于计算机内部表示数的字节…

专业宁波seo排名如何优化

国学,一国所固有之学术也。国学和文学数学的意思不同,并非是国家之学或者治国之学。一般来说,国学是指以儒学为主体的中华传统文化与学术。国学是中国传统文化与学术,也包括了医学、戏剧、书画、星相、数术等等。广义上&#xff0…

泉州市建设工程交易网站hao123上网导航

当 AI 开发者社区配备 AI 基础设施开发平台工具时,它还能做什么? 答案是:过去半年,和鲸社区凭借在气象、医学、社科等垂直领域的长期积累以及多方伙伴的支持,联合举办了三场新书发布会——从 Python 到 R 语言 、从气…

做网站推广利润安康网站开发公司价格

Python2 还是 Python3 ? py2.7是2.x系列的最后一个版本,已经停止开发,不再增加新功能。2020年终止支持。 所有的最新的标准库的更新改进,只会在3.x的版本里出现。Python3.0在2008年就发布出来,而2.7作为2.X的最终版本并…

北京西站咨询服务电话怀化网页

2018武汉大学计算机考研复试经验贴武汉大学发布于2019年9月22日 12:25阅读数 18196初试唯一要讲的就是专业课问题,今年专业课改革,只考两门专业课。一门是数据结构,分值为90分,只有选择题和代码题,大概24个选择题&…

点餐网站模板郑州企业做网站

目录 1、简单的模版 2、简单的案例 2.1、python 执行.py 文件 2.2、调式多个文件 2.3、torchrun、deepspeed 调试 1、简单的模版 定义一个简单的模版如下: {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访…

网站忧化教程网站制作价钱多少

扩展的视图类介绍 rest_framework提供了几种后端视图(对数据资源进行增删改查)处理流程的实现,如果需要编写的视图属于这几种,则视图可以通过继承相应的扩展类来复用代码,减少自己编写的代码量 官网:3 - Class based views - Django REST framework rest_framework.mixi…

做养生网站需要什么资质wordpress安装教程视频

表现: vscode 代码文件格式化之后,反而出现红色波浪线,提示 应该换行/缩进不正确 等等格式不规范之类的信息。 原因: 因为同时开启了两个格式化插件,且两者的规则有冲突。 就我自己的情况而言:格式化代…

网站空间和服务器的区别办公管理系统软件

制造企业设备管理和维护对于生产效率和成本控制至关重要。然而,传统的维护方法往往无法准确预测设备故障,导致生产中断和高额维修费用。为了应对这一挑战,越来越多的制造企业开始采用预测性维护技术。 预测性维护是通过传感器数据、机器学习和…

运用photoshop设计网站首页无锡网站建设开发

非常荣幸地通知您,华为认证HCIA-AI Solution V1.0(中文版)预计将于2024年4月30日正式对外发布。 为了帮助您做好学习、培训和考试计划,现进行预发布通知,请您关注。 01 发布概述 基于“平台生态”战略,围绕…

专门做特卖的网站下载手机微信

1、activemq.xml置文件新增如下内容 2、mqttx测试发送: 主题(配置的模糊匹配,为了并发):VirtualTopic/device/sendData/12312 3、mqtt接收的结果 4、程序处理 package comimport cn.hutool.core.date.DateUtil; imp…

怎么在网站里做关键词优化炫酷个人网站php源码

java -jar xxx.jar java -jar 是一个用于在命令行界面中执行 Java 可执行 JAR 文件的命令。它的语法如下&#xff1a; java -jar <JAR 文件路径> [参数]其中&#xff1a; java 是 Java 运行时环境的可执行文件。-jar 是一个选项&#xff0c;表示要执行的文件是一个 JA…

网站开发环境有哪些网页制作与网站建设宝典扫描版pdf

来源&#xff1a;资本实验室数字孪生是近几年兴起的非常前沿的新技术&#xff0c;简单说就是利用物理模型&#xff0c;使用传感器获取数据的仿真过程&#xff0c;在虚拟空间中完成映射&#xff0c;以反映相对应的实体的全生命周期过程。在未来&#xff0c;物理世界中的各种事物…