YARP简介 —— IHttpForwarder

YARP框架中,核心处理类是IHttpForwarder接口,它实现了基础的转发流程:从 HttpContext 创建 Http 查询信息、发送到目标地址,并将响应结果写会HttpContext。

IHttpForwarder特点如下:

  1. 灵活,能根据请求动态选择代理目标
  2. 强大,能修改http请求和响应的头
  3. 支持gRPC或WebSockets这种流式协议
  4. 支持异常处理

它简单灵活,本身是一个反向代理的功能类的。 用它本身是可以非常简单的实现一个反向代理功能的。代码如下:

using Yarp.ReverseProxy.Forwarder ;

var builder = WebApplication . CreateBuilder(args);
builder.Services .AddHttpForwarder (); //添加服务

var httpClient = new HttpMessageInvoker (new SocketsHttpHandler ()
{
UseProxy = false,
AllowAutoRedirect = false ,
});
var requestConfig = new ForwarderRequestConfig ();

var app = builder.Build ();
var forwarder = app.Services .GetService

跑起来后,就可以发现test下的接口都已经可以转发到 http://localhost:5132/ 了。

YARP简介 —— IHttpForwarder

更多信息可以参看微软的官方文档Direct Forwarding,微软也提供了一个最简单的完整示例ReverseProxy.Direct.Sample

上述代码本身是实现了一个完整的的反向代理的功能的。和目前的主流的反向代理框架比起来,主要缺少一些高级功能,如:路由匹配、负载均衡、会话保持、重试等。但这些高级功能本身不是必须的,这个时候直接用IhttpProxy更加简单直接,也可以方便我们自己构建一个更加灵活高效的反向代理框架。

参考文章:

Original: https://www.cnblogs.com/TianFang/p/16357549.html
Author: 天方
Title: YARP简介 —— IHttpForwarder

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/546953/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Spark学习(3)SparkSQL

    什么事sparkSQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用, 它是将Spark…

    技术杂谈 2023年7月24日
    081
  • [转]Perform a JQL Search in ScriptRunner for Jira

    Cloud Use this script in the Script Console to update the value of a system field for all …

    技术杂谈 2023年5月30日
    0103
  • 机器学习(5)特征值的处理总结和缺失值的处理

    数值型数据处理的方式:1,归一化 2,标准化 3,缺失值处理(pandas处理) 类别型数据:on-hot编码 时间类型数据:时间切分 posted @2018-11-19 16:…

    技术杂谈 2023年7月23日
    082
  • 测试驱动开发(TDD)

    测试应用有很多方法,例如,黑盒测试、白盒测试、迭代测试等,然而,这些方法都是从宏观上描述测试的。为了在技术上保障测试的效果,Kent Beck(也是极限编程创始人)提出了在结果上进…

    技术杂谈 2023年5月31日
    098
  • 辅导你的软件团队获得成功

    很少有人能靠自己的力量推进和发展自己的事业。一路上,他们有经验丰富的同事、导师和领导的帮助和指导。现在,你已经在职场上步步高升,你发现自己处于一个可以回报的位置。你有一个由软件工程…

    技术杂谈 2023年6月1日
    099
  • mongo笔记

    获取stats from pymongo import MongoClient client = MongoClient() db = client.test print coll…

    技术杂谈 2023年7月11日
    071
  • Windows 域控配置时间同步

    此功能是因内网时间与互联网时间不同步,需我们手动指定互联网NTP服务器来同步时间。一般默认情况下,加域客户端同步的是域主机的时间。如果域控的主机时间不准的话,那么域内的客户端也就随…

    技术杂谈 2023年6月21日
    0147
  • html大文件传输解决方案

    1、介绍enctype enctype 属性规定发送到服务器之前应该如何对表单数据进行编码。 enctype作用是告知服务器请求正文的MIME类型(请求消息头content-typ…

    技术杂谈 2023年5月30日
    084
  • 基于Cesium的数字地球三维可视化2

    业务合作可联系我们: www.freethtech.com 饮水思源,不忘初心。 要面包,也要有诗和远方。 posted on2022-05-08 15:39 3D入魔 阅读(38…

    技术杂谈 2023年5月31日
    094
  • 脚本小子学习–vulnhub靶机DC8

    @ 前言 一、环境搭建 二、目标和思路 三、实际操作 1.信息收集 2.getshell 总结 前言 通过一些靶机实战练习,学习使用现有的工具来成为脚本小子。 一、环境搭建 靶机:…

    技术杂谈 2023年6月21日
    097
  • 常见爬虫/BOT 对抗技术简介(二)

    上一篇文章分别从网络协议,Robots文件,JS渲染,行为分析等多方面讲了些”反爬虫”,”反-反爬虫”技术。 点击查看:《常见爬虫/…

    技术杂谈 2023年5月31日
    0113
  • IC 后端仿真: process corner 和 PVT (转)

    与双极晶体管不同,在不同的晶片之间以及在不同的批次之间,MOSFETs参数变化很大。为了在一定程度上减轻电路设计任务的困难,工艺工程师们要保证器件的性能在某个范围内,大体上,他们以…

    技术杂谈 2023年6月1日
    098
  • java学习之Servlet

    Servlet就是一个接口我们需要写一个类然后去实现Servlet,就可以被服务器识别到。request是用来接受客户端传过来的参数,respone是用来响应客户端的页面。我们所用…

    技术杂谈 2023年6月21日
    083
  • 老生常谈系列之Aop–Spring Aop源码解析(一)

    老生常谈系列之Aop–Spring Aop源码解析(一) 前言 上一篇文章老生常谈系列之Aop–Spring Aop原理浅析大概阐述了动态代理的相关知识,并…

    技术杂谈 2023年7月25日
    093
  • Greenplum数据库基本操作命令大全-完善ing

    Greenplum数据库基本操作命令大全 select * from pg_stat_activity; datid –16388 datname –hfamlgpdbs &a…

    技术杂谈 2023年7月11日
    078
  • typora最后的免费版本

    需要的阿里云盘自取 「typora最后的免费版本」https://www.aliyundrive.com/s/p3Ci2gbgwYh点击链接保存,或者复制本段内容,打开「阿里云盘」…

    技术杂谈 2023年7月11日
    083
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球