内容简介:最近微软新开了一个项目 ReverseProxy ,也叫做 YARP(A Reverse Proxy)官方介绍如下:这是一个基于 .net (core) 和 asp.net (core) 的用来代理服务器的反向代理组件,YARP的主要区别在于它的设计易于定制和调整,以适应每种部署方案的特定需求。
浅析微软的网关项目--ReverseProxy
Intro
最近微软新开了一个项目 ReverseProxy ,也叫做 YARP(A Reverse Proxy)
官方介绍如下:
YARP is a reverse proxy toolkit for building fast proxy servers in .NET using the infrastructure from ASP.NET and .NET. The key differentiator for YARP is that it's been designed to be easily customized and tweaked to match the specific needs of each deployment scenario.
这是一个基于 .net (core) 和 asp.net (core) 的用来代理服务器的反向代理组件,YARP的主要区别在于它的设计易于定制和调整,以适应每种部署方案的特定需求。
你可以基于这个项目来轻松构建自己的 API Gateway
YARP 设计
YARP 主要是基于 endpoint 路由 + asp.net core 中间件来设计实现的
来看一下官方的示例 Startup
配置:
中间件
基于 asp.net core 的中间件的设计可以使得一些现有的 asp.net core 的中间件可以无缝集成,不得不说微软的设计真的是很优秀
相对来说 Ocelot 的的设计就会稍显逊色一些,因为 Ocelot 的设计是 asp.net core 的一个中间件,在 Ocelot 内部有自己的一套中间件,原来基于 asp.net core 的中间件要在 Ocelot 中使用就需要进一步开发,变成 Ocelot 的中间件,才能正常工作,比如 Ocelot 里的限流中间件就是基于一个 asp.net core 的中间件来实现的 AspNetCoreRateLimit
proxy endpoint 实现
从上面的代码可以看到,针对反向代理的处理流程是也是一套中间件管道处理,
首先执行的是 DestinationInitializerMiddleware
在这一中间件,会获取可用的下游节点,并通过 HttpContext
的 Features
来传递给后面的中间件,
然后会调用传进来的自定义中间件的逻辑,在这个逻辑中,可以加一些我们自己的业务逻辑,十分灵活,可扩展性极强
之后会执行 ProxyInvokerMiddleware
,在这个中间件中会去调用下游服务,并生成 response 返回给客户端
More
目前这个项目在还是在积极开发中,可以关注一下,但是暂时不建议在项目中使用,目前还没发布 preview 版本,原本这个项目只支持 .net 5,不支持 .netcore3.1 ,在许多人的呼吁之下,微软打算在 preview2 版本中提供对 dotnetcore 3.1 的支持,详细可以参考 issue: https://github.com/microsoft/reverse-proxy/issues/159,希望提供 .net core 3.1 支持的可以去点个赞哈
Reference
-
https://github.com/microsoft/reverse-proxy
-
https://github.com/microsoft/reverse-proxy/blob/master/samples/ReverseProxy.Sample/Startup.cs
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C程序设计语言
(美)Brian W. Kernighan、(美)Dennis M. Ritchie / 徐宝文、李志译、尤晋元审校 / 机械工业出版社 / 2004-1 / 30.00元
在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用广泛。本书原著即为C语言的设计者之一Dennis M.Ritchie和著名计算机科学家Brian W.Kernighan合著的一本介绍C语言的权威经典著作。我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本。原著第1版中介绍的C语言成为后来广泛使用的C语言版本——标准C的基础。人们熟知的“hello,World"程序就是由本书......一起来看看 《C程序设计语言》 这本书的介绍吧!