Erlang Web

2,049 views
1,971 views

Published on

Introduction about "Erlang Web" framework

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,049
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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>

×