Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HTTP2:如何实现流量控制功能?_C#_Asp.net Mvc_Http2_Server Push_Flow Control - Fatal编程技术网

C# HTTP2:如何实现流量控制功能?

C# HTTP2:如何实现流量控制功能?,c#,asp.net-mvc,http2,server-push,flow-control,C#,Asp.net Mvc,Http2,Server Push,Flow Control,我正在研究http2的一些特性,其中一个是流量控制,我想了解如何实现它 如果可以,给我一个例子或演示。 谢谢。我在(一个Java HTTP和WebSocket服务器)中实现了HTTP/2,所以我可以向您指出它是如何在Jetty中实现的——但您可以看看其他实现HTTP/2的开源项目,看看它们是如何实现的 Jetty实现是基于类的 有两种实现,一种是简单的(SimpleFlowControlStrategy),另一种是更有效的(BufferingFlowControlStrategy) 在这两种情况

我正在研究http2的一些特性,其中一个是流量控制,我想了解如何实现它

如果可以,给我一个例子或演示。 谢谢。

我在(一个Java HTTP和WebSocket服务器)中实现了HTTP/2,所以我可以向您指出它是如何在Jetty中实现的——但您可以看看其他实现HTTP/2的开源项目,看看它们是如何实现的

Jetty实现是基于类的

有两种实现,一种是简单的(SimpleFlowControlStrategy),另一种是更有效的(BufferingFlowControlStrategy)

在这两种情况下,FlowControlStrategy都从HTTP/2实现接收事件,特别是:

  • 当数据帧被发送到另一个对等方时
  • 当从另一个对等方接收到窗口更新帧时
  • 当从另一个对等方接收到数据帧时
  • 当应用程序使用接收到的数据时
  • 如果数据发送到另一个对等方,“发送”流控制窗口减小;当从另一个对等方接收到窗口更新帧时,“发送”流控制窗口将增加

    类似地,当接收到数据时,“接收”流量控制窗口减小;当应用程序使用接收到的数据时,“接收”流控制窗口会增加,并且可能会向另一个对等方发送一个窗口更新帧,以表示它可以发送更多数据

    HTTP/2实现需要检查这两个流控制窗口,并在“发送”流控制窗口达到零(或负)时停止发送数据;如果在“接收”流量控制窗口为零(或负)时接收数据,则连接失败。 收到窗口更新帧后,HTTP/2实现需要恢复发送数据

    这是如何在HTTP/2中实现流控制的基础。根据所使用的技术和实现细节,还有很多事情需要处理,例如数据队列、数据复制、线程安全等。但是您可以在编写实现时解决这些问题

    玩得开心

    我在(一个Java HTTP和WebSocket服务器)中实现了HTTP/2,因此我可以向您指出它是如何在Jetty中实现的——但您可以看看其他实现HTTP/2的开源项目,看看它们是如何实现的

    Jetty实现是基于类的

    有两种实现,一种是简单的(SimpleFlowControlStrategy),另一种是更有效的(BufferingFlowControlStrategy)

    在这两种情况下,FlowControlStrategy都从HTTP/2实现接收事件,特别是:

  • 当数据帧被发送到另一个对等方时
  • 当从另一个对等方接收到窗口更新帧时
  • 当从另一个对等方接收到数据帧时
  • 当应用程序使用接收到的数据时
  • 如果数据发送到另一个对等方,“发送”流控制窗口减小;当从另一个对等方接收到窗口更新帧时,“发送”流控制窗口将增加

    类似地,当接收到数据时,“接收”流量控制窗口减小;当应用程序使用接收到的数据时,“接收”流控制窗口会增加,并且可能会向另一个对等方发送一个窗口更新帧,以表示它可以发送更多数据

    HTTP/2实现需要检查这两个流控制窗口,并在“发送”流控制窗口达到零(或负)时停止发送数据;如果在“接收”流量控制窗口为零(或负)时接收数据,则连接失败。 收到窗口更新帧后,HTTP/2实现需要恢复发送数据

    这是如何在HTTP/2中实现流控制的基础。根据所使用的技术和实现细节,还有很多事情需要处理,例如数据队列、数据复制、线程安全等。但是您可以在编写实现时解决这些问题


    玩得开心

    谢谢你的回答。我目前正在从事.net framework/.net core的工作。你能给我一些建议或想法吗?我可以实现吗?更多详细信息可以在中找到。更多细节需要多个问题和多个答案,StackOverflow不是进行长时间讨论的合适平台。欢迎加入并在那里发布问题。非常感谢。顺便问一下,您知道如何在HTTP1/HTTP1.1上实现这个功能吗。如果是ca,请给我一个关键字来研究或演示。Tks。HTTP/1.1不需要实现流控制,因为它依赖于TCP流控制。谢谢您的回答。我目前正在从事.net framework/.net core的工作。你能给我一些建议或想法吗?我可以实现吗?更多详细信息可以在中找到。更多细节需要多个问题和多个答案,StackOverflow不是进行长时间讨论的合适平台。欢迎加入并在那里发布问题。非常感谢。顺便问一下,您知道如何在HTTP1/HTTP1.1上实现这个功能吗。如果是ca,请给我一个关键字来研究或演示。Tks。HTTP/1.1不需要实现流控制,因为它依赖于TCP流控制。