簡體   English   中英

使用OTP / Erlang作為Web應用程序基於組件的體系結構的一部分

[英]Using OTP/Erlang as a part of the component-based architecture of a web application

我有一個做一些業務邏輯的Erlang / OTP應用程序。 它是用Erlang編寫的,主要是為了容錯,因為我可以輕松地重新啟動系統崩潰的組件之一(最重要的要求是正常運行時間)。 它的每個組件都執行某種特定的“並行”計算。

作為一個工作周期的結果,該應用程序生成了一個值列表。 讓我們將此Erlang / OTP應用程序稱為“后端”。

此Erlang / OTP應用程序還將使用PostgreSQL服務器將結果存儲在持久性存儲中,並存儲其計算所需的其他元信息(尚未實現)。

接下來,我需要在此Erlang / OTP應用程序中添加一個前端-一個簡單的基於Web的解決方案,可以為Web用戶服務:接受他/她的計算請求,請后端進行計算,然后向用戶提供后端的結果。

沒有可擴展性要求,我認為每天的最大用戶數量不能超過1000。

因此,我現在的當前任務是為我的后端Erlang / OTP應用程序實現一個通用前端(這通常意味着我有一個典型的用例:訪問該站點,注冊,登錄,使用該應用程序並獲得結果)美觀的網頁,退出)。

一方面,我知道代碼重用可以節省很多時間:例如,使用Ruby on Rails,我可以免費獲得用戶身份驗證,密碼存儲,ajax接口和許多其他功能。

另一方面,我對設計包含Erlang / OTP + PostgreSQL數據庫服務器后端和Web框架(RoR,Django等)作為前端的應用程序一無所知。

我想到了很多問題:Erlang / OTP和Web框架是否應該使用相同的PostgreSQL數據庫共享結果? 將計算請求從網絡框架發送到Erlang / OTP應用程序並將其取回的最佳方法是什么? 如何監督PostgreSQL服務器-OTP的容錯能力未涵蓋該服務器?

一般來說,我有幾個異構軟件組件,我想從它們中構建一個工作系統(“主要”組件是Erlang / OTP應用程序)。


我應該從哪里開始這項任務? 您能給我任何建議或提示來閱讀哪些資源嗎?

PS我試圖閱讀和遵循的聯系,但並沒有多少了解。

UPD:我知道Chicago Boss和其他Erlang網絡框架確實存在,但是我懷疑它們中的任何一個都具有如此成熟的環境,活躍的社區以及不同插件和庫(例如Ruby on Rails,Django或任何PHP)的巨大可變性基於MVC的框架。 對?

UPD2:也許我必須更深入地闡述:我還需要前端盡可能地易於維護。 在Erlang中進行操作意味着我可能會遇到尋找合適的開發人員進行維護的問題。 在RoR,Django等中執行此操作意味着我可以輕松地找到工作人員來維護前端並進行擴展。

首先,這里有一個Erlang PostGreySQL客戶端: https : //github.com/wg/epgsql 另一件事是,您可能想檢查ZOTONIC 它是用Erlang編寫的CMS,但它也是一個Web框架。 它的功能之一是它很好地集成了PostGreySQL數據庫,因此Zotoniuc后面的所有Erlang應用程序都將從中受益。 開發MVC或事件驅動的Web應用程序時,它非常好。

另外,您可能想查看Nitrogen Web FrameworkChicago Boss ,它們也是Erlang Web應用程序的Web框架。 我個人使用Nitrogen,Yaws和Mnesia作為整套工具開發了Erlang Web應用程序。 一個非常不錯的好處是,您可以在此技術堆棧后面擁有許多Erlang應用程序。 Yaws Web Server憑借其Appmod動態內容服務能力RESTFUL,我可以向您保證),以如此驚人的簡單性和美感為我們的JavaScript驅動的前端Web應用程序提供了強大功能,並提供了多個Erlang應用程序提供的服務。

如果您想擁有Ajaxy / HTML5之類的快速Web Front End,那就快點! 並掌握Nitrogen Web框架 由於您已經是Erlang程序員,因此對您來說是如此之快。 使用模板,您可以編寫HTML4.X / HTML5模板,或使用網頁Maker / Studio軟件為您創建模板。 然后,稍后,您將顯示Nitrogen的輸入位置,並使用由您的Erlang代碼產生的動態生成的JQuery代碼將您的Erlang后端綁定到這些漂亮的頁面。

您會發現文檔非常簡單。 氮氣只是Erlang記錄的集合,每個記錄代表一個HTML標簽。 其他記錄用於定義效果和事件,這些效果和事件將回發到您的Erlang應用程序中。 在氮氣中開發漂亮的Web界面是如此之快。 實際上,通過動態生成的JQuery代碼,您可以使用EXT JSMooToolsprototype js之類的其他JavaScript庫將自己的JavaScript編寫到Template中,以配合整個功能。 在模板中,您將指出Nitrogen應該在哪里呈現動態生成的HTML元素以及將“ AJaxically”作用於這些元素的JQuery。 在這種情況下,模板僅表示HTML頁面。


記住要成為其郵件列表的成員,以尋求更多幫助,並繼續在StackOverflow上提問。 歡迎來到Erlang Web開發的世界。 您可能對一些鏈接感興趣(
IEEE關於Erlang網站開發的論文
Erlang Web框架
erlydtl-Erlang Django之類的模板實現
ErlyWeb框架
)成功!



編輯
現在,您所說的實際上是對的。 尋找開發人員進行維護將是一項任務。 但是,正如我前面提到的, Zotonic是成熟的(Web) CMS ,就像Joomla或Word Press等一樣。有了它,您實際上可以管理/維護站點/應用程序。

但是,您也可以使用Django或Ruby on Rails開發Web前端,但可以使用JSON格式的數據從Web前端將安全服務創建到Mochiweb 然后,使用mochiweb隨附的Mochijson2.erl ,解析JSON並將其轉換為Erlang后端中的請求或方法和參數。 這將在兩個方向上完成,即您向Erlang應用程序發出請求,獲取返回的結果並將其呈現為JSON數據。

Mochiweb是功能強大的工具,可以使用Service / RESTFul模型將任何Erlang后端與前端的任何Web技術連接起來。 它簡單輕巧。 它的快速及其所需要的就是您將其指向處理POST,GET,PUT等HTTP請求的方法,並且它將等待結果發送回去。 Mochiweb已用於很多Erlang系統中,例如Couch DB (最先進的NoSQL DBMS之一,改變了我們對Web和SOA系統的理解方式)以及所有其他系統,例如Membase Single ServerBig Couch / Cloudant等。看到有人在這里然后在這里最后在這里使mochiweb發揮作用。

Django,Twisted,PHP或Ruby on Rails框架發出JSON請求,並期望來自Mochiweb支持的Erlang后端的JSON響應。 Misultin是Erlang Web后端的另一個很棒的RESTful接口,它甚至支持Web套接字,有時被認為是最快/響應最快的Erlang HTTP庫:)

根據我的經驗,我曾經使用過PHP大師,JavaScript大師等,但是每當將Web服務器作為帶有JSON以及來自兩個方向的響應的面向服務模型的 Yaws時 ,我們發現開發成本都會降低。 在這種情況下,我們不會失去Erlang的可用性和容錯能力,而且,即使使用了所有JavaScript和/都支持的JSONP ,即使它們隱藏在域的不同子網中,您也可以向盡可能多的分布式Erlang服務器發出許多請求。或Front-web框架。 我強烈建議您將Mochiweb或Misultin放在erlang后端的前面,並選擇使用JSON格式(甚至XML,您可以使用erlsom進行解析,請在此處下載)進行請求的Web框架。 希望您能得到建議。 成功!!!

您也可以使用任何可用的Web框架在erlang中實現您的前端。 使用erlang RPC在單獨的erlang節點中運行前端和后端,以在它們之間進行通信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM