ChicagoBoss,Nitrogen ,Zotontic,BeepBeep,ErlyWeb,Erlang Boss。
轉自:http://bbs.chinaunix.net/thread-3764065-1-1.html
這里是我翻譯的一篇國外的文章,原文地址:http://lenary.co.uk/erlang/2011/08/erlang-web-libraries/
我目前從事Erlang相關的開發工作,雖然Erlang算是一門小眾語言,但是我很喜歡,就像一直喜歡perl一樣。這里yy一下,Erlang和 Perl的年齡差不多,后者曾經在天朝很火,接觸過linux的人幾乎都聽過,前者最近幾年才開始出現在天朝的一些行業里,目前在特定的游戲領域很熱門。
這個帖子主要是為了介紹Erlang相關的一些東西,讓更多的人知道Erlang這門函數式開發語言。因為本人最開始是養豬的,英語不好,所以翻譯的也不好,推薦直接看原文。
開始----》
Erlang的Web庫和框架
09 Aug 2011
我的一個朋友最近忙着寫一個內部的終端API,為這事兒,要我幫忙收集和比較一些Erlang的web庫和框架,搞定之后,他建議我把文檔的大綱發布到網上,和大家一起分享,所以,就有了這篇文章。
在此,感謝對該文提出指正和更新完善的所有人。
Yaws
Yaws是一個高效處理動態頁面的web服務器,因為Yaw由應用模塊【appmods(application modules)】構建,所以其中的appmods可以被我們構造的API替代。
Yaws的文檔做的不錯,重要的是能夠植入到監督樹的層次結構中(supervision,Erlang/OTP 設計原則里面的概念,簡單來說,為了系統的穩定可靠,一個進程應當由另外的進程來監督和管理,這些監督進程構成了監督樹)
Mochiweb
它應該算是在erlang的web相關的開發里面使用最多的,是個有自己獨特之處的web服務器。
文檔做的一般,有個”不好“(相對作者來說)的地方就是,mochiweb的很多模塊使用參數化模塊的語法特性(注:也叫抽象模塊,erlang的一種編 程實踐或者叫做語法規則,官方不再推薦使用,我也是在mochiweb里面第一次遇到這種寫法),這樣做的一個好處,使得mochiweb更容易嵌入到其 他的應用中。
Misultin
支持websockets,結構上與Mochiweb相似
可以去看Misultin的 wiki,有很多文檔和非常棒的例子。
Cowboy
與mochiweb十分相似,相比之下:源碼里面沒有使用參數化模塊的語法特性(看來作者對parameterized modules很頭疼);使用單獨的一個模塊來處理所有的請求。
我認為Cowboy是唯一一個完整的二進制HTTP服務器,這樣做的原因是為了提高性能和降低內存使用。
在這個項目的github上可以找到很多例子。
httpd
Erlang自帶的,是inets應用的一部分。能滿足我們大多數人的需要,重要的是,它是Erlang里唯一一個能夠與WSGI和Rack-like這類中間件一起工作的庫。
不幸的是,httpd只使用一個固定的回調函數,而且文檔寫的也不怎么滴。如果你需要用到httpd,而且你在寫httpd的模塊時又遇到問題,那么你可 以到Garrett Smith開發的modlib的github上尋找幫助,modlib包裝了httpd,並幫我們理清了各種各樣的API,讓我們知道它們究竟是干什么 的。
SimpleBridge
http庫的適配器,SimpleBridge的目的就是“建立一個簡單、標准的 Erlang HTTP 服務的接口”,這意味着你在實際操作時,如果用了SimpleBridge來包裝你的web框架,你在需要做調整的時候會方便一點。
我覺得目前來說,SimpleBridge還不是一個足夠好的http庫適配器(鏈接器)。它通過管道(pipeline)來支持Mochiweb,Inets httpd ,Yaws,Misultin。
webmachine
基於mochiweb建立,讓我們遠離的底層那些語法,有自己的“工具箱”。
(注:下面這段話不好翻譯,自己理解):
For Basic RPC over HTTP applications, this isn't what you'd use, however, it makes lots of sense if the application is very resource-orientated. As it's come out of Basho, I'd expect it to be well written and documented.
Nitrogen
Nitrogen目的是建立一套功能性的用戶接口,我對它處理服務端和客戶端之間事件的來回發送的方式很感興趣,介紹文檔在 Introduction to Nitrogen(注:寫的很給力)
每個頁面介紹一個模塊,模版是可選的。使用Nitrogen很容易構建一個API。
Zotonic
Zotonic是一個成熟的CMS,支持websockets和Comet。方便擴展,它站點上的文檔也很多。
我能告訴你的是:Zotonic的底層雖然是由webmachine和nitrogen構建的,但是我們也可以定義自己的內部API,完全支持OAuth(注:開放式授權)
Chicago Boss
這個框架更接近Ruby的Rails。它的模塊和大量內置的部署好的行為(hehaviour)助你的服務運行的更快。也許寫自己的API有點困難,當然這取決於你要完成生么樣的任務。
個人注:ibrowse。