Jersey-client和Apache HTTP Client如何比较?
2022-08-31 17:33:47
首先,我不是想在这里发动一场火焰战争。我对泽西岛非常了解,但几乎没有使用过httpclient。
Jersey-client和Apache的httpclient之间的主要区别是什么?在哪些方面,一个比另一个更好?在某个地方有好的比较图表吗?哪一个对较大的文件(例如2048 MB)性能更好?
非常感谢您的评论!
首先,我不是想在这里发动一场火焰战争。我对泽西岛非常了解,但几乎没有使用过httpclient。
Jersey-client和Apache的httpclient之间的主要区别是什么?在哪些方面,一个比另一个更好?在某个地方有好的比较图表吗?哪一个对较大的文件(例如2048 MB)性能更好?
非常感谢您的评论!
这两件事可能不应该直接比较。Jersey 是一个 REST 客户端,具有完整的 JAX-RS 实现、简洁流畅的 API 和强大的过滤器堆栈。Apache Http Client是一个HTTP客户端,非常适合管理超时,复杂的代理路由和连接轮询等低级细节。它们在协议栈的不同级别上起作用。当您使用泽西岛时,总会涉及某种HTTP客户端后端。如果没有显式后端,泽西岛将用作默认后端。HttpUrlConnection
泽西岛与HttpUrlConnection后端示例:
Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/path");
ClientResponse response = webResource.accept("application/json")
.get(ClientResponse.class);
泽西与Apache Http客户端后端示例:
HttpClient apacheClient = HttpClientBuilder.create().build();
Client client = new Client(new ApacheHttpClient4Handler(apacheClient,
new BasicCookieStore(),
true));
WebResource webResource = client.resource("http://localhost:8080/path");
ClientResponse response = webResource.accept("application/json")
.get(ClientResponse.class);
请注意上一个示例中处理程序的用法。这是泽西岛合并和利用各种后端的关键集成抽象。第一个示例使用深层底层。URLConnectionClientHandler
说到性能和功能,将Apache Http Client与Jersey进行比较是没有意义的。人们可能想在这里比较不同的泽西岛后端,因为泽西岛本身只是一个包装API。我想根据我自己的经验强调HttpUrlConnection和Apache Http Client之间的一些关键区别:
HttpUrlConnection
HttpUrlConnection
Apache Http Client
HttpUrlConnection
HttpUrlConnection
请记住,如果您有适当的实现,也可以将其他后端(例如,对于非阻塞客户端)与 Jersey 一起使用。com.sun.jersey.api.client.ClientHandler