8 ms·
YARP – Microsoft toolkit to build fast reverse proxy servers
- jhgb 5y agoI bet that Hot Fuzz fans greatly approve of the name.
- AstroDogCatcher 5y agoPlaytime's over.
- ab-dm 5y agoFirst thing I thought of reading this title was "Narp".
- deleted 5y ago[deleted]
- nih0 5y agothis is like spring cloud gateway? looks pretty cool
- jalino23 5y agowhen they say reverse proxy server does it mean like nginx? so this tool is like create your own nginx instead of configuring and existing reverse proxy server like nginx?
- asabla 5y agoThe way I've understood it, it's more closer to the latter
- ComputerGuru 5y agoYes, with configure-via-code being an option.
- hajhatten 5y agoI was interested until I saw .NET and XML on the getting started page.
- dgellow 5y agoYARP configuration is done using a json file, as you can see in the getting started page: https://microsoft.github.io/reverse-proxy/articles/getting-started.html#configuration https://microsoft.github.io/reverse-proxy/articles/getting-s.... Did you really stop reading after 2 paragraphs because they show a XML snippet? The XML is only related to the C# project file...
- hajhatten 5y agoYes, I really stopped reading there.
- bryanrasmussen 5y agothis is sort of like stopping when reading some tutorial on nginx and the example app the tutorial is using to show how nginx works is written in php because you're too cool for that php stuff.
- deleted 5y ago[deleted]
- midasuni 5y agoI stopped reading at Microsoft. Why would I want to hitch my wagon to another failed Microsoft attempt at embrace extend extinguish. I’m still laughing at the companies that poured into things like silverlight a few years ago.
- simooooo 5y agoYou must have a lot going on
- 5y ago
- kitd 5y agoI've not examined this in detail, but it'll have to go some to beat Golang's stdlib for easily coding up a reverse proxy. I've had to do it a few times now for special applications and each time the reverse proxy part was mere minutes of work compared to the application code.
- TimMurnaghan 5y agoNo. Every golang stdlib proxy I've tried to use is a toy. They very inefficiently copy the message body and the memory behaviour is just horrible. Try posting a 10MB message. (That's actually not a lot for modern technology) and it will grind to a halt.
- Attummm 5y agoWould it possible to share your findings?
- DeathArrow 5y agoWhy do people chose names for tools or libraries starting with "Yet Another...". I know naming can be hard, but anything can be better. Want a name, here are a few: Camel, Druid, Beetle, Quetzalcoatl, Omaha. You can even use a random website name generator, or character name generator to get names that don't mean anything but are readable.
- buholzer 5y agoEspecially if the name spelled backwards is “PRAY” ;).
- oaiey 5y agoI think you wanted to use the adjective reverse.
- vadfa 5y agoyarp is much more googleable than "camel"
- ebanana 5y agoIt’s geek ironic, but yeah the trend is kinda thick. It’ll be interesting to see how easy it is compared to other reserve proxies. I am def not a dev op guy but there’s a few things where it feels like I am learning another coding language just to do something that seems like it would be easy to document and get done sooner but, you end up needing a certificate to learn how to use an image buck for instance. anywho
- dikei 5y agoNot sure if you are being sarcastic, but Camel and Druid are already taken: Apache Camel & Apache Druid :)
- DeathArrow 5y agoI used them as examples.
- midasuni 5y ago
- DeathArrow 5y agoAny comparisons and/or benchmarks with Traefik or NGINX?
- oneplane 5y agoWe did some internally and while YARP-based reverse proxies aren't bad, they are not as fast as nginx or HAProxy and not as useful as nginx or HAProxy. It seems to be mostly for NIH-teams. I think that is also what the documentation describes; it was made for internal teams that were already on the DIY track anyway and the intent is to make it a .NET-nail (for when all you have is a .NET hammer). The downsides are (to me) somewhat obvious, there is no mindshare, no automation and no decades of experience. That can also be an upside since looking for documentation or examples will not result in old-outdated stuff since it hasn't been available that long.
- CrazyPyroLinux 5y ago> for when all you have is a .NET hammer Yep, I've been on teams where asking for approval to run your own proxy was out of the question, but "adding an extra module to the pipeline" was practically a rubber-stamp approval.
- davidfowl 5y agoThese proxies are within reach performance wise. One of the reasons we did YARP was to push the performance boundaries of asp.net core and http client. It will also replace many of the front ends that were built in house (not many want to write lua or c to modify the routing logic). It’s new, give it some time
- oneplane 5y agoThe downside of yet another anything is that unless it is an order of magnitude better than what already exists is that it will split the available human resources. Not only that, it also isolates the users to within their own language/framework, promoting a monoculture (now there's a pun that could be made here). While it's better than other in-house alternatives, it's not better for the entire ecosystem as a whole. The need for hyperlocal reverse proxies is a problem on its own, generally only solved this way due to organisational dysfunction or a very niche requirement.
- qxmat 5y agoWe use Azure AD Application Proxy because it's an approved technology/pattern. Sadly SAML auth doesn't work with MSAL 2.x frontends because auth tokens are clobbered - gh bug #3420 - so we're looking at replacing it. Right now the USP of Azure AD Application Proxy is that it "just works", give or take a bit of powershell. Replicating the functionality behind their Azure edge network and proxy connector groups is costly. It would be helpful if this project dove-tailed with the Azure edge side so we could run our own proxy connectors.
- 2ion 5y agoGreat, now dogfood it to the guys responsible for "netsh interface portproxy", easily the most unreliability "OS level" port proxying I've ever seen.
- klaxxon 5y agoThis is actually a great project. Makes it really easy to set up a reverse proxy for test purposes and control it programatically and has a lot of tweakability (adding stuff like latency is trivial). Surely the best of among alternatives for integration testing of .Net applications.
- billpg 5y agoI wonder how this handles TLS. I have tried using dot-net's HttpListener object but was a little disappointed in how it handled TLS. (In the end, I used HttpListener in localhost-only mode and had an off-the-shelf proxy service to deal with TLS.)
- Tratcher 5y agoYARP can be used on IIS, Http.Sys (HttpListener), or Kestrel, and each handle TLS setup differently. If you didn't like the HttpListener model you should try Kestrel instead, it's all configured in process (or appsettings.json). https://docs.microsoft.comaspnet/core/fundamentals/servers/kestrel/endpoints?#listenoptionsusehttps https://docs.microsoft.comaspnet/core/fundamentals/servers/k...
- _wolfie_ 5y agoWell good for them for not picking name used by any opensource this time. /s
- andix 5y agoIt is a nice idea (ASP.NET is a great platform), but it is not really ready for broad use. I gave it a try, because I'm a .NET dev and nginx configuration always confuses me. There are a lot of things still missing from YARP: - Configuration/API still has some rough edges - For a lot of things (funky header stuff), you still need to write your own Middlewares - Missing documentation for a lot of features - No good Letsencrypt support - Caching and cache conrol is also very limited
- davidfowl 5y agoI hope you left feedback! - Writing code in a .net based language is one of the strengths. - let’s encrypt isn’t built in but can be added by using https://github.com/natemcmaster/LettuceEncrypt https://github.com/natemcmaster/LettuceEncrypt - Not sure about the caching one. Do you have more details?
- andix 5y agoYes, the code first configuration in .NET attracted my interest. Also it's testability. I don't understand why they push their JSON configuration so much. If you want config files, take nginx, HAproxy, Traefik, ... LettuceEncrypt is more or less currently unmaintained. Way too risky to use, no idea how to fix that, if something breaks. About caching, this issue sums up my issue quite well: https://github.com/dotnet/aspnetcore/issues/27387 https://github.com/dotnet/aspnetcore/issues/27387 I went with Traefik after all, I'm quite happy with that choice.
- davidfowl 5y agoFair! Glad you found something that works. Out of curiosity, Traefik has output caching ?
- andix 5y agoNo it doesn’t. At least not the free version. YARP got me interested, because I thought I could write some complex caching rules in C#. But you can’t, so every other proxy that doesn’t cache is as good as YARP ;)
- sbisson 5y agoAn example of inner source becoming open source; YARP began as a way to unify multiple internal .NET reverse proxy projects. Once mature and used internally it was opened up to the rest of the world...
- Richicoder 5y agoRecognizing that YARP's goal is to be, well, a reverse proxy, I'm none the less hopefully that a Toolkit-like ecosystem that is currently missing with the stagnacy of Ocelot pops up around YARP.