Prezi

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in the manual

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

大江戸HTTPクライアント絵巻

2011-04-10
by Hiroshi Nakamura on 10 April 2011

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of 大江戸HTTPクライアント絵巻

大江戸HTTPクライアント絵巻。 net/http Ruby HTTP clients Feature matrix 3人しか出てこない。簡単だよね。
では、なぜ派生がたくさんできる?
・複雑だから?
・簡単だから?
以下、比較していきます。 Pure RubyでAPI拡張 の一つ?まだ10日程いじってみた程度。
https://github.com/wycats/net-http
・現時点では動かない
・有望なのは間違いない
・mergeでモメそう libcurlベースで消えていったものは他にも
これはこれで乱立 立ち位置はnet/httpベースと同じ
Pure RubyでAPI拡張 Ruby 1.2 (1998/12) Development timeline Ruby 1.4 (1999/8) Ruby 1.6 (2000/9) Ruby 1.8 (2003/8) Ruby 1.8.6 (2007/3) Ruby 1.9.1 (2009/1) Ruby 1.8.7 (2008/6) Ruby 1.9.2 (2010/8) Rails 3.0 (2010/8) Rails 2.0 (2007/12) Rails 1.0 (2005/12) http-access (1999/3) KNClient (1999/3) http-access2 (2002/10) net/http (1999/12) open-uri (2002/12) eventmachine (2006/4) rfuzz (2006/7) simplehttp (2007/1) activeresource (2008/1) curb (2006/12) right_http_connection (2007/5) rufus-verbs (2008/3) rest-client (2008/3) httparty (2008/7) httpclient (2007/7) wrest (2009/4) faraday (2009/12) excon (2009/10) patron (2009/7) typhoues (2009/7) http://www.ruby-lang.org/ja/ http://www.rakuten.co.jp/ http://www.yahoo.com/ http://localhost/ Performance 長く標準添付されている。 File.openを拡張し、ファイル名とURLを同じように扱える。 net/httpベ派生としては著名。使いやすいAPIが評価されている。 REST向け機能を追加。fb_graphで利用。 バッチ転送用途に特化。リトライ、ログ、リカバリー用フックなど。 REST向け機能を追加。Last-Modified、ETagに基づくキャッシュ実装あり。 net/http派生の先駆け。Rails 1.x時代から。
最近は使われない。 libcurlベースの代替の先駆け。APIが使い辛いと言われるが、libcurlのAPIに忠実。元が悪い。 libcurlベースの中では一番APIがスマートで使い易くwrapされている。ただし現時点ではblocking。 patronと同時期。APIはある程度使い易い。 イベントベース。機能が著しく限定されているが、用途がハマると素晴らしい性能。 Rubyベースの代替。Rubinius、MacRubyでもテストされている。 Rubyベースの代替。net/httpより古くから開発が続いている。 RackのようなミドルウェアベースのHTTPクライアントを目指している。 JSON/XML自動解析機能を追加。
APIが独特。
"http://~".to_uri.post(...) Rails 2から入ったRESTクライアント。決定版になりきれなかった? Rails 3のリファクタリングを
リードしたwycats先生の次回作! Hiroshi Nakamura / @nahi / nahi@ruby-lang.org / https://github.com/nahi
Asakusa.rb / Sarion Systems Research Rails 1.x時代によく使われた。元はMongrelのテスト用途。 $repo/perf/bm.rb
・Linode (Xen VPS)
・at Fremont CA
measured 'Real' time → 日本へのアクセス Summary ・net/httpには派生と代替がたくさんある。
 APIが難しく、仕組みが簡単だから。

・net/httpの派生で、net/httpの機能を素直に派生できている
 ものはない。簡単すぎて拡張しにくい。

・既存のHTTPクライアントの実装機能には差がある。
 用途で選ぶ(企業内から?バッチ処理?REST連携?)

・APIにも差がある。凝ったことをすると統一感がなくなる。

・既存のものに性能差はほとんどない。ただしKeep-Aliveと
 gzip圧縮ダウンロードには気を使う価値がある。

・性能最重視ならEventmachine。

・C拡張は使用に注意。 $repo/sample/sample_*.rb
$repo/feature/test_*.rb $repo/scripts/install_gem.rb http://j.mp/OdrkHTTPClient (This slide)
http://j.mp/RubyHTTPClients (Feature matrix)
http://j.mp/OdrkHTTPClientRepo (Sources repository)

Disclaimer: I'm the author of httpclient gem
Makimono Img: http://e-poket.com/illust/maki26.htm net/http open-uri httparty rest-client r_h_c rufus-verbs simplehttp curb patron typhoeus eventmachine excon httpclient faraday wrest net/http open-uri httparty rest-client r_h_c rufus-verbs simplehttp curb patron typhoeus eventmachine excon httpclient faraday wrest curb net/http open-uri httparty
(connection
problem?) rest-client r_h_c rufus-verbs simplehttp curb patron typhoeus eventmachine excon httpclient faraday wrest
See the full transcript