2013-06-12 123 views
4

我希望在OCaml中編寫一個Web服務服務器(使用http協議)。如何在OCaml中編寫Web服務器(服務)?

舉一個簡單的例子,我想寫一個http server。用戶可以訪問它並提供參數,如http://myservice.com?i=1&j=2。然後,我的服務器獲取請求和參數並返回結果calculate i+j


當然,我的服務對於計算部分來說會更加複雜。相反,這種計算簡單的例子,我真正需要做的是

  1. 訪問數據庫(MongoDB中)得到一些數據
  2. 訪問其他第三方網絡服務來獲取更多的數據
  3. 計算所有數據來獲得結果並返回給用戶。

所以,我也需要考慮parallelism/multi-threading,雖然我想先從簡單的案例開始。


我的問題是:

  • 我應該使用哪個庫先設置這樣的http server?我已經調查Ocamlnet 3,並認爲這可能是一個不錯的選擇,但它缺乏好的教程,我仍然不知道如何使用nethttpdnetplex
  • 我應該如何設計的架構我Web應用程序?我知道OCaml不擅長parallelism,那麼我怎樣才能讓每個服務實例不被阻塞?

回答

6

馬蒂亞斯焦萬尼尼有一個很好的教程如何在ocamlnet做到這一點:

http://alaska-kamtchatka.blogspot.ca/2012/10/how-to-write-simple-web-application.html

個人而言,我不能忍受ocamlnet所以我想看看cohttp。 Ocamlnet更大,更成熟,但是有更多的文檔。

+0

哦謝謝。你知道cohttp有什麼好的教程嗎? –

+0

ocamlnet對我的目的太複雜了tbh,你是對的。但使用cohttp,我應該從哪裏開始? –

+0

Cohttp更新,所以文檔更少。你最好的選擇是看例子。如果你不喜歡閱讀cohttp的來源,你應該堅持ocamlnet。請記住,cohttp還沒有達到1.0。同樣對於這樣的一般建議,您應該查看freenode上的#ocaml頻道,因爲stackoverflow並非真正用於這些常規建議問題。其他兩個選項是reddit.com/r/ocaml和郵件列表。 – rgrinberg