chmichael 12 Posted September 9 (edited) Hello, Anyone translated MSQuic headers for Delphi use ? Seems to be the best implementation atm. Thank you Edited September 9 by chmichael Share this post Link to post
Tommi Prami 130 Posted September 10 QUIC seems very interesting protocol. Dunno does MSQuic support HTTP/3 also on top of it tough. Would be nice to have implementation for Delphi... -tee- Share this post Link to post
Sherlock 663 Posted September 10 5 hours ago, Tommi Prami said: Dunno does MSQuic support HTTP/3 also on top of it tough. If not, it's dead. Chrome and all Chrome derivatives use it extensively already. Share this post Link to post
Anders Melander 1782 Posted September 10 6 hours ago, Tommi Prami said: does MSQuic support HTTP/3 also on top of it Let me Google that for you... https://en.wikipedia.org/wiki/MsQuic Quote Both the HTTP/3 and SMB stacks of Microsoft Windows leverage MsQuic, with msquic.sys providing kernel-mode functionality. https://github.com/microsoft/msquic/blob/main/docs/FAQ.md Quote Q: Why isn’t there an HTTP/3 implementation along with MsQuic? A: MsQuic is designed as a generic QUIC transport for any application protocol. Several HTTP/3 stacks that use MsQuic exist, both internal to Windows (http.sys) and external (.NET Core). Enabling HTTP/3 support on Windows Server 2022 Troubleshooting HTTP/3 in http.sys 2 Share this post Link to post
Angus Robertson 574 Posted September 10 I looked at MSQuic when it came out with a view to supporting it for ICS. For Linux, MSQuic uses a forked OpenSSL version, but SChannel for Windows. So MSQuic requires the latest Windows OS. From a Delphi perspective, MSQuic does not include HTTP/2 or HTTP/3 protocol support, and I'm not aware of any Delphi native implementations of either, only the nghttp2 DLL solution, and external DLLs are less than ideal for Delphi applications. I'd like to write a Delphi HTTP/2 implementation for ICS, but it really needs to be sponsored. I can not justify the time myself, rather work on more useful projects. To my knowledge, there are no functional benefits to HTTP/2 except performance with complex web applications with hundreds of elements on a page, and Delphi is not usually used for complex pages. The OpenSSL committee declined to accept the complex QUIC fork and instead added QUIC in a different way, the client version is available now, the server version has just started alpha testing. But without HTTP/2 for client and server, there seems little point in adding QUIC to ICS. Angus 1 Share this post Link to post
chmichael 12 Posted September 10 (edited) 8 hours ago, Angus Robertson said: I looked at MSQuic when it came out with a view to supporting it for ICS. For Linux, MSQuic uses a forked OpenSSL version, but SChannel for Windows. So MSQuic requires the latest Windows OS. This isn't a problem in a year from now most will use Windows 11. 8 hours ago, Angus Robertson said: To my knowledge, there are no functional benefits to HTTP/2 except performance with complex web applications with hundreds of elements on a page, and Delphi is not usually used for complex pages. Messaging protocols and middleware benefit also. 8 hours ago, Angus Robertson said: I'd like to write a Delphi HTTP/2 implementation for ICS, but it really needs to be sponsored. I can not justify the time myself, rather work on more useful projects. Yes i know it's time consuming task but you can make sell it. atm only esegece has native delphi http/2 support as far i know. It would be nice to have a benchmark between esegece HTTP/2 vs ICS HTTP 1.1. Edited September 10 by chmichael Share this post Link to post
Mark- 29 Posted September 10 1 minute ago, chmichael said: This isn't a problem in a year from now most will use Windows 11. Share this post Link to post
Angus Robertson 574 Posted September 10 Quote It would be nice to have a benchmark between esegece HTTP/2 vs ICS HTTP 1.1. I would expect the difference downloading a 100M file to a tiny percentage difference, likewise making 100 sequential short 1M requests, or 1,000 sequential API JSON requests. http/2/3 might be faster if you are doing 20 parallel API requests, if the application supports that. I added a Websocket API interface to one of my servers recently to allow thousands of requests on the open socket, I tested 50/sec, but my customers were using scripts that only managed two WS requests a second. What specific application do you need http/3 for? Angus Share this post Link to post
chmichael 12 Posted September 12 Experimenting with message protocols and DNS Share this post Link to post