Erlang vs The Real/Outside世界,如何沟通?

Luc*_*tti 13 .net rest erlang json protocols

我正在学习二郎,我对mnesia db非常着迷.我想使用erlang作为后端在C#/ F#中构建一些真实世界的应用程序.

我正在寻找一个很好的解决方案来与外界的erlang节点进行通信.

到目前为止我发现了什么:

(A)OTP.net,一个实现"本地"erlang通信协议的开源.net库

问题在这里:

  • 图书馆不是很成熟
  • 我不喜欢从Java移植的对象模型(太多几乎完全相同的BCL类复制品)
  • 我不喜欢用于连接的线程模型.
  • 需要许多开放的TCP端口
  • 缺乏安全感

(B)在erlang中使用端口/套接字并实现自定义协议.

问题在这里:

  • 我没有任何经验
  • 未来版本难以维护/扩展

你对这个话题有什么建议和经验吗?

我应该在OTP.net库上工作以满足我的需求还是尝试从头开始实施新协议?

那么JSON或REST解决方案呢?是否有任何erlang库可以解决这个问题?

Nad*_*mli 16

端口/套接字解决方案是一个好主意,并不像看起来那么难.谷歌的协议缓冲正是您所需要的.它非常易于使用,高效且易于维护.它有C#,erlang,java,python等实现(参见OtherLanguages开发者指南)

您可以使用协议缓冲区来定义请求和响应协议结构.然后使用它在erlang和任何其他支持的语言之间进行通信.本教程将解释一切.之后,您需要做的就是通过端口发送响应.

这种方法的优点是:

  1. 您可以在将来轻松扩展和更改协议
  2. 它比REST方法更有效
  3. 它目前被Google用于几乎所有内部​​RPC协议和文件格式

  • 老实说,要正确地解耦所有东西,你应该使用RabbitMQ在混合中抛出一些AMQP.然后你不依赖于特定语言的任何东西. (3认同)