HTTP/2 #73

Open
markrendle opened this Issue Mar 4, 2015 · 41 comments

Projects

None yet
@markrendle
Contributor

Are there any immediate plans to add HTTP/2 support?

@davidfowl
Member

Nope

@markrendle
Contributor

Right, I might have a go at that, then.

@davidfowl
Member

Can't this just be built as middleware on top of the opaque stream feature? /cc @lodejard @Tratcher

@Tratcher
Member
Tratcher commented Mar 5, 2015

Yes, you should be able to build it as middleware using an opaque upgrade like WebSockets.

@markrendle
Contributor

Well, sounds like this should be a cakewalk. I'll get drunk and do it at the weekend ๐Ÿ˜Ž

@DamianEdwards DamianEdwards added this to the Backlog milestone Aug 14, 2015
@Cuddlefluff

Any status on this drunken experiment?

@GuardRex

๐Ÿ‘

@otabekgb

+1

@qin-nz
qin-nz commented Jan 31, 2016

+1

@nawfalhasan

+1

@glen-84
glen-84 commented Mar 21, 2016

@nawfalhasan You can use reactions now, instead of +1 comments.

@jphellemons
jphellemons commented Apr 26, 2016 edited

Still no Http/2 support in 2016? Because according to this article https://gooroo.io/GoorooTHINK/Article/16623/One-Weird-Trick-To-Improve-Web-Performance/21564#.Vx9o5UdkldB it will be faster with TLS too.
Edit: sorry, just noticed it is on the backlog...

@Tratcher
Member

It's not on the roadmap for v1.0. However, IIS does support it on Win10 so you get most of the benefits when running Kestrel behind IIS. WebListener also supports it.

@GuardRex

From: HTTP/2 on IIS, David So's Blog 9/11/2015 ...

On the server, IIS running on Windows 10 or previews of Server 2016 supports HTTP/2.
IIS currently supports HTTP/2 only over TLS. When making an HTTPS connection to a web server running IIS on Windows 10, HTTP/2 is used if the client and server both support it. In IIS, weโ€™ve implemented HTTP/2 as transparently as possible โ€“ you shouldnโ€™t need to change anything in your application for HTTP/2 to work. Certain HTTP/1.1 optimizations (domain sharding, inlining, etc.) are no longer recommended in HTTP/2, though, so you should plan to remove these in the future.

Excellent! ๐Ÿ‘

@GuardRex

Just to follow-up on the TLS bit (see "Note 2"): http://caniuse.com/#feat=http2

It looks like browsers are still only implementing HTTP/2 for TLS connections.

@benaadams
Contributor

Added item for AspNetCoreModule supporting http/2 PushPromises aspnet/IISIntegration#160

@0xfffffff7

what is current status?

@davidfowl
Member

It's not happening for 1.0. We'll update the roadmap once we ship and have planned this feature out.

@0xfffffff7

thanks!

@markrendle
Contributor

If you're running on Linux, reverse-proxy behind Nginx and turn caching on to get full HTTP/2 goodness for your static contents.

@Tratcher
Member

Note this is blocked by SslStream support for ALPN: dotnet/corefx#4721

@brgrz
brgrz commented Sep 7, 2016

any update when this will be avalaible in Kestrel and if it will work on Kestrel on Windows 2012 (R2)?

@davidfowl
Member

Not until next year

@DemiMarie

It seems rather pointless as long as Kestrel is still expected to run behind a reverse proxy like NGINX or IIS, which both support HTTP2 (and TLS termination).

@davidfowl
Member

You can imagine using http2 to do server to server communication (ala grpc or just REST over http2).

@Cuddlefluff

It's only pointless for one scenario; Kestrel is a pure API server, will only serve short simple single-bounded requests and behind a reverse proxy. Any other scenario, HTTP2 will be useful. It would also be useful if you intend to use Kestrel as a reverse-proxy, which I think would be kind of cool.

@ForNeVeR

Even if you're going to use Kestrel behind reverse-proxy, some HTTP/2 features like server push should still be useful if Kestrel support HTTP/2.

@acornies
acornies commented Dec 2, 2016 edited

+1 for Kestrel support of HTTP/2 for things like server push.

@vtortola
vtortola commented Dec 5, 2016

+1

@hismichael

HTTP/2 support shall make .NET Core superior to other cross-platform technologies.
+1

@rh78
rh78 commented Dec 19, 2016

+1

@AjmalVh
AjmalVh commented Dec 23, 2016

๐Ÿ‘

@papci
papci commented Jan 12, 2017

+1

@lolwhatitis

+1 billion. I'm looking to build a reverse proxy PoC that involves Kestrel (and nothing else), and HTTP/2 support would be excellent.

@Matthias247

Hi everyone,
I did an implementation of a webserver independent HTTP/2 library for .NET over the last weeks. It's not fully done, but you can find the current status here: https://github.com/Matthias247/http2dotnet
The current state should be good enough to do an experimental integration with ASP.NET Core and maybe also Kestrel.

What needs to be done is

  • Glue the IO layers together (the library needs something bidirectional stream like. System.IO.Stream and System.Net.Sockets.Socket will work out of the box). The requirement for using it with a browser would however a ALPN negotiated SSL stream.
  • Create the ASP.NET Core Request/Response structures on top of my libraries stream abstractions. I think this could be fairly straightforward - but I'm not very familiar with ASP.Net core.

If anybody wants to take a look or play around with it I would appreciate it. I'm open for any constructive feedback and API changes to make this even more usable.

@cesarbs
Member
cesarbs commented Jan 17, 2017

The requirement for using it with a browser would however a ALPN negotiated SSL stream.

This is our main blocker for HTTP/2: we don't have one right now.

@figuerres

I am for sure interested in http/2 for this and it seems like all http/2 will be over secure sockets from what i have been seeing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment