首页 > 编程语言 >第一章:开始使用ASP.NET Core (三)

第一章:开始使用ASP.NET Core (三)

时间:2022-12-02 12:22:15浏览次数:48  
标签:Core ASP HTTP 请求 web ASPNETCore 应用程序 服务器 NET

1.3  ASPNETCore如何工作?

到目前为止,您应该对ASPNETCore是什么有一个基础的了解。在本节中,您将看到使用ASPNETCore构建的应用程序是如何工作的,从用户请求URL到如何在浏览器中显示页面。首先,您将看到HTTP请求在web服务器如何处理,然后您将看到ASPNETCore如何扩展该过程以创建动态网页。

1.3.1  HTTP web请求如何工作?

如您所知,ASPNETCore是一个用于构建从服务器提供数据的web应用程序的框架。web开发人员最常见的场景之一是构建一个可以在web浏览器中查看的web应用程序。图1.8显示了所有web服务器的工作流程。

 

 图1.8 请求网页。用户首先通过网页发送请求,这将导致向服务器发送HTTP请求。服务器解释请求,生成必要的HTML,并以HTTP响应形式将其发送回。然后浏览器可以显示网页。

 当用户导航到网站或在浏览器中键入URL时,该过程开始。URL或web地址由主机名和web应用程序上某些资源的路径组成。在浏览器中导航到该地址将使用HTTP协议从用户的计算机向web应用所在的服务器发送请求。

定义:网站的主机名通过域名服务(DNS)映射到IP地址来唯一标识其在互联网上的位置。示例包括microsoft.com,www.google.co.uk和facebook.com。

该请求通过互联网,可能到达世界的另一端,直到它最终到达与给定主机名相关联的服务器,web应用程序在该服务器上运行。该请求可能会在途中的多个路由器上被接收和重新广播,但只有当它到达与主机名相关联的服务器时,请求才会被处理。

HTTP简介
超文本传输协议(HTTP)是支持web的应用程序级协议。它是一种无状态请求响应协议,客户端机器向服务器发送请求,服务器依次发送响应。
每个HTTP请求都包含一个表示请求“类型”的动词和一个表示要与之交互的资源的路径。当向服务器发送数据时,它们通常还包括标头(即键值对),在某些情况下还包括正文(例如表单的内容)。
HTTP响应包含状态代码,指示请求是否成功,以及可选的标头和正文。
有关HTTP协议本身以及更多示例的更详细信息,请参见Sau Sheong Chang(Manning,2016)的《Go Web Programming》中的第1.3节(“HTTP简介”),https://livebook.manning.com/book/go-web-programming/chapter-1/point-9018-55-145-1。

 一旦服务器接收到请求,它将检查请求是否合理,如果合理,它将生成HTTP响应。根据请求,该响应可以是网页、图像、JavaScript文件或简单的确认。在本例中,假设用户已经访问了web应用程序的主页,因此服务器会使用一些HTML进行响应。HTML被添加到HTTP响应中,然后通过互联网发送回发出请求的浏览器。

一旦用户的浏览器开始接收HTTP响应,它就可以开始在屏幕上显示内容,但HTML页面也可能引用服务器上的其他页面和链接。要显示完整的网页,而不是静态、无色的原始HTML文件,浏览器必须重复请求过程,获取每个引用文件。HTML、图像、用于样式的CSS和用于额外行为的JavaScript文件都是使用完全相同的HTTP请求过程获取的。

几乎所有发生在互联网上的互动都是这个基本过程。一个基本的网页可能只需要几个简单的请求就可以完全呈现,而一个现代的大型网页可能需要数百个请求。在撰写本文时,亚马逊主页(www.amazon.com)发出606个请求,其中包括3个CSS文件、12个JavaScript文件和402个图像文件!

既然现在您已经了解了该过程,让我们看看ASPNETCore如何在服务器上动态生成响应。

1.3.2  ASPNETCore如何处理请求?

