构建RequestDelegate管道
1. 创建 Context.cs
using System;
using System.Threading.Tasks; namespace MyPipeline
{
public class Context{ }
}
2. 创建 RequestDelegate.cs
using System;
using System.Threading.Tasks; namespace MyPipeline
{
public delegate Task RequestDelegate(Context context);
}
3. 具体实现
using System;
using System.Collections.Generic;
using System.Threading.Tasks; namespace MyPipeline {
class Program { public static List < Func < RequestDelegate, RequestDelegate >> _list = new List < Func < RequestDelegate, RequestDelegate >> ();
static void Main(string[] args) { Use(next => {
return context => {
System.Console.WriteLine("");
return next.Invoke(context);
};
}); Use(next => {
return context => {
System.Console.WriteLine("");
return next.Invoke(context);
};
}); RequestDelegate end = (context) => {
System.Console.WriteLine("end ... ");
return Task.CompletedTask; }; _list.Reverse();
foreach (var middleware in _list) {
end = middleware.Invoke(end); } end.Invoke(new Context()); Console.ReadLine(); } public static void Use(Func < RequestDelegate, RequestDelegate > middleware) {
_list.Add(middleware);
}
}
}
4. 运行结果
end ...
构建RequestDelegate管道的更多相关文章
- 【ASP.NET Core快速入门】(八)Middleware管道介绍、自己动手构建RequestDelegate管道
中间件是汇集到以处理请求和响应的一个应用程序管道的软件. 每个组件: 可以选择是否要将请求传递到管道中的下一个组件. 之前和之后调用管道中的下一个组件,可以执行工作. 使用请求委托来生成请求管道. 请 ...
- 菜鸟入门【ASP.NET Core】8:Middleware管道介绍、自己动手构建RequestDelegate管道
中间件:是汇集到以处理请求和响应的一个应用程序管道的软件. 每个组件: 可以选择是否要将请求传递到管道中的下一个组件. 之前和之后调用管道中的下一个组件,可以执行工作. 使用请求委托来生成请求管道. ...
- 任务29:自己动手构建RequestDelegate管道
cmd创建一个控制台应用程序 dotnet new console --name MyPipeline 用VSCode打开这个项目 新建类RequestDelegate.cs的类文件复制Program ...
- 29-自己动手构建RequestDelegate管道
1-使用vsCode新建个项目 2-新建RequestDelegate和Context public delegate Task RequestDelegate(Context context); p ...
- .net core 2.0学习记录(四):Middleware使用以及模拟构建Middleware(RequestDelegate)管道
.net Core中没有继续沿用以前asp.net中的管道事件,而是开发了一个新的管道(Middleware): public class MiddlewareDemo { private reado ...
- 任务28:RequestDelegate管道实现思路
任务28:RequestDelegate管道实现思路 管道的实现机制 RequestDelegate是管道的核心.ApplicationBuilder就是接收了很多个RequestDelegae把它拼 ...
- Kafka笔记7(构建数据管道)
构建数据管道需要考虑的问题: 及时性 可靠性 高吞吐量和动态吞吐量 数据格式 转换 安全性 故障处理能力 耦合性与灵活性 数据管道的构建分为2个阵营,ETL和ELT ETL:提取- ...
- ASP.NET Core Middleware管道介绍
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.Use(async (context, ne ...
- asp.net core WebAPI学习以及 发布(***入门学习)
A asp.net Core 系列[一]——创建Web应用 asp.net Core 系列[二]—— 使用 ASP.NET Core 和 VS2017 for Windows 创建 Web API a ...
随机推荐
- html5移动开发。
禁止滚动 $('#idl').bind("touchmove",function(e){ e.preventDefault(); }); 图片居中 (因为图片比较特别,所以需要在外 ...
- spring mvc , spring data jpa 知识点
<mvc:view-controller path="/login" view-name="login.jsp"/> <!-- 会直接跳到/W ...
- Python os.chmod
os.chmod(path,mode) 这个方法应该很简单,只需要2个参数,一个是路径,一个是说明路径的模式,下面列出了这个用法中可以使用的一些常用的模式: stat.S_ISUID: Set use ...
- 人类基因组三代组装: cano
git clone https://github.com/marbl/canu.git cd canu/src make -j <number of threads> 使用实例: canu ...
- linux 操作系统rz sz 快速上传和下载文件
## Centos 安装 rz sz yum install lrzsz ### Ubuntu 安装 apt-get install lrzsz
- js把一个数组插入到另一个数组的指定位置
var arr1 = ['a', 'b', 'c']; var arr2 = ['1', '2', '3']; // 把arr2 变成一个适合splice的数组(包含splice前2个参数的数组) a ...
- sqlserver实现分页的几种方式
sqlserver实现分页的几种方式 第一种:使用org.springframework.data.domain.Page来进行分页 package com.cellstrain.icell.repo ...
- slice、substring、substr
slice() 定义和用法 slice() 方法可从已有的数组中返回选定的元素. string.slice(start, end)提取一个字符串 string.substring(start, end ...
- 信息管理代码分析<一>登录密码
题解:这段代码的要求如下,输入一段字符密码(长度<=8)以二进制的形式存放在磁盘中,在输入时需要验证两次输入是否正确.第二个,登录.从磁盘中读取这个文件,然后再输入密码,看两者是否相同. 登录密 ...
- WPF MediaKit的一点问题
原版WPF MediaKit在捕获摄像头视频时,如果不使用640*480分分辨率输出,会出现NewVideoSample事件不被触发的问题. 经数日摸索,终于明白SetVideoCapturePara ...