2013-08-10 10 views
8

Próbuję napisać plik do pobierania plików http w Clojure, aw one of my other questions ktoś napisał, że korzystanie z dedykowanej biblioteki klienta HTTP jest lepsze niż kodowanie z własnym interfejsem API Clojure i Java. Zrobiłem trochę badań i znalazłem kilka, ale nie mogłem znaleźć cech, zalet i wad każdego z nich. Więc jeśli ktoś może wyjaśnić, jak są różne i który jest dobry do mojego projektu, byłoby to bardzo cenne. :-DZalety i wady bibliotek klienta Clojure http:

Biblioteki pierwotnie w Javie i odpowiadające owijarki Clojure:

Apache HttpClient i jego Clojure wrapper clj-http

Apache HttpAsyncClient i nie mógł znaleźć żadnego opakowania Clojure.

Netty i "opakowanie" Clojure to Aleph, tak myślę?

Async Http Client i jego Clojure wrapper http.async.client

Last but not least, biblioteka Clojure:

http-kit

+0

Nie sugerowałem, że Clojure API jest lepsze niż Java API btw.Co powiedziałem, że Clojure API wydaje się bardziej naturalne! :) – Chiron

+0

@Chiron dzięki, aby to dodać! :-RE –

Odpowiedz

7

ja nie zamierzam dać pełnego porównania między bibliotekami zostanie zaksięgowana od Nie użyłem ich wszystkich. Ale wcześniej korzystałem z biblioteki http-kit i jest naprawdę dobra.

http-kit jest łatwy w użyciu, wzorowany na bibliotece clj-http i tak naprawdę jest naprawdę wydajny. Chociaż to porównanie nie dotyczy bezpośrednio twojego pytania, to może ono rzucić nieco światła: TechEmpower Frameworks Round 2

9

Mogę tylko porównać zestaw http i clj-http.

CLJ-http:

  • proste API
  • klient HTTP tylko
  • wrapper dla Apache HttpComponents

http-kit:

  • zaprojektowany dla async
  • klient HTTP i serwer, mocniejszy
  • klient API wzorowane CLJ-http ale dodaje kolejne abstrakcje więc obciążenie poznawcze jest wyższa

Jeśli dbasz o zależnościach, http-kit może być lepszym wyborem, ponieważ jest to samodzielna biblioteka bez żadnych innych zależności niż clojure.core. Z tego powodu produkuje mniejsze uberjars. Dla przykładowego projektu 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 

Z drugiej strony może wybrać CLJ-http jeśli wolisz zaufać przetestowany Apache HttpComponents walki i potencjalnie lepsze wsparcie od większych społeczności Java.

Powiązane problemy