【问题标题】:Pros and Cons of Clojure http client librariesClojure http 客户端库的优缺点
【发布时间】:2013-08-10 09:20:54
【问题描述】:

我正在尝试在 Clojure 中编写一个 http 文件下载器,在 one of my other questions 中,有人评论说使用专用的 http 客户端库比使用 Clojure 和 Java 自己的 api 编码更好。我做了一些研究,发现了一些,但我无法弄清楚每个的特点、优缺点。因此,如果有人可以解释它们的不同之处以及哪一个与我的项目非常匹配,那将不胜感激。 :-D

最初用 Java 编写的库和相应的 Clojure 包装器:

Apache HttpClient 及其 Clojure 包装器 clj-http

Apache HttpAsyncClient 并且找不到任何 Clojure 包装器。

Netty 和 Clojure “包装器”是 Aleph,我猜?

Async Http Client 及其 Clojure 包装器 http.async.client

最后但同样重要的是,一个 Clojure 库:

http-kit

【问题讨论】:

  • 顺便说一句,我没有建议 Clojure API 比 Java API 更好。我说的 Clojure API 感觉更自然! :)
  • @Chiron 感谢添加! :-D

标签: java http clojure


【解决方案1】:

我只能比较 http-kit 和 clj-http。

clj-http:

  • 简单的 API
  • 仅限 HTTP 客户端
  • Apache HttpComponents 的包装器

http 套件:

  • 专为异步设计
  • HTTP 客户端和服务器,更强大
  • 以 clj-http 为模型的客户端 API,但它添加了更多抽象,因此认知负载更高

如果您关心依赖项,http-kit 可能是更好的选择,因为它是一个独立的库,除了 clojure.core 之外没有其他依赖项。正因为如此,它产生了更小的 uberjars。对于示例 HTTP GET 项目:

clj-http:

1.2M    clj-http-test-0.1.0-SNAPSHOT.jar
6.7M    clj-http-test-0.1.0-SNAPSHOT-standalone.jar

http-kit:

65K     http-kit-test-0.1.0-SNAPSHOT.jar
3.8M    http-kit-test-0.1.0-SNAPSHOT-standalone.jar

另一方面,如果您更愿意相信经过实战考验的 Apache HttpComponents 并可能获得更大 Java 社区的更好支持,您可以选择 clj-http。

【讨论】:

    【解决方案2】:

    我不会对您发布的库进行全面比较,因为我没有使用所有这些库。但我之前用过http-kit 库,它真的很好。

    http-kit 很容易使用,顺便模仿了 clj-http 库,它确实是高性能的。虽然这个比较不是直接针对您的问题,但它仍然可以提供一些启示:TechEmpower Frameworks Round 2

    【讨论】:

      猜你喜欢
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      相关资源
      最近更新 更多