Dot-Net
如何使用 Erlang 與其他網路應用程序互動?
我正在學習 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 和任何其他支持的語言之間進行通信。本教程將解釋這一切。之後,您需要做的就是通過埠發送響應。
這種方法的優點是:
- 您可以在未來輕鬆擴展和更改協議
- 它比 REST 方法更有效
- 它目前被 Google 用於其幾乎所有的內部 RPC 協議和文件格式