如何在OCaml中编写Web服务器(服务)?

Jac*_*ale 4 ocaml

我希望在OCaml中编写一个Web服务服务器(使用http协议).

举个简单的例子,我想写一个http server.用户可以访问它并提供参数http://myservice.com?i=1&j=2.然后我的服务器获取请求和参数,calculate i+j并返回结果.


当然,我的服务对于计算部分会更复杂.而不是这个简单的计算例子,我真正需要做的是

  1. 访问数据库(MongoDB)以获取一些数据
  2. 访问另一个第三方Web服务以获取更多数据
  3. 计算所有数据以获得结果并返回给用户.

所以,我还需要考虑parallelism/ multi-threading,虽然我想首先从简单的案例开始.


我的问题是:

  • 我应该使用哪个库来首先设置这样的http server?我已经调查了Ocamlnet 3并认为它可能是一个很好的候选人,但它缺乏良好的教程,我仍然不知道如何使用nethttpdnetplex等等.
  • 我应该如何设计我的Web应用程序的体系结构?我知道OCaml不擅长parallelism,那我怎么能让每个服务实例都不阻塞呢?

rgr*_*erg 6

Matias Giovannini有一个很好的教程如何在ocamlnet中做到这一点:

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

就个人而言,我无法忍受ocamlnet,所以我会考虑cohttp.Ocamlnet更大,更成熟,但有更多的文档.