使用ASPNETCore构建web应用程序时,浏览器仍将使用与以前相同的HTTP协议与应用程序通信。ASPNETCore本身包含了在服务器上处理请求所要求的一切,包括验证请求是否有效、处理登录详细信息以及生成HTML。

与通用网页示例一样,当用户的浏览器向服务器发送HTTP请求时,请求过程开始,如图1.9所示。

 

 图1.9  ASPNETCore应用程序如何处理请求。ASPNETCore应用程序接收请求,该应用程序运行自托管web服务器。web服务器处理请求并将其传递给应用程序主体,后者生成响应并将其返回给web服务器。web服务器将此响应发送到浏览器。

ASPNETCore应用程序从网络接收请求。每个ASPNETCore应用程序都有一个内置的web服务器,默认情况下是Kestrel,它负责接收原始请求并构造数据的内部表示,即HttpContext对象,该对象可供应用程序的其他部分使用。

从这个对象中,应用程序应该具有创建对请求的适当响应所需的所有细节。它可以使用存储在HttpContext中的详细信息来生成适当的响应,这可能是生成一些HTML、返回“拒绝访问”消息或发送电子邮件,所有这些都取决于应用程序的要求。

应用程序完成处理请求后,将向web服务器返回响应。ASPNETCore web服务器将表示转换为原始HTTP响应并将其发送到网络,网络将其转发到用户的浏览器。

 对于用户来说,这个过程似乎与图1.8所示的通用HTTP请求相同,用户发送了一个HTTP请求并收到了一个响应。所有的区别都是服务器端的应用程序中。

ASPNETCore和反向代理
您可以将ASPNETCore应用程序直接暴露到internet,以便Kestrel直接从网络接收请求。然而,在原始网络和应用程序之间使用反向代理更为常见。在Windows中,反向代理服务器通常是IIS,而在Linux或macOS上,它可能是NGINX、HAProxy或Apache。
反向代理是负责接收请求并将其转发到适当的web服务器的软件。反向代理直接暴露于互联网,而底层web服务器仅暴露于代理。此设置具有多种好处,主要是web服务器的安全性和性能。
您可能认为拥有反向代理和web服务器有些多余。为什么不选一个呢?其中一个好处是应用程序与底层操作系统的分离。同一个ASPNETCore web服务器Kestrel可以跨平台使用,并且可以在各种代理后面使用,而不会对特定的实现施加任何限制。或者,如果您编写了一个新的ASPNETCore web服务器,您可以使用它来代替Kestrel,而无需更改应用程序的其他任何内容。
反向代理的另一个好处是它可以抵御来自公共互联网的潜在威胁。他们通常负责其他方面,例如重新启动已崩溃的进程。Kestrel仍然是一个简单的HTTP服务器,在反向代理后面使用时,不必担心这些额外的功能。将其视为关注点的简单分离:Kestrel关注生成HTTP响应;反向代理与处理到internet的连接有关。

您已经看到了请求和响应是如何往返于ASPNETCore应用程序的,但我还没有谈到响应是如何生成的。在本书的第1部分中,我们将了解构成典型ASPNETCore应用程序的组件以及它们如何组合在一起。在ASPNETCore中生成响应需要时间,通常都在一秒钟内完成,但在本书的过程中,我们将缓慢地完成一个应用程序,详细介绍每个组件。

1.4 你将在本书中学到什么

本书将带您深入了解ASPNETCore框架。要从书中受益,您应该熟悉C#或类似的面向对象语言。对HTML和JavaScript等web概念的基本熟悉也将是有益的。你会学到

  • 如何使用Razor Pages创建基于页面的应用程序
  • ASPNETCore的关键概念,如模型绑定、验证和路由
  • 如何使用Razor语法和标记帮助程序为网页生成HTML
  • 在应用程序变得更复杂时使用依赖注入、配置和日志记录等功能
  • 如何使用最安全的办法来保护应用程序

在本书中,我们将使用各种示例来学习和探索概念。这些示例通常都很小且独立,因此我们可以一次专注于单个功能。

