Asp.Net VS ASP.NET Core 请求管道

这篇具有很好参考价值的文章主要介绍了Asp.Net VS ASP.NET Core 请求管道。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


参考链接
ASP.NET CORE 启动过程及源码解读

1 Asp.Net Web Form管道

请求进入Asp.Net工作进程后,由进程创建HttpWorkRequest对象,封装此次请求有关的所有信息,然后进入HttpRuntime类进行进一步处理。HttpRuntime通过请求信息创建HttpContext上下文对象,此对象将贯穿整个管道,直到响应结束。同时创建或从应用程序池里初始化一个HttpApplication对象,由此对象开始处理之前注册的多个HttpModule。之后调用HandlerFactory创建Handler处理程序,最终处理此次请求内容,生成响应返回。

流程图:Asp.Net VS ASP.NET Core 请求管道

Asp.net HttpModule

用处:

  • 权限认证和授权:每个请求都经过Module,所以做权限认证很好
  • URL 转发
  • 发爬虫

ASP.NET 请求处理过程是基于管道模型的,这个管道模型是由多个HttpModule和HttpHandler组成,ASP.NET 把http请求依次传递给管道中各个HttpModule,最终被HttpHandler处理,处理完成后,再次经过管道中的HTTP模块,把结果返回给客户端。我们可以在每个HttpModule中都可以干预请求的处理过程。

注意:在http请求的处理过程中,只能调用一个HttpHandler,但可以调用多个HttpModule。

HttpModule生命周期示意图

Asp.Net VS ASP.NET Core 请求管道

Asp.net HttpHandler

HttpHandler是asp.net真正处理Http请求的地方。在这个HttpHandler容器中,ASP.NET Framework才真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中。

当一个HTTP请求经过HttpModule容器传递到HttpHandler容器中时,ASP.NET Framework会调用HttpHandler的ProcessRequest成员方法来对这个HTTP请求进行真正的处理。以一个ASPX页面为例,正是在这里一个ASPX页面才被系统处理解析,并将处理完成的结果继续经由HttpModule传递下去,直至到达客户端。

对于ASPX页面,ASP.NET Framework在默认情况下是交给System.Web.UI.PageHandlerFactory这个HttpHandlerFactory来处理的。所谓一个HttpHandlerFactory,是指当一个HTTP请求到达这个HttpHandlerFactory时,HttpHandlerFactory会提供出一个HttpHandler容器,交由这个HttpHandler容器来处理这个HTTP请求。

一个HTTP请求都是最终交给一个HttpHandler容器中的ProcessRequest方法来处理的。

可以在一个.ashx文件中实现IHttpHandler
ASP.Net 管道模型 VS Asp.Net Core 管道 总结
https://blog.51cto.com/u_15162069/2748151

2 Asp.Net Core管道

IHttpModule和IHttpHandler不复存在,取而代之的是一个个中间件(Middleware)。
Server将接收到的请求直接向后传递,依次经过每一个中间件进行处理,然后由最后一个中间件处理并生成响应内容后回传,再反向依次经过每个中间件,直到由Server发送出去。

中间件就像一层一层的“滤网”,过滤所有的请求和相应。这一设计非常适用于“请求-响应”这样的场景——消息从管道头流入最后反向流出。
由一个个中间件组成形同http请求管道, 每一个中间件都会做不同的http处理,最后反向流出。
Asp.Net VS ASP.NET Core 请求管道
官方实例中间件流程

Asp.Net VS ASP.NET Core 请求管道
例如:asp.net core MVC 是核心组件 , mvc对应的请求映射到控制器-action等文章来源地址https://www.toymoban.com/news/detail-444725.html

