Asp.net Core 入门实战 2.请求流程
Asp.Net Core 是开源,跨平台,模块化,快速而简单的Web框架.
Asp.net Core官网的一个源码合集,方便一次性Clone,喜欢的(Star),本系列持续更新,也可以通过我的网站访问,欢迎探讨交流
目录

asp.net core实现了一个跨平台的宿主和web服务器. 一旦你调用了WebHost对象的Start方法,你就运行了一个监听Http请求的Web服务器,它可以运行在32位的linux系统甚至是树莓派上.然而在生产环境还是建议你使用一些反向代理工具,如Nginx,IIs,Apache等.为什么需要反向代理,因为Kestrel只是一个简单的Web服务器,其他语言像java,python,nodejs,ruby,你会看到一些Web服务器PM2或者Passenger结合反向代理工具使用.这些Web服务器提供了监控,日志,负载均衡和流程管理功能,对于一个成熟的Web服务器而言.在Windows平台,你可以使用IIS反向代理,在linux服务器使用nginx/apache来实现反向代理.
宿主
宿主WebHost用来配置服务器和处理请求管道.
public interface IWebHost:IDisposable
{
//从Server加载Http功能接口列表
IFeatureCollection ServerFeatures { get; }
//服务容器
IServiceProvider Services { get; }
// 开始监听端口
void Start();
//启动主机
Task StartAsync(CancellationToken cancellationToken = default(CancellationToken));
//尝试停止主机
Task StopAsync(CancellationToken cancellationToken = default(CancellationToken));
}
Web服务器
Kestrel 是跨平台 HTTP 服务器,它基于 libuv(一个跨平台异步 I/O 库). Web Server实现了IServer接口,实现了Http服务器.
public interface IServer
{
//Http功能接口列表
IFeatureCollection Features { get; }
//开始处理请求
Task StartAsync<TContext>(IHttpApplication<TContext> application, CancellationToken cancellationToken);
// 停止请求处理,关闭服务器,尽可能的不是强制结束,而是等待请求处理结束后再停止
Task StopAsync(CancellationToken cancellationToken);
}
请求委托

Asp.net Core包含了一组请求委托(RequestDelegate),请求委托处理Http请求, 这一组请求委托组成了请求管道.(Pipeline)
中间件(Middleware)
- 为请求委托指定匿名方法,通过 Run、Map 和 Use 扩展方法来配置.
- 为请求委托指定命名方法,通过UseMiddleware<类名称>来配置,通过反射生成类的实例,再调用实例的Invoke方法或者InvokeAsync方法来实例化委托.
HTTP功能接口
Web Server的功能接口集合, 服务器定义的Http 功能接口和相应的中间件.
请求上下文(Context)的功能接口集合,中间件可以更改该功能集合并添加新的HttpFeature接口支持.
迷你的代码示例
以上内容有任何错误或不准确的地方请大家指正,不喜勿喷! 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。
Asp.net Core 入门实战 2.请求流程的更多相关文章
- Asp.net Core 入门实战
Asp.Net Core 是开源,跨平台,模块化,快速而简单的Web框架. Asp.net Core官网的一个合集,方便一次性Clone 目录 快速入门 安装 一个最小的应用 项目模板 路由 静态文件 ...
- net Core 入门实战
Asp.net Core 入门实战 Asp.Net Core 是开源,跨平台,模块化,快速而简单的Web框架. Asp.net Core官网的一个源码合集,方便一次性Clone 目录 快速入门 安 ...
- 通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[下]:管道是如何构建起来的?
在<中篇>中,我们对管道的构成以及它对请求的处理流程进行了详细介绍,接下来我们需要了解的是这样一个管道是如何被构建起来的.总的来说,管道由一个服务器和一个HttpApplication构成 ...
- Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Asp.Net Core 项目实战之权限管理系统(0) 无中生有
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Asp.Net Core 项目实战之权限管理系统(5) 用户登录
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Asp.Net Core 项目实战之权限管理系统(6) 功能管理
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Asp.Net Core 项目实战之权限管理系统(7) 组织机构、角色、用户权限
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
随机推荐
- Python模块之信号学习(signal)
信号概述 在学习Python前应该学习下Linux下的信号,软中断信号(signal,又简称为信号)用来通知进程发生了异步事件.进程之间可以互相通过系统调用kill发送软中断信号.内核也可以因为内部事 ...
- ajax--->简单加法小练习
ajax--->简单加法小练习 index.HTML <!DOCTYPE html> <html lang="en"> <head> &l ...
- windows下apache配置虚拟主机
因为有多个laravel项目需要配置根目录到public下面,所以要配置多个虚拟主机 方法一:添加端口号 第一步:进入apache的目录 Apache24\conf 找到 httpd.conf 文件, ...
- linux(八)linux系统中查找文件二
前面介绍的是find命令,我们发现一个find命令居然有那么多的命令,我看到都要晕了,不管没有关系,加油.相信自己! 一.grep命令 1.1.作用 Linux系统中grep命令是一种强大的文本搜索工 ...
- “玲珑杯”ACM比赛 Round #13 题解&源码
A 题目链接:http://www.ifrog.cc/acm/problem/1111 分析:容易发现本题就是排序不等式, 将A数组与B数组分别排序之后, 答案即N∑i=1Ai×Bi 此题有坑,反正据 ...
- 1022: [SHOI2008]小约翰的游戏John【Nim博弈,新生必做的水题】
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2709 Solved: 1726[Submit] ...
- css实现视差滚动效果
今天逛京东金融的时候发现他家网站首页的滚动效果看着很有意思,于是就做了一个,demo链接http://1.liwenyang.applinzi.com/index.html 大多数的视差滚动效果都是使 ...
- Centos7安装docker-compse踩过的坑
一.概要 本文,我们介绍如何在centos7环境下安装docker-compose, 记录下安装过程步骤以及遇到的问题还有解决办法. 二.安装方式 1.官方安装方式 sudo curl -L ht ...
- Ajax及异步操作
之前我们使用的是jQuery的Ajax,这是一种极为便捷的Ajax操作方式,但是我们还需要对Ajax技术进行进一步的了解. <input type="text" id=&qu ...
- Lucene学习笔记2-Lucene的CRUD(V7.1)
在进行CRUD的时候请注意IndexWriterConfig的设置. public class IndexCRUD { "}; private String citys[]={"j ...