Dot-Net

是否可以將 HTTP2 與 HTTPListener 一起使用

  • May 11, 2015

是否可以在 HTTPListeners 中使用 http2 功能?我沒有聽到任何關於它的消息,但我聽說 IIS / asp.net 堆棧的新版本支持它,所以我希望 HTTPListener 也能被升級或提供替代方案。

如果不是,那麼支持 http2 的最佳選擇是什麼,使用原始套接字,或者是否有可能擴展 httplistener?

編輯:澄清我不只是在尋找一個“報告”http2的解決方案,而是一個讓我能夠實際使用http2新功能(例如推送內容)的解決方案,我的案例是我有一個自定義CMS(自寫)伺服器極低的延遲(幾乎立即回复所有請求),唯一需要優化的是能夠推送內容和能夠多路復用,因為目前我唯一希望的加速是避免這麼多往返的延遲

HttpListener是 Windows 核心模組http.sys的託管“客戶端” (類似於 IIS 也是它的客戶端)。這個處理 HTTP/2 的模組版本似乎只在Win10/IE中可用。如果您在Win10上執行並建立了 HTTP/2 連接,它可能看起來HttpListener與. 如果有什麼不同,那就是顯示的 HTTP/2。http.sys``HttpListener``HttpListenerResponse.ProtocolVersion

查看 的來源HttpListener,似乎介面http.sys是面向 blob 的,只是訂閱請求並在一個大 blob 中獲取請求數據。此 blob 構成託管HttpListenerContext類的基礎,該類具有作為屬性公開的請求和響應數據。通過將數據分解為通過屬性公開的標頭和數據塊來HttpListenerResponse發送響應。如果支持多流,則需要更改此公共 API。目前肯定不支持它,我猜他們不會改變這個 API,如果 HTTP/2 將被支持,它將完全抽象 HTTP/2 或提供某種方法在這個更高級別進行多路復用。聽起來你想直接寫反對http.sys``OutputStream``HttpListener``WriteAsync``http.sys利用協議的較低級別的功能。

引用自:https://stackoverflow.com/questions/30134454