到了这里,关于Asp.Net VS ASP.NET Core 请求管道的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【源码解读】asp.net core源码启动流程精细解读

    【源码解读】asp.net core源码启动流程精细解读

    core出来至今,已经7年了,我接触也已经4年了,从开始的2.1,2.2,3.1,5,6再到如今的7,一直都有再用,虽然我是一个Winform仔,但是源码一直从3.1到7都有再看,然后在QQ上面也一直比较活跃,之前好几年前一直说给大家解读asp.net core源码,在之前的博客中,讲的都是比较粗略

    2024年02月05日
    浏览(13)
  • 使用任务计划开机启动ASP.NET Core应用程序

    使用任务计划开机启动ASP.NET Core应用程序

    ASP.NET Core应用程序现在是一个控制台应用程序,在Windows上直接双击启动,但如果想让开发完成的ASP.NET Core应用程序开机启动,可以将ASP.NET Core应用程序修改成Windows服务运行,但这需要额外添加代码,也可以使用IIS来托管ASP.NET Core应用程序,但可能需要安装一些支持IIS的组件

    2024年02月08日
    浏览(13)
  • 【ASP.NET Core 基础知识】--路由和请求处理--路由概念(二)

    一、路由参数传递方式 1.1 查询字符串参数 在路由中,查询字符串参数是一种常见的方式传递信息。这种方式通过URL中的查询字符串(?key1=value1key2=value2)将参数附加到请求中。在ASP.NET Core中,可以通过以下方式在控制器动作方法中接收查询字符串参数: 在上述例子中,查询

    2024年01月21日
    浏览(186)
  • 【ASP.NET Core 基础知识】--路由和请求处理--路由概念(一)

    在Web应用中,路由是一个至关重要的概念,它负责将用户的请求映射到相应的处理程序,以确保正确的页面或资源被呈现给用户。通过将用户请求与适当的处理程序关联起来,使得应用能够以有序和可维护的方式响应用户的操作。 一、ASP.NET Core路由基础 1.1 路由的定义和作用

    2024年01月19日
    浏览(51)
  • ASP.NET Core如何知道一个请求执行了哪些中间件?

    ASP.NET Core如何知道一个请求执行了哪些中间件?

    需要添加两个Nuget包分别是: Microsoft.AspNetCore.MiddlewareAnalysis 和 Microsoft.Extensions.DiagnosticAdapter ,前者是分析记录中间件核心代码实现后者是用来接收日志输出的,由于是用的DiagnosticSource方式记录日志,所以需要使用DiagnosticListener对象的SubscribeWithAdapter方法来订阅。 这个适配器

    2023年04月09日
    浏览(50)
  • 在 ASP.NET Core Web API 中处理 Patch 请求

    PUT 和 PATCH 方法用于更新现有资源。 它们之间的区别是,PUT 会替换整个资源,而 PATCH 仅指定更改。 在 ASP.NET Core Web API 中,由于 C# 是一种静态语言( dynamic 在此不表),当我们定义了一个类型用于接收 HTTP Patch 请求参数的时候,在 Action 中无法直接从实例中得知客户端提供了哪

    2024年02月04日
    浏览(44)
  • 提示“无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动”,如何解决?

    提示“无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动”,如何解决?

        在aspx网站部署过程中,出现“无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动”的提示,如下图,如何解决? 解决方案1: Web.Config里面 把sessionState 的mode改为\\\"InProc\\\" ;  mode 设置将决定Session信息存储位置,可设置为下面几种类型

    2024年02月15日
    浏览(13)
  • ASP.NET和ASP.NET Core的区别

    ASP.NET和ASP.NET Core是两个不同的Web应用程序框架,它们都是由Microsoft开发的。ASP.NET是Microsoft推出的第一个Web应用程序框架,而ASP.NET Core是其最新版本。本文将介绍ASP.NET和ASP.NET Core的简介和区别。 ASP.NET的简介 ASP.NET是一个基于.NET框架的Web应用程序框架,它是Microsoft推出的第一

    2024年02月16日
    浏览(50)
  • ASP.NET Core教程:ASP.NET Core 程序部署到Windows系统

    ASP.NET Core教程:ASP.NET Core 程序部署到Windows系统

    本篇文章介绍如何将一个ASP.NET Core Web程序部署到Windows系统上。这里以ASP.NET Core WebApi为例进行讲解。首先创建一个ASP.NET Core WebApi项目,使用默认的Values控制器,这里使用Visual Studio 2019创建一个ASP.NET Core 3.1d的WebApi项目。 创建新项目的时候选项ASP.NET Core Web应用程序,如下图所

    2023年04月08日
    浏览(49)
  • ASP.NET Core MVC -- 将视图添加到 ASP.NET Core MVC 应用

    ASP.NET Core MVC -- 将视图添加到 ASP.NET Core MVC 应用

    右键单击“视图”文件夹,然后单击“添加”“新文件夹”,并将文件夹命名为“HelloWorld”。 右键单击“Views/HelloWorld”文件夹,然后单击“添加”“新项”。 在“添加新项 - MvcMovie”对话框中: 在右上角的搜索框中,输入“视图” 选择“Razor 视图 - 空” 保持“名称”框的

    2024年02月13日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包