2011-07-20 49 views
2

我是Erlang的新手,但我想從一個感覺適用於該技術的應用程序開始,因爲我有併發需求。關於HTTP服務的Erlang設計建議

這幅圖強調了我想要做的事。

http://imagebin.org/163917

當消息從隊列拉出並路由到先前已經設置爲使一些輸入這樣的形式,一個Django應用程序的用戶的結果的工作進程。該設置需要一些額外的數據庫(預先存在的數據庫,所以我不想使用此位ETS/DETS)查找,然後與消息路由器對話並創建一個相關的過程。

我的問題隨之而來,因爲我可能想在未來向我的Django應用程序詢問所有需要設置並首先執行任務的工作人員,在此溝通的最佳方式是什麼。我喜歡HTTP/json,並且已經閱讀了我在Mochiweb和MochiJson上找不到的東西,我認爲這會做我想做的。我打算有一個OTP主管和應用程序,那麼有一個單獨的mochiweb進程然後將erlang消息傳遞給路由器是明智的嗎?

由於所有的教程都談論瞭如何使用腳本創建目錄結構,這似乎將mochiweb中心化爲設計 - 這不是我想要的,我想要在這裏,我想要與mochiweb一起努力一個輕便的mochiweb過程,偶爾做工。

請把此分開,所有的評論歡迎。

乾杯

戴夫

+0

所有mochiweb教程都以標準腳本開始創建一個框架應用程序,因爲它可以幫助您從頭開始創建少數幾個文件。教導人們如何在每個教程中做到這一點將是一件非常麻煩的事情。該腳本的輸出與您在不使用mochiweb的應用程序中生成的內容非常相似,它只是爲$ {app} _sup.erl添加了一些內容,併爲您創建了一個$ {app} _web.erl一些示例代碼。 –

回答

2

Mochiweb是這樣真棒,但我認爲你真正想要的是webmachine。完整的文檔可用herehere。簡而言之,webmachine是用於製作REST應用程序的工具包,我認爲它就是您想要的。它在幕後使用mochiweb,但隱藏了所有複雜(和未記錄的)細節。當您創建webmachine項目時,您將獲得完整的OTP應用程序和默認資源。從那裏你會做類似如下:

  1. 添加自己的資源(或修改+重命名默認的)。
  2. 修改調度程序,使您的資源和路徑對您的應用程序有意義。
  3. 添加代碼來創建和監視您的工作進程 - 可能是gen_server和主管。請參閱this和相關文章。請注意,當您創建項目時,您需要在提供給您的主管理員下啓動。
  4. 修改資源以與gen_server進行通信。

我並沒有完全按照你所問的所有問題 - 回答評論中的任何後續問題可能會更容易。