Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Erlang Web Erlang のウェブフレームワーク ダオ ゴック タン 2009/4/15
特徴 <ul><li>設定:多い(設定ファイル  +  ソースコードでの設定) </li></ul><ul><li>URL-controller マッピング が自由に設定できるし、正規表現により URL 成分をパラメータにすることもできる </...
Client Yaws out/1 Controller shop:list/0 % URL, Method, Cookie などは dictionary か get % Status, Header などは dictionary に put ...
(3) dispatch.conf <ul><li>URL-controller マッピング を設定 </li></ul><ul><li>正規表現により URL 成分をパラメータにすることもできる </li></ul><ul><li>HTTP ...
 
(6) e_db モジュル <ul><li>DB wrapper </li></ul><ul><li>Mnesia と CouchDB しかサポートしていない </li></ul><ul><li>write(Domain, Element) <...
(9) wpart <ul><li>データをテンプレートによって XML に変換 </li></ul>wpart (View Helper) wpart_shop:handle_call/1 handle_call(_XML) -> %  di...
参考 <ul><li>Presentation at the 14th International Erlang/OTP User Conference 2008, Stockholm, Sweden: http://www.erlang-co...
Upcoming SlideShare
Loading in …5
×

Erlang Web

2,167 views

Published on

Introduction about "Erlang Web" framework

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Erlang Web

  1. 1. Erlang Web Erlang のウェブフレームワーク ダオ ゴック タン 2009/4/15
  2. 2. 特徴 <ul><li>設定:多い(設定ファイル + ソースコードでの設定) </li></ul><ul><li>URL-controller マッピング が自由に設定できるし、正規表現により URL 成分をパラメータにすることもできる </li></ul><ul><li>データフロー : リクエストからリスポンスまでの関数呼び出し流れが設定で きる ( Rails の before_filter と after_filter と同じ) </li></ul><ul><li>DB wrapper があるが Mnesia と CouchDB しかサポートしていない </li></ul><ul><li>テンプレート:作りにくい、使いにくい、 XML </li></ul><ul><li>I18n がある </li></ul><ul><li>リクエスト処理流れが Nitrogen のと大体同じ </li></ul><ul><li>Nitrogen より完成度(機能、資料)が少し高い </li></ul>
  3. 3. Client Yaws out/1 Controller shop:list/0 % URL, Method, Cookie などは dictionary か get % Status, Header などは dictionary に put Items = shop:all(), wpart:fset(“items”, Items), % dictionary に put {template, &quot;list.html”}. Model shop:all/0 DB テンプレート (View) list.html <wpart:list select=&quot;map&quot; list=&quot;items&quot; as=&quot;item&quot;> <li><wpart:shop /></li> </wpart:list> <ul><li>(3) </li></ul><ul><li>dispatch.conf を参照し </li></ul><ul><li>ステーティックファイルを返すか </li></ul><ul><li>テンプレートを直接にまたは </li></ul><ul><li>controller を呼ぶ </li></ul><ul><li>URL, Method, Cookie などをプロセスの dictionary に put </li></ul>(1) (HTTP) http://server/app/shop/list (2) 1 つのプロセスを spawn URL, Method, Cookie などを Arg にセット out(Arg) を呼び出す wpart (View Helper) wpart_shop:handle_call/1 Item = wpart:fget(“item”), % dictionary から get … % Item を XML に変換 (5) (6) (7) list.html dictionary (8) (10) XML (12) dictionary から get し、リスポンスを作り Yaws に 返す [ {html, Html} {status, Status} … ] (13) (HTTP) HTML Status Cookie … dispatch.conf (4c) shop:list/0 を呼び出す (9) テンプレート ステーティック ファイル (4a) (4b) テンプレート エンジン (11) HTML
  4. 4. (3) dispatch.conf <ul><li>URL-controller マッピング を設定 </li></ul><ul><li>正規表現により URL 成分をパラメータにすることもできる </li></ul><ul><li>HTTP メソッドの認識はできていない (Rails の routes.rb のような RESTful マッピング 機能はまだない ) </li></ul>
  5. 6. (6) e_db モジュル <ul><li>DB wrapper </li></ul><ul><li>Mnesia と CouchDB しかサポートしていない </li></ul><ul><li>write(Domain, Element) </li></ul><ul><li>read(Domain) </li></ul><ul><li>read(Domain, Id) </li></ul><ul><li>update(Domain, Element) </li></ul><ul><li>size(Domain) </li></ul><ul><li>delete(Domain, Element) </li></ul><ul><li>get_next_id(Domain) </li></ul>
  6. 7. (9) wpart <ul><li>データをテンプレートによって XML に変換 </li></ul>wpart (View Helper) wpart_shop:handle_call/1 handle_call(_XML) -> % dictionary から get Item = wpart:fget(&quot;item&quot;), % Item を XML に変換 #xmlText{value = create_item_desc(Item), type = cdata}. create_item_desc(Item) -> Skeleton = wpart_gen:tpl_get(shop, item_short), wpart_gen:build_html(Skeleton, [ Item#item.title, integer_to_list(Item#item.quantity), integer_to_list(Item#item.prize)]). <h3><% slot %></h3> <i>Quantity: <% slot %></i><br/> <b>Prize: <% slot %></b>
  7. 8. 参考 <ul><li>Presentation at the 14th International Erlang/OTP User Conference 2008, Stockholm, Sweden: http://www.erlang-consulting.com/euc2008/euc08_erlang_web_slides.pdf </li></ul><ul><li>Presentation at the 2008 Erlang eXchange, London UK: http://www.erlang-web.org/doc/ErlangWeb.pdf </li></ul><ul><li>マニュアル : http://www.erlang-web.org/doc/tutorial.pdf </li></ul>

×