2013-08-10 72 views
8

Tôi đang cố gắng viết một trình tải xuống tệp http trong Clojure và trong one of my other questions, ai đó đã nhận xét rằng sử dụng thư viện máy khách http chuyên dụng tốt hơn so với mã hóa với api của Clojure và Java. Tôi đã làm một số nghiên cứu và tìm thấy một số, nhưng tôi không thể tìm ra các tính năng, ưu và khuyết điểm của mỗi. Vì vậy, nếu một số người có thể giải thích làm thế nào họ là khác nhau và đó là một trong những kết hợp tốt với dự án của tôi, mà sẽ được nhiều đánh giá cao. :-DƯu điểm và nhược điểm của thư viện khách hàng của Clojure http

Libraries ban đầu trong Java, và tương ứng với giấy gói Clojure:

Apache HttpClient và Clojure của nó bao bọc clj-http

Apache HttpAsyncClient và không thể tìm thấy bất kỳ wrapper Clojure.

Netty và Clojure "trình bao bọc" là Aleph, tôi đoán?

Async Http Client và wrapper Clojure nó http.async.client

Cuối cùng nhưng không kém phần quan, thư viện Clojure:

http-kit

+0

Tôi không đề xuất rằng Clojure API tốt hơn API Java btw.Những gì tôi nói rằng Clojure API cảm thấy tự nhiên hơn! :) – Chiron

+0

@Chiron nhờ thêm điều đó! :-D –

Trả lời

7

Tôi sẽ không đưa ra một sự so sánh đầy đủ giữa các thư viện bạn được đăng từ Tôi đã không sử dụng tất cả chúng. Nhưng trước đây tôi đã sử dụng thư viện http-kit và nó thực sự tốt.

http-kit rất dễ sử dụng, được mô hình hóa sau thư viện clj-http bằng cách này và nó thực sự có hiệu suất. Mặc dù so sánh này không trực tiếp về câu hỏi của bạn nhưng nó vẫn có thể làm sáng tỏ một số điều: TechEmpower Frameworks Round 2

9

Tôi chỉ có thể so sánh http-kit và clj-http.

CLJ-http:

  • đơn giản API
  • client HTTP chỉ
  • một wrapper cho Apache HttpComponents

http-kit:

  • thiết kế cho async
  • HTTP client và server, mạnh mẽ hơn
  • client API mô hình sau CLJ-http nhưng điều ấy tăng thêm trừu tượng quá tải nhận thức cao

Nếu bạn quan tâm đến phụ thuộc, http-kit có thể là một lựa chọn tốt hơn vì nó là một thư viện độc lập không có phụ thuộc nào khác ngoài clojure.core. Bởi vì nó tạo ra uberjars nhỏ hơn. Đối với dự án HTTP GET mẫu:

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 

Mặt khác, bạn có thể chọn clj-http nếu bạn muốn tin tưởng vào thử nghiệm Apache HttpComponents và hỗ trợ tốt hơn từ cộng đồng Java lớn hơn.

Các vấn đề liên quan