4

对于一个大学项目,我正在考虑在 Erlang 中实现业务层,然后使用 REST 通过多个前端访问它。我想利用分布式应用程序等 OTP 功能。

我的问题是如何将 gen_server 调用/强制转换暴露给其他应用程序?显然,我可以通过特定于语言的“桥”(如 OTP.net 或 JInterface)进行 RPC 调用,但我想要一种一致的方式来访问它,如 REST。

4

6 回答 6

10

正如已经提到的,Yaws 或 Mochiweb 是一个很好的方法,但是如果您想要一种简单的方法来快速正确地完成 RESTful API,那么请使用Webmachine。它是 Mochiweb 之上的一个层,它基于 Alan Dean 令人惊叹的HTTP 流程图实现正确的 HTTP 行为,并使正确完成 REST 变得容易。

我现在使用它来公开一个 REST API 以及处理一个 COMET 应用程序,这很容易做到,即使对于像我这样的 Erlang 新手也是如此。

于 2009-01-09T04:03:18.217 回答
3

我为我的工作做了类似的事情,发现最好使用 REST 来公开业务层,因为即使是 SoftwareAG 的 Natural 等传统语言也能够访问它。我在 Erlang 中找到的最佳机制是使用Mochiweb

您可以从位于 Erlang In Practice Screencast的截屏视频中找到有关使用它的更多信息。第 6 集特别有用,但都非常出色。

指导您完成安装的资源是如何快速设置加载了 Erlang、Mochiweb 和 Nginx 的 Ubuntu 8.04以及将本机 Erlang 接口迁移到 RESTful Mochiweb(带有一点 TDD)如果您没有找到截屏视频,则提供了一个良好的开始随心所欲。

于 2009-01-09T02:26:46.523 回答
2

HTTP 流程图链接已失效。Alan Dean 和 Justin Sheehy 合作创建的原始版本和更新版本也托管在 Webmachine 项目中:链接到最新版本的 HTTP Diagramm

于 2010-06-11T09:52:29.483 回答
0

如果可能的话,有一种有价值的方法来设计 gen_server 调用/转换以 REST 风格。您可以将消息用作

{get, Resource}
{set, Resource, Value} % aka PUT
{delete, Resource}
{add, Resource, Value} % aka POST (possible another names are append, modify or similar)

然后它的映射很容易。您可以进行一些转换 URI->RESOURCE 或使用身份。对于您的大多数应用程序,这应该是麦芽汁方法,特殊情况您应该特别处理。你可以认为会有很大的余量,你不能使用这种方法,但这应该主要是过早的优化。

于 2009-01-08T16:47:41.107 回答
0

您真的是指 RESTful 接口或 RPC over HTTP 吗?在现有层之上构建一个 RESTful 接口不仅仅是通过 HTTP 公开现有方法。

我建议使用 mochiweb 或 yaws 来实现(通用)rpc 层。

于 2009-07-09T11:02:05.890 回答
0

只是一个更新,Webmachine 已移至 bitbucket:Webmachine 的新链接

于 2010-06-11T09:16:18.753 回答