[ 
https://issues.apache.org/jira/browse/CAY-2076?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Savva Kolbachev updated CAY-2076:
---------------------------------
    Description: 
The goal is add HTTP/2 support for ROP client as seperate module.
The solution is implementing ROPConnector interface with Jetty HTTP/2 Client.

Depends on your needs, there are several ways how to use this implementation.

*Use _HighHttp2ROPConnector_ through _HighHttp2ALPNClientConnectionProvider_.*
This solution based on Jetty http2-http-client-transport, which provides the 
implementation of the HTTP/2 transport for HttpClient. So we can use the higher 
level API provided by HttpClient to send HTTP requests and receive HTTP 
responses, and the HTTP/2 transport will take care of converting them in HTTP/2 
format. It requires ALPN to determine which protocol should be used.

*Use _HighHttp2ROPConnector_ through _HighHttp2ClientConnectionProvider_.*
It also based on Jetty http2-http-client-transport, but doesn't use ALPN. It 
uses prior knowledge about HTTP/2 on server-side. So this solution connects 
directly to the server via HTTP/2 and you could use it without providing ALPN.

*Use _LowHttp2ROPConnector_ through _LowHttp2ClientConnectionProvider_.*
This solution based on Jetty http2-client, which provides the implementation of 
HTTP/2 client with a low level HTTP/2 API. It's more complex but flexible way. 
You could handle all things related to your sessions, streams, frames and etc. 
It also uses prior knowledge instead of ALPN.

  was:
The goal is add HTTP/2 support for ROP client as seperate module.
The solution is implementing ROPConnector interface with Jetty HTTP/2 Client.

Depends on your needs, there are several ways how to use this implementation.

*Use HighHttp2ROPConnector through HighHttp2ALPNClientConnectionProvider.*
This solution based on Jetty http2-http-client-transport, which provides the 
implementation of the HTTP/2 transport for HttpClient. So we can use the higher 
level API provided by HttpClient to send HTTP requests and receive HTTP 
responses, and the HTTP/2 transport will take care of converting them in HTTP/2 
format. It requires ALPN to determine which protocol should be used.

*Use HighHttp2ROPConnector through HighHttp2ClientConnectionProvider.*
It also based on Jetty http2-http-client-transport, but doesn't use ALPN. It 
uses prior knowledge about HTTP/2 on server-side. So this solution connects 
directly to the server via HTTP/2 and you could use it without providing ALPN.

*Use LowHttp2ROPConnector through LowHttp2ClientConnectionProvider.*
This solution based on Jetty http2-client, which provides the implementation of 
HTTP/2 client with a low level HTTP/2 API. It's more complex but flexible way. 
You could handle all things related to your sessions, streams, frames and etc. 
It also uses prior knowledge instead of ALPN.


> Implement HTTP/2 support for ROP Client
> ---------------------------------------
>
>                 Key: CAY-2076
>                 URL: https://issues.apache.org/jira/browse/CAY-2076
>             Project: Cayenne
>          Issue Type: Task
>          Components: ROP
>            Reporter: Savva Kolbachev
>            Assignee: Savva Kolbachev
>             Fix For: 4.0.M4
>
>
> The goal is add HTTP/2 support for ROP client as seperate module.
> The solution is implementing ROPConnector interface with Jetty HTTP/2 Client.
> Depends on your needs, there are several ways how to use this implementation.
> *Use _HighHttp2ROPConnector_ through _HighHttp2ALPNClientConnectionProvider_.*
> This solution based on Jetty http2-http-client-transport, which provides the 
> implementation of the HTTP/2 transport for HttpClient. So we can use the 
> higher level API provided by HttpClient to send HTTP requests and receive 
> HTTP responses, and the HTTP/2 transport will take care of converting them in 
> HTTP/2 format. It requires ALPN to determine which protocol should be used.
> *Use _HighHttp2ROPConnector_ through _HighHttp2ClientConnectionProvider_.*
> It also based on Jetty http2-http-client-transport, but doesn't use ALPN. It 
> uses prior knowledge about HTTP/2 on server-side. So this solution connects 
> directly to the server via HTTP/2 and you could use it without providing ALPN.
> *Use _LowHttp2ROPConnector_ through _LowHttp2ClientConnectionProvider_.*
> This solution based on Jetty http2-client, which provides the implementation 
> of HTTP/2 client with a low level HTTP/2 API. It's more complex but flexible 
> way. You could handle all things related to your sessions, streams, frames 
> and etc. It also uses prior knowledge instead of ALPN.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to