Dot-Net

如何使用 Erlang 與其他網路應用程序互動?

  • April 14, 2020

我正在學習 erlang,我對 mnesia db 非常著迷。我想使用 erlang 作為後端在 C#/F# 中建構一些真實世界的應用程序。

我正在尋找一個很好的解決方案來與外界的 erlang 節點進行通信。

到目前為止我發現了什麼:

(A) OTP.net,一個開源的 .net 庫,實現“本機”erlang 通信協議

這裡的問題:

  • 庫不是很成熟
  • 我不喜歡從 Java 移植的對像模型(太多幾乎完全相同的 BCL 類副本)
  • 我不喜歡用於連接的執行緒模型。
  • 需要許多開放的 TCP 埠
  • 缺乏安全感

(B) 在 erlang 中使用埠/套接字並實現自定義協議。

這裡的問題:

  • 我沒有任何經驗
  • 難以為未來版本維護/擴展

您對此主題有什麼建議和經驗嗎?

我應該使用 OTP.net 庫來滿足我的需求還是嘗試從頭開始實現一個新協議?

JSON 或 REST 解決方案呢?是否有任何 erlang 庫可以解決問題?

埠/套接字解決方案是一個好主意,並不像看起來那麼難。Google 的協議緩衝區正是您所需要的。它非常易於使用、高效且可維護。它具有 C#、erlang、java、python 等的實現(請參閱OtherLanguages開發人員指南

您可以使用協議緩衝區來定義請求和響應協議結構。然後使用它在 erlang 和任何其他支持的語言之間進行通信。本教程將解釋這一切。之後,您需要做的就是通過埠發送響應。

這種方法的優點是:

  1. 您可以在未來輕鬆擴展和更改協議
  2. 它比 REST 方法更有效
  3. 它目前被 Google 用於其幾乎所有的內部 RPC 協議和文件格式

引用自:https://stackoverflow.com/questions/807355