我将在本书的大部分示例中使用Visual Studio,但您将能够使用您喜爱的编辑器或IDE进行后续操作。附录A包括设置编辑器或IDE以及安装.NET5.0SDK的详细信息。尽管本书中的示例展示了Windows工具,但在Linux或Mac平台上,您所看到的一切都可以实现得很好。

提示:您可以从以下位置安装.NET 5.0,https://dotnet.microsoft.com/download。附录A包含有关如何配置开发环境以使用ASPNETCore和.NET5.0的更多详细信息。

在下一章中,您将从模板创建第一个应用程序并运行它。我们将详细介绍构成应用程序的每个主要组件,并了解它们是如何协同工作来呈现网页的。

总结(第一章)

  • ASPNETCore是一个以现代软件体系结构和模块化为重点构建的新web框架。
  • 它最适合用于新的“green-field”项目。
  • 传统技术(如WCF服务器和Web表单)不能与ASPNETCore一起使用。
  • ASPNETCore在跨平台.NET 5.0平台上运行。您可以使用Windows兼容包访问Windows特定功能,如Windows注册表。
  •  .NET 5.0是.NET Core 3.1之后的下一个版本。
  • 获取网页涉及发送HTTP请求和接收HTTP响应。
  • ASPNETCore允许您动态构建对给定请求的响应。
  • ASPNETCore应用程序包含web服务器,该服务器充当请求的入口点。
  • ASPNETCore应用程序通常由反向代理服务器保护,该服务器将请求转发到应用程序。

 

标签:Core,ASP,HTTP,请求,web,ASPNETCore,应用程序,服务器,NET
From: https://www.cnblogs.com/SoftwareLife/p/16944061.html

相关文章

  • .NET下实现分布式缓存系统Memcached
    【IT168技术文档】在Web应用程序中,数据通常保存在RDBMS中,应用服务器从数据库中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负载加重、数据......
  • 进程异常core文件分析
    1. core文件相关配置1.1 查看core文件是否开启Corefilesize为0代表关闭core文件,unlimited代表开启core文件。开启core文件以后,代表进程异常以后,会生成core文件。使用......
  • cs231n学习笔记——Lecture 4 Backpropagation and Neural Networks
    该博客主要用于个人学习记录,部分内容参考自:【cs231n】详解神经网络中的反向传播、CS231n笔记三:神经网络之反向传播、超详细斯坦福CS231n课程笔记(第四课)——反向传播和神......
  • vs.net 2010两个数据库方面的好工具
    今天发现vs.net2010在处理数据库方面的两个不错的工具,分别是数据异同比较器和数据架构比较器,使用起来都很简单,要学习的话,可以从下面两个连接......
  • asp.net文件分片上传,断点续传
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传......
  • 关于k3s master与agnet通信的注意事项
    在用virtualbox虚拟机搭建k3s集群的时候最好不要搞双网卡,比如一个网卡连外网另一个网卡通信,在agent连master的时候可能会有问题(本人刚刚经历过),虽然我的有道机翻给......
  • 第一章:开始使用ASP.NET Core (二)
    1.2何时选择ASP.NETCore 希望您现在已经大致了解了ASP.NETCore是什么以及它是如何设计的。但问题仍然存在:你应该使用它吗?微软建议所有新的.NETweb开发都应该使用ASP.......
  • asp.net 2.0中不同web控件之间的相互调用
    在asp.net2.0中,要在不同的web控件之间互相调用,必须要<%@ReferenceVirtualPath="另一控件名称“>来引用,举例如下default.aspx:<formid="form1"runat="server">    ......
  • 感叹:当日的老牌著名微软技术站点asptoday.com全部内容现在免费了,变了microsoft.apress
       今天才发现,当日的老牌著名微软技术站点asptoday.com全部内容现在免费了,变了microsoft.apress.com,当初​​www.asptoday.com​​​是鼎鼎大......
  • 在vs.net 2010中使用重构方法
    在vs.net2010中,可以很方便地对一些冗余的代码进行重构,这里小结的是extractmethod,比如有下面的代码:stringconn=ConfigurationManager